Off chain
Policy service
Evaluates every payment against the Mandatum before anything is signed. Outputs are signed and logged with the input hash and policy version.2
Technology
SILS binds every agent to a verified owner, enforces the owner's policy at three points, and settles with a zero-knowledge proof carried inside x402. This page goes from principles to architecture to specifics. Every capability carries a status. Every non-obvious fact carries a source.
01 · Principles
SILS builds on the Revolution Network design. These principles come from the Revolution whitepaper.1 SILS adopts them as its own engineering constraints.
Policy evaluation, proof generation and identity checks run off chain. The chain checks signed outputs and proofs. Every off-chain service has signed outputs, on-chain verification of those outputs, audit logs with the input hash and policy version, and replaceable keys.2
No personal data, KYC data or payment detail goes on chain. The chain holds roots, hashes, caps and revocation lists.2
Identity, proofs, mandate anchors and intents are sponsored calls. Settlement is the step that carries the fee.3
Stablecoins settle natively. Card payments are recorded and referenced. The network is the record of trust, not the sole mover of money.1
Merchant agents post a bond before they sell. Misconduct is slashed and pays restitution to the buyer.4
Every agent traces to a verified owner. The owner can suspend or revoke it at any time. Agents cannot create agents.5
SILS Proof is a scheme inside x402, not a rival protocol. Identities mirror into ERC-8004. Mandates use the AP2 format.6
02 · Architecture
The stack follows the Revolution layer model: identity, then payments, then discovery and enforcement, on top of the chain.7 SILS adds the access surfaces and a multichain settlement layer. The SILS Proof verifier is the point where payment, identity and policy meet.
Figure 1. SILS system layers. Status shown per layer. Revolution V2 is the planned primary settlement network, subject to a definitive agreement. Base, Ethereum and Solana are planned.
| Layer | Off chain | On chain | Status |
|---|---|---|---|
| Access | Remote MCP server over Streamable HTTP.8 OAuth 2.1 with PKCE S256, protected resource metadata and audience-bound tokens.9 REST, SDKs, Console. | None. Access surfaces hold no user keys. | In development |
| Identity | KYC, KYB and KYA checks with regulated identity data partners. Credential issuance. | Name registry, agent records, facet roots, revocation sets.5 | In development |
| Policy | Owner-signed Mandatum. Per-transaction evaluation. | Policy hash, caps, expiry, revocation, session-key hooks.10 | In development |
| Payments | Proof generation on the client or a prover service. Netting of micro-payments. | Settlement contract, Mandate Anchor, escrow, splits, proof verifiers.11 | In development |
| Discovery and enforcement | Offer matching. Dispute evidence. | Intent Book, Reputation Registry, bonds.4 | In development Planned |
| Settlement networks | Observers and provers for non-native chains. | Revolution V2 rollup, data and proofs on Ethereum.12 | Devnet Planned |
03 · Lifecycle
Standard x402 settles with a transfer authorization that names the payer, so the payer address is indexed on chain and visible to the merchant.13 SILS keeps the x402 v2 exchange and its three headers: PAYMENT-REQUIRED, PAYMENT-SIGNATURE and PAYMENT-RESPONSE.14 It replaces what the payment payload carries. The merchant receives a proof, not a wallet.
Figure 2. Lifecycle of a private payment. Numbers match the steps below. Dashed arrows are responses. Illustrative. SILS Proof is in development.
The agent shopping.rob.revo calls a paid endpoint, for example GET /api/v1/report.
The merchant server answers 402 with a Base64 PAYMENT-REQUIRED header. Its accepts[] entry names the scheme sils-proof, the network as a CAIP-2 identifier, the asset, the amount in atomic units and payTo as sales.acme.revo.15,16 Scheme fields add the required facets and a fresh challenge nonce.6
The agent checks the owner's Mandatum locally. The session key hook enforces caps, asset, target and expiry on chain. A payment outside policy stops here.10
The agent settles USDC into the Settlement contract. fund() reverts unless required facet proofs verify, the mandate hash is anchored and escrow covers the price. Micro-payments net off chain into one settlement per batch, checked against the caps on chain.11
The agent generates a zero-knowledge proof on the client or through a prover service.2 The proof covers the settlement, the merchant's terms, the challenge nonce and any requested facets.
The agent retries the request with a PAYMENT-SIGNATURE header whose payload carries the proof instead of a signed transfer from a named wallet.14
The merchant returns 200 with a PAYMENT-RESPONSE header and the resource. The receipt reads: Proof valid. Owner verified. Within policy.
// HTTP/1.1 402 Payment Required. Header decoded from Base64. { "x402Version": 2, "resource": { "url": "https://api.acme.example/api/v1/report" }, "accepts": [{ "scheme": "sils-proof", "network": "eip155:<revolution-chain-id>", "asset": "USDC", "amount": "24000000", "payTo": "sales.acme.revo", "maxTimeoutSeconds": 120, "extra": { "facets": ["human.verified", "age.over.21", "jurisdiction.in:US"], "nonce": "b41f...e0" } }] }
// Retry. Header decoded from Base64. { "x402Version": 2, "accepted": { "scheme": "sils-proof", "network": "eip155:<revolution-chain-id>" }, "payload": { "proof": "0x1f9a...c3", "nonce": "b41f...e0", "agent": "shopping.rob.revo" } // no payer address, no transfer authorization }
// HTTP/1.1 200 OK. Header decoded from Base64. { "success": true, "network": "eip155:<revolution-chain-id>", "payer": null, // not disclosed "result": { "payment": "valid", "owner": "verified", "policy": "within" } }
04 · Disclosure
The proof establishes that a settlement exists, that it matches the stated terms, and that it has not been presented before.6 SILS also binds it to the merchant's challenge and to any facets the merchant requested. Everything else stays with the payer.
| Fact | Merchant | Auditor with a viewing proof |
|---|---|---|
| Payment settled | Learns | Learns |
| Amount and asset meet the terms | Learns | Learns |
| Recipient is this merchant | Learns | Learns |
| Not presented before | Learns | Learns |
| Bound to this request | Learns | Not relevant |
| Requested facets hold | Learns, as yes or no | Learns, as yes or no |
| Payer wallet | Does not learn | For the specified payment |
| Balance | Does not learn | Does not learn |
| Payment history | Does not learn | Does not learn other payments |
| Identity documents | Does not learn | Does not learn. Held off chain by verification partners. |
| Budget and remaining cap | Does not learn | With the mandate itself |
A proof of purchase intent tells the merchant the purchase is authorized. It does not reveal the budget or the urgency. An auditor holding the mandate can check it against the Mandate Anchor. Anyone else learns that an anchor exists.11 Viewing proofs for auditors In development
05 · Identity
An owner verifies once, off chain. The chain records commitments, never attributes.5 The owner then creates agents as children of its .revo name: rob.revo owns shopping.rob.revo. Agent identities are soulbound. There is no transfer function. Revocation is permanent, and suspending a parent suspends every child.5 Each agent is mirrored read-only into the ERC-8004 registry with transfer disabled, so standard agent tooling can find it.5,18
| Level | What is checked | What it unlocks |
|---|---|---|
| L1 Basic | Email and device bound, uniqueness checked | Agent creation, low-value settlement |
| L2 Verified | Government identity checked against data partners | Age and jurisdiction facets, standard settlement |
| L3 Enhanced | KYC and AML screening completed | Accredited-investor facets, RWA-linked settlement |
| L3 Entity | Legal entity verified with an authorized signatory | Merchant agents, bonded reputation pools |
Levels are governance-set.5 SILS ID In development
A facet is one provable attribute of a verified identity. Each issuer commits credentials as leaves in a Merkle tree. The agent proves that a leaf satisfies the predicate and is not in the issuer's revocation set. Each proof carries a nullifier bound to the settlement, so it cannot be replayed.17 The initial set is governance-set.
| Facet | Proves | Issued from |
|---|---|---|
| human.verified | A verified person stands behind the agent | Owner verification |
| entity.verified | A verified legal entity stands behind the agent | L3 Entity verification |
| age.over.18 | The owner is over 18 | L2 Verified |
| age.over.21 | The owner is over 21 | L2 Verified |
| jurisdiction.in | The owner is in a listed jurisdiction, for example jurisdiction.in:US,CA,GB6 | L2 Verified |
| jurisdiction.not.in | The owner is outside a listed jurisdiction | L2 Verified |
| investor.accredited | The owner meets accredited-investor criteria | L3 Enhanced |
| sanctions.clear | The owner passed sanctions screening | Screening at verification |
| reputation.above | The agent's score is above a threshold. The number is not revealed.4 | Reputation Registry |
| kya.certified | The agent holds a Know Your Agent certification | Imported from KYA frameworks |
| mandate.covers | The purchase falls inside the owner's signed mandate | Mandate Anchor |
Eleven initial facets.17 Facet proofs In development
Nothing else is stored per identity. Routine root updates aggregate on a short cadence, with a planning figure of every 10 minutes. Revocations and high-value changes post immediately.17
06 · Policy
The owner signs a standing Mandatum for each agent. Its minimum fields are a per-transaction cap, a per-period cap, allowed categories, an optional counterparty allowlist, a human-approval threshold, an expiry and a kill switch. It is stored off chain with its hash on chain. The agent never holds the owner's key.10
Off chain
Evaluates every payment against the Mandatum before anything is signed. Outputs are signed and logged with the input hash and policy version.2
On chain, per call
The agent holds a session key on an ERC-7579 account. A hook checks target, selector, asset, amount, rate and expiry on every call. A call outside the policy fails.10
At settlement
fund() reverts unless every required facet proof verifies, the mandate hash is anchored, any intent proof verifies and escrow covers the price.11
07 · The chain
Revolution V2 is a regenesis onto ZKsync OS, not an upgrade of V1.12 ZKsync OS is EVM equivalent and works with standard EVM tooling.20 From public testnet onward, batches carry Airbender validity proofs. Airbender is a RISC-V proof system using STARK and FRI, with the final proof wrapped for on-chain verification.21,22 Data goes to Ethereum as blobs.
| Property | Specification | Status |
|---|---|---|
| Node software | zksync-os-server pinned at v0.23.0, protocol v31.012 | Devnet |
| Execution | EVM equivalent. Standard solc. Foundry, Hardhat, viem, ethers and Otterscan work unchanged.12 | Devnet |
| Validity proofs | An Airbender proof on every batch from public testnet onward. Local devnets use fake provers.12 | In development |
| Data availability | Rollup. Data published to Ethereum in blobs. Validium was considered and not chosen.12 | Specified |
| L1 settlement | Batches committed, proven and executed on Ethereum. Separate operator keys sign each step, held in a KMS.12 | Specified |
| Accounts | ERC-4337 EntryPoint v0.8 at the canonical address 0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108. ERC-7579 modular accounts.10,23 | Devnet |
| Account abstraction | ZKsync OS does not support native account abstraction. Every V2 account uses ERC-4337.20 | Design fact |
| Passkeys | P-256 precompile at 0x100.24 Passkey verification measured at about 31,000 gas.10 | Devnet |
| Gas sponsorship | Cornerstone Paymaster, an ERC-4337 verifying paymaster. Identity, proofs, anchors, intents and escrow creation are free. Sponsorship fails open to user-paid gas. It never fails closed.3 | Devnet |
| Sequencing | One active sequencer with a warm standby batcher.25 | Specified |
| Batch cadence | 1 hour at mainnet launch, with size-based sealing.25 | Planned |
08 · Verifying nodes
A verifying node is an external node run by a staked, approved operator. It replays every block and co-signs each batch before commit. The signatures add an execution check that is independent of the proof system, and they keep committed data on independent machines.27 Operators are admitted through a business identity on Revolution Name Service, an on-chain allowlist, a stake and governance approval.27
A SILS node gives SILS a locally verified view of settlements and nullifiers without trusting a third-party RPC.28 Whether SILS becomes one of the independent mainnet signers is subject to Revolution governance.
09 · Cross-chain
Revolution is the planned primary settlement network. SILS plans to verify USDC payments on Base, Ethereum and Solana. The verification method, and the trust it requires, is not the same on each one.
| Network | How SILS verifies a payment | What you trust | Status |
|---|---|---|---|
| Revolution V2 | Native SILS Proof verifier and nullifier set on chain. | Validity proof and Ethereum | In development |
| Ethereum | Storage proof of the payment against a block hash.29 Historical block hashes extend the window to 8,191 blocks.30 | Ethereum consensus | Planned |
| Base | Storage proof against a trusted Base block hash. That hash can come from the output root posted to Ethereum31 or from a ZK light client.32 | Base output root or light client proof | Planned |
| Solana | Solana block headers carry no state root or transaction Merkle root.33 SILS will issue a signed attestation, labeled as an attestation, until a trustless path exists. | The attestation signer | Planned |
Every SILS Proof is single use, whatever network carries the payment.
10 · Proof system
SILS has not chosen a proving system for SILS Proof. Candidates will be benchmarked on the Revolution public testnet before a choice. Design details will be published after counsel review. Airbender is the chain's batch prover. It is separate from SILS Proof.
| System | Setup | Proof size | EVM verification | Published proving times |
|---|---|---|---|---|
| Groth16 (Circom) | Per circuit | 3 group elements35 | About 181,000 gas for a 4-pairing check plus about 6,150 gas per public input, derived from precompile prices.36 SP1's Groth16 wrap measures about 270,000 gas.37 | Keccak256: 630 ms on iPhone 16 Pro, 744 ms on Galaxy S23 Ultra.38 |
| UltraHonk (Noir) | Universal | 14,592 bytes, padded39 | No primary figure found. To be measured on Revolution. | Keccak256: 349 ms on iOS, 1,303 ms on Pixel 6.38 |
| PLONK (SP1 wrap) | No circuit-specific setup | About 868 bytes37 | About 300,000 gas37 | About 90 s more than compressed proofs, server side.37 |
| Ligero and sumcheck | Transparent | Not published | Not designed for EVM verification | About 20 ms for ECDSA. A few hundred ms for mdoc on mobile.40 A candidate for credential issuance. |
Figures come from public sources on different hardware and circuits. They are not comparable head to head and are not SILS measurements. SILS Proof In development Proving system not yet chosen.
11 · Threat model
Most rows come from the Revolution threat model.41 SILS adds rows for proof presentation and assistant access.
| Threat | Mitigation |
|---|---|
| Sybil farming of free calls | Signed sponsorship vouchers tied to identity level. Per-identity allowance. Cost cap per operation. Fallback to paid gas. |
| Paymaster drain | Call data decoded. Every target must be registered. delegatecall refused. |
| Compromised agent key | Mandatum caps, parent kill switch, key rotation and a human-approval threshold. |
| Compromised parent key | Smart account recovery. RNS suspension of the parent and all of its children. |
| Forged or replayed proof | Verification against facet and revocation roots. Audited, versioned circuits. Nullifiers. |
| Proof replayed to another merchant | Each proof is bound to the merchant's challenge nonce and is rejected elsewhere. |
| Reputation purchase or whitewashing | Soulbound identities. Records follow the parent. Bonds forfeited on revocation under dispute. |
| Operator key compromise | Separate commit, prove and execute keys held in a KMS. Rotation through governance. |
| Opaque off-chain operator | Signed outputs, on-chain verification, audit logs and replaceable keys.2 |
| Prompt injection via offers | Offers are structured records with hashed terms. Free text is excluded. |
| Token misuse by an MCP client | OAuth 2.1 with PKCE. Tokens are audience-bound and never passed through.9 Owner-signed actions go to a passkey approval page.42 |
| Soundness bug in the chain prover | Verifying nodes replay execution independently of the proof system.27 Production ZK systems have failed before.43 |
12 · Security commitments
No audit of SILS or Revolution contracts or circuits is complete today. These are commitments, labeled as such. Circuit bugs such as under-constrained signals are a documented class of failure.44
| Commitment | Detail | Status |
|---|---|---|
| Independent contract audits | Every contract receives an independent audit before mainnet.41 | Planned |
| Circuit audits | Circuits are audited before activation, and versioned.41 | Planned |
| Timelock and multisig | Every privileged contract is owned by a timelock controlled by a multisig from day one.41 | Planned |
| Bounded guardian pause | A guardian can pause with bounded powers. A paymaster pause expires on its own.41 | Planned |
| No personal data on chain | Commitments, roots and nullifiers. Nothing else. A design rule.2 | In development |
| Responsible disclosure | A public disclosure policy and bug bounty. See the Trust page. | Planned |
Sources