Entros_docs
Reference

Costs

Fees, compute units, and rent—the canonical numbers.

Two cost surfaces matter: the user pays a small fee per verification, and each on-chain operation consumes compute units against Solana's block budget.

Protocol fee

A single user transaction invokes one of the instructions below—not a sum across them. Per-action cost is 0.005 SOL.

OperationFeeConfigurableWhen
mint_anchor0.005 SOLverification_fee in ProtocolConfigFirst verification (one-time per wallet)
update_anchor0.005 SOLsameEach subsequent re-verification
reset_identity_state0.005 SOLsameRecovery path, gated behind a 7-day cooldown

The two-signer migrate_identity flow used for wallet migration charges through a separate migration_fee field on ProtocolConfig, set independently of the main verification fee.

The fee is charged to the user in wallet-connected mode—signed and paid in the same transaction that mints or updates the Anchor. The walletless capture path on entros.io/verify is a no-wallet preview of the capture experience and incurs no protocol fee; it does not write on-chain identity, attestations, or Trust Score.

The fee accumulates in the Treasury PDA owned by entros-registry. The protocol authority (currently the team, decentralizing post-audit) draws from the treasury for protocol operations.

Compute units

The dominant on-chain cost is the Groth16 proof verification, which runs as part of the verification transaction alongside the update_anchor (re-verification) or mint_anchor (first verification) PDA write. The SDK pre-bundles a ComputeBudgetProgram.setComputeUnitLimit(250_000) instruction so the batched transaction fits within Solana's compute budget.

OperationCeiling CU
verify_proof (standalone, Groth16 verification)~123,000
Full re-verification transaction (create_challenge + verify_proof + update_anchor)~167,000
Full first-verification transaction (create_challenge + verify_proof + mint_anchor)~240,000
Reading IdentityState (off-chain RPC)0
Cross-program PDA read of IdentityStateunder 1,000
Voter-weight plugin update_voter_weight_record~5,000

The above are upper bounds enforced by the regression suite—each ceiling is the worst-case measurement across ten runs of the on-chain test suite (entros-anchor + entros-verifier + entros-registry integration tests). The standalone verify_proof instruction at 123K fits comfortably within Solana's 200K default per-instruction budget. The batched first-verification path at 240K leaves ~10K headroom against the 250K request budget; the re-verification path at 167K leaves ~83K headroom. Selective migration of the hot-path instructions to Pinocchio post-mainnet is planned (see Programs reference) to restore additional headroom on the first-verification path.

Rent

Each new account on Solana requires rent-exempt funding. Numbers below are queried directly from devnet RPC against the canonical struct sizes declared in the program source.

AccountSizeRentRefundable
IdentityState583 bytes0.00494856 SOLNo (held while Anchor is active)
Mint (Token-2022 with NonTransferable + MintCloseAuthority + MetadataPointer + TokenMetadata)415 bytes0.00377928 SOLNo
Associated Token Account (Token-2022 with ImmutableOwner)174 bytes0.00210192 SOLNo
Challenge90 bytes0.001517 SOLYes, via close_challenge
VerificationResult182 bytes0.002158 SOLYes, via close_verification_result
Agent metadata entrygoverned by Solana Agent Registry~0.003 SOLIf marked mutable; immutable entries are permanent

Total user-side cost on first verification: protocol fee (0.005 SOL) plus rent for IdentityState + Mint + ATA (~0.01083 SOL one-time) ≈ 0.01583 SOL total. Subsequent re-verifications pay the 0.005 SOL protocol fee plus a small refundable rent on the per-attempt VerificationResult account; the persistent accounts are already funded, and Challenge is closed for rent recovery in the same transaction.

Economic notes

The fee is set deliberately small per individual verification and high enough to create real cumulative cost for an attacker maintaining many Anchors. The verification_fee field on ProtocolConfig is updateable by the protocol authority via update_protocol_config and may evolve as the protocol decentralizes or as SOL economics shift.

Where to look next

On this page