Securitythreat model · audit underway · bounty live on mainnet

Assume the adversaryis alreadyreading.

Privacy that depends on nobody looking is not privacy. Every layer below is designed for an adversary who sees every block, runs their own nodes and has read our source. This page says what protects each layer, what is audited, and what is still pending.

External auditunderway · not complete
Bug bountylive · up to 50,000 SNCT
Disclosure48 h ack · 90-day window
Trusted setupnone per circuit · universal SRS
01Attack surface · outside in
NETWORK & CONSENSUS SHIELDEDPOOL CONTRACT NOIR CIRCUIT & VERIFIER KEYS & MEMOS YOURNOTE ADVERSARY
02Threat model · stated, not implied

We assume

  • The adversary reads every block, memo and transaction forever.
  • The adversary runs validators and full nodes.
  • The adversary can front-run and reorder public transactions.
  • The adversary knows the circuit, the contract and the wallet source.

We do not assume

  • A compromised wallet seed — if your seed leaks, your shielded keys leak with it.
  • Metadata privacy at the network layer: IP addresses are not hidden by the protocol.
  • A broken hash function or discrete-log break on BN254.
  • Privacy against yourself: your own viewing key decrypts your own history.
Why the second column exists. A privacy system that hides its own limits is selling something. Sanect hides sender, receiver and amount inside the pool; it does not hide the fact that a shielded transaction happened, nor who paid the gas to submit it.
03Third-party review

Audit status: underway, not complete.

An external engagement is in progress across three scopes. Firms will be named publicly and reports published in full, unredacted. Until then, treat the shielded pool as pre-audit software and size your exposure accordingly.

scopescopingreviewfixespublic report
Shielded pool contractUltraHonk verifier, Poseidon-2 hasher, commitment tree, nullifier set, deposit and withdraw pathssmart contract
ZK circuitNoir 2-in/2-out circuit — spend proof correctness, commitment scheme, Merkle path verificationcryptography
Consensus & precompilesCometBFT parameters, slashing conditions, Cosmos → EVM precompile bridgeconsensus
donein progresspending
04Bug bounty · live on mainnet

Find a bug. Get paid in SNCT.

!Theft of funds from the shielded pool
!Spending a note twice (nullifier bypass)
!Forging a proof the verifier accepts
!Full validator node compromise
!Deanonymising a shielded sender or receiver
!Recovering a viewing key without the wallet signature
!Decrypting a memo without its key
!Breaking value conservation off-chain
·Consensus manipulation short of a halt
·Bypassing slashing conditions
·Precompile edge cases with state impact
·Bridge message replay
·Denial-of-service vectors
·Explorer or dApp bugs with security impact
·Errors in the published cryptographic specs
·Misleading wallet prompts
Responsible disclosure required. Public disclosure before a patch voids the reward. Severity is assessed on impact to funds and privacy, not on how clever the bug is.
05What happens after you report
T+0Report

Email [email protected] with reproduction steps, impact and any proof of concept. Encrypt severe reports.

T+48hAcknowledged

We confirm receipt, assign a severity and share the fix timeline and reward process.

T+90dDisclosure window

We ask for ninety days from acknowledgement before publication. If we cannot fix in time we say so and coordinate.

FixedCredit & reward

Researchers are credited by handle or stay anonymous. Rewards are paid in SNCT on mainnet.

Break it before someone else does.