Proof of presence,
on every vote.

A Realms voter-weight plugin that gives weight only to wallets with a recent Entros verification.

Program
Devnet prototype
Checks
Trust Score and recency
Voter weight
1 per eligible Anchor
Works with
spl-governance v3.x

Nobody proves they showed up.

Bots vote with delegated authority. Scripts auto-vote off whale signals. Staked wallets vote unread.

A token balance cannot say who stands behind the vote. Token weight ≠ community will.

VoterStandardWith Entros
Bot
×1
No weight
Script
×1
No weight
Human
×1
×1

The gap is on the record.

Three Solana protocols across three years. Each ballot read the token balance. None read the human.

2022

Mango Markets

The exploiter who drained $47M voted through Mango's own governance to keep most of the take. Their balance cleared quorum.

2023

Synthetify

Ten self-funded proposals moved roughly $230K out of the Synthetify treasury, each clearing the threshold on bought-in tokens.

2025

Jupiter Jupuary

The Jupiter team filtered 750,000+ wallets out of Jupuary after the fact. Every filter ran downstream of the airdrop.

Full case study

Verified human. Verified vote.

The plugin reads the voter's Trust Score and verification recency from their Anchor. The on-chain prototype applies those checks when its update instruction runs.

A forthcoming Realms client will insert that instruction before governed actions. Population uniqueness and Governance UI wiring remain release gates.

Human sends voter_weight = 1 to DAO. Verified. Current. On-chain.
  • Verified
  • Current
  • On-chain

Three steps to verified governance.

01

Configure

DAO admin sets a minimum Trust Score and a maximum verification age. One transaction creates the registrar.

02

Verify

Each voter completes a behavioral verification through Entros. Trust Score grows with each re-verification.

03

Vote

The planned Realms client inserts the voter-weight update before a governed action. Eligible Anchors receive one unit of weight.

Layer on top. Don't replace.

The current Registrar has no predecessor field, and the update instruction accepts no input voter-weight record. Future work will define safe composition.

Entros + Token Voter

Planned composition with token-weighted voting.

Entros + Quadratic

Planned composition with quadratic voting.

Entros + NFT Voter

Planned composition with NFT-gated voting.

Two parameters. Full control.

The DAO admin sets two values when creating the registrar. The realm authority can update both anytime.

min_trust_scoreu16
Minimum Trust Score for voting weight. 0 means any verified wallet qualifies. 100 requires one re-verification. Higher values ask for longer behavioral history.
max_verification_agei64
Maximum seconds since last verification. 2,592,000 = 30 days. 604,800 = 7 days. An expired voter re-verifies before voting.
// DAO admin configures the Entros voter weight plugin
await program.methods
  .createRegistrar(
    100,      // min_trust_score (at least one re-verification)
    2592000,  // max_verification_age (30 days in seconds)
  )
  .accounts({
    realm: realmPubkey,
    governanceProgramId: govProgramId,
    governingTokenMint: mintPubkey,
    realmAuthority: admin.publicKey,
    payer: admin.publicKey,
  })
  .signers([admin])
  .rpc();

On-chain foundation deployed.

The voter-weight program runs on Solana devnet. A JavaScript client, Governance UI registration, and end-to-end Realms tests remain planned.

99nwXzcugse3x8kxE9v6mxZiq8T9gHDoznaaG6qcw534

View source on GitHub

Verified humans.
Verified votes.