Example: Alice sends $100 to @bob
Alice holds USDC on Ethereum. Bob’s receiver preferences are set to receive USDC on Sui, delivered to his designated wallet.- Step 1: Payment intent. Alice types @bob, enters $100, and confirms the payment. This is the only action Alice takes. One signature from her wallet authorizes the transaction.
- Step 2: Screening and routing. Silo screens the transaction against sanctions lists and runs KYT checks on the payment route. Simultaneously, Silo reads Bob’s receiver preferences and determines the optimal delivery path: in this case, USDC on Ethereum needs to reach USDC on Sui, so a cross-chain bridge (CCTP) will be required. If Alice had been paying in a different asset (e.g., ETH), Silo would first route through a DEX aggregator (Uniswap on Ethereum) to swap to USDC before proceeding.
- Step 3: ZK commitment. Silo’s backend generates a random secret (a 32-byte string) and computes the ZK hash and ZK commitment. The commitment is a cryptographic hash that binds the secret to Bob’s designated withdrawal address. This binding ensures that only Bob’s specific wallet can later withdraw the funds, and it creates on-chain unlinkability between Alice’s deposit and Bob’s eventual withdrawal. The commitment and ZK proof are computed entirely off-chain. Only after this computation succeeds is the commitment data bundled into the on-chain transaction that executes the vault deposit. The secret is managed internally by Silo’s backend. Bob never sees or handles it.
- Step 4: Vault deposit and cross-chain bridging. Alice’s USDC is sent into CCTP alongside the commitment data. On a cross-chain payment, the funds do not pool on the source chain. CCTP burns the USDC on Ethereum and mints it on Sui. The minted USDC is deposited into the shared Sui USDC vault, where it joins a pool of other users’ funds. This pooling on the destination chain is what breaks the deterministic on-chain link between any individual deposit and any individual withdrawal. By the time Bob initiates his withdrawal, the funds are already sitting natively in the Sui vault. Same-chain payments skip the bridging step entirely and deposit directly into the local vault.
- Step 5: Account credited. Bob’s Silo account is credited $100 in Silo’s database. Bob can see the incoming payment in his account. At this point, the funds are in the shared vault on Sui, and Bob has a balance reflecting his credit.
- Step 6: Withdrawal initiated. Bob initiates a withdrawal by signing from his designated wallet. This signature is required. Silo cannot withdraw funds on Bob’s behalf. The withdrawal can only be triggered by the specific wallet address that was cryptographically bound to the commitment in Step 3.
- Step 7: ZK proof and settlement. Silo generates a ZK proof that verifies Bob’s right to withdraw without revealing which deposit the withdrawal corresponds to. The proof is submitted to the vault smart contract, and the funds are released from the Sui vault to Bob’s wallet (or split across multiple wallets if Bob has configured multi-wallet preferences).
- Step 8: Payment Instruction stored. After the withdrawal completes, Silo finalizes the encrypted Payment Instruction containing the full transaction details: sender identity, receiver identity, amounts, wallet addresses, routing path, ZK proof references, compliance check results, and timestamps for each stage. The Payment Instruction is encrypted using SEAL and uploaded to Walrus (Sui’s decentralized storage layer) via a background process. This is the permanent, tamper-resistant audit trail that supports disputes, regulatory compliance, and internal review.
- Step 9: Funds delivered. $100 USDC arrives at Bob’s wallet on Sui. Both Alice and Bob receive redacted receipts confirming the transaction. The payment is complete.
.png?fit=max&auto=format&n=d0ciqotHpLYc4JWp&q=85&s=ae327a59c8f11fff090589cb712d6323)
