mainnet live · chain 7628privacy layer 1 · EVM-compatible
The EVM,with a shielded state.
Sanect is a Layer 1 that runs unmodified Solidity at 400 ms block times and adds a native zero-knowledge shielded pool. Same wallets, same tooling — and a transfer path where the sender is a proof, not an address.
Balances, counterparties, salaries, timing. Indexed forever, by anyone, for free. On Ethereum, privacy today means a mixer, a bridge, or a different wallet. Sanect puts the private path on the same chain, behind the same wallet, one toggle away from the public one.
100%
of Ethereum transfers link sender to recipient
0
new seed phrases required on Sanect
address · 0x7cB6…d02Ewhat an indexer sees
employerAcme Labs (monthly, 4,200 USDC)
exchangeDeposits to Binance 14
friend0x9f2a…c41b · 31 transfers
balance128,410.22 USDC · 4.8 ETH
timezoneUTC+5:30 · active 09:00–23:00
donations3 political · 2 medical
▮ shielded on sanectsender: proof · not address
02What Sanect is
One chain. Two transfer paths. Same wallet.
Sanect is a dual-stack Layer 1: an EVM execution layer on a Cosmos SDK base, joined by precompiles. The shielded pool is a contract on that EVM — not a sidechain, not a rollup, not a bridge.
L0
Wallet
Any EVM wallet. MetaMask, Rabby, Frame — connect, sign one message, and your shielded keys are derived for life.
personal_sign → HKDF
L1
JSON-RPC
Standard eth_* surface. Hardhat, Foundry, ethers, viem — unchanged.
Shielded pool ShieldedPool v1.4 · Poseidon-2 Merkle tree · HonkVerifier
public state ↔ shield / unshield ↔ private state
L3
Modules
Cosmos SDK v0.53 staking, distribution, governance and slashing — exposed to the EVM as precompiles at 0x…800–806.
DPoS · top-50 by stake
L4
Consensus
CometBFT v0.38. Deterministic finality — a committed block is final, not probably final.
timeout_commit 400 ms · 150M gas/block
03A shielded transfer, step by step
shielded transfer · lifecycle
01 · Derive
One signature. Two keys. No new seed phrase.
The wallet asks MetaMask to sign a fixed message once. The signature is fed through HKDF-SHA256 into a viewing key and a spending key. Recovery on a new device is “connect, sign once.”
02 · Shield
Value becomes a note.
A deposit into the ShieldedPool creates a note {asset, value, owner_pk, salt}. Only its Poseidon-2 commitment is stored on chain, appended to a depth-32 Merkle tree. A 240-byte encrypted memo (X25519 + ChaCha20-Poly1305) lets the recipient find it.
03 · Prove
Spending is a proof, not a signature.
In the browser, a Noir 2-in/2-out circuit (6,307 gates, 8 public inputs) proves Merkle inclusion, key ownership, a correct nullifier and value conservation — without revealing which note is spent. UltraHonk, roughly two to three seconds on a laptop.
04 · Verify
The chain checks math, not identity.
The HonkVerifier contract accepts or rejects the proof on chain. The nullifier is recorded so no note can be spent twice. A 32-slot window of recent roots means a proof built against a slightly stale tree still lands.
05 · Receive
Funds appear. There is no claim step.
The recipient’s wallet trial-decrypts new memos with its viewing key. A memo that opens is a note it owns — spendable immediately, even if the wallet was offline for a year.
Privacy is not binary. Each mode hides a different combination of sender, recipient and amount. The wallet detects the recipient type and picks the mode for you — the explorer sees only what you allowed.
from0x7cB6…d02Evisible
to0x9f2a…c41bvisible
amount100.00 SNCTvisible
shielded balance needednofrom public balance
what the explorer shows
“R sent 100 SNCT to A.” Full sender → recipient link.
use it for
Exchanges, public DeFi, anything already public.
from0x7cB6…d02Evisible
to0x9f2a…c41bhidden
amount100.00 SNCTvisible
shielded balance needednofrom public balance
what the explorer shows
“R deposited 100 SNCT into the pool.” New commitment + encrypted memo.
use it for
Pay one person privately from a public balance.
from0x7cB6…d02Ehidden
to0x9f2a…c41bvisible
amount100.00 SNCTvisible
shielded balance neededyesspend from pool
what the explorer shows
“Pool sent 100 SNCT to A.” One nullifier consumed — no link to R.
use it for
Contractors, donations, settling with people who aren’t shielded.
from0x7cB6…d02Ehidden
to0x9f2a…c41bhidden
amount100.00 SNCThidden
shielded balance neededyesspend from pool
what the explorer shows
“Pool activity.” One nullifier consumed, one commitment added.
use it for
Salary, recurring transfers, counterparties who both value discretion.
05EVM compatibility
Change one line. Keep everything else.
Sanect speaks standard JSON-RPC and runs the same bytecode. Contracts deploy unchanged, tests run unchanged, wallets connect unchanged. Privacy is a contract you can call — and staking, governance and rewards are precompiles you can call from Solidity.
0xEeee…EEeEWERC20native SNCT with an ERC-20 interface — same coins, any DEXprecompile
0x5532…3ecfShieldedPool v1.4shield · transact(proof) · unshield — the privacy primitivecontract
06The network, right now
Deterministic finality every 400 milliseconds.
CometBFT consensus over a top-50 delegated proof-of-stake set. A committed block cannot be reorganised. Numbers below are read live from the chain — if a source is down, it shows a dash rather than a guess.