Isekai is a cross-chain privacy protocol inspired by EIP-7503 and combines shielded UTXO transfers, zk-wormholes, chain abstraction, and delegated execution for any asset.
All commits prior to Arbitrum Open House NYC can be found on pre-arbfh branch.
This monorepo includes:
contracts/: Foundry smart contracts for the master pool, branch pools, wormholes, verifier integration, and tests.circuits/: Noir circuits and proof tooling for shielded transfers, delegated transfers, batch proofs, and ragequit flows.webapp/: Next.js app for the user-facing experience and server-side market fulfillment execution.services/: supporting services such as screening, master tree syncing, notes vault storage, and the market proof service.subgraph/: Graph subgraph for indexing shielded pool activity and related events.
The diagram below illustrates the difference between a traditional privacy pool deposit, a zk-wormhole-based deposit, and the broader Isekai model.
- Traditional privacy pools: users publicly call the privacy contract to enter the pool.
- ZK-wormholes: users send assets through ordinary-looking transfers that can later be proven into a shielded balance.
- Isekai: combines zk-wormholes, cross-chain state syncing, delegated execution, and screening into one privacy system.
At a high level:
- A sender creates a normal-looking transfer or wormhole-style transfer.
- Offchain proving infrastructure generates the zero-knowledge proof for the shielded action.
- Branch pools verify shielded transfers locally.
- Branch state is aggregated into the master pool for cross-chain synchronization.
- The webapp and services coordinate proving, indexing, screening, and delegated execution.
You will likely need:
- Bun for the monorepo, webapp, circuits tooling glue, and services.
- Foundry for smart contract builds and tests.
- Noir tooling such as
nargoandbbfor circuit compilation and verifier generation. - Graph CLI if you want to build or deploy the subgraph locally.
Install workspace dependencies from the repo root:
bun installBuild and test the contracts:
cd contracts
forge build
forge testBuild the Noir circuits:
cd circuits
bun run buildExport compiled circuit artifacts for the webapp:
cd circuits
bun run export-appExport Solidity verifiers for the contracts:
cd circuits
bun run export-contractsRun circuit tests:
cd circuits
bun test tests/*Start the Next.js app:
cd webapp
bun run devThe webapp script expects environment configuration such as RPC URLs, contract addresses, subgraph URLs, and in some flows a RELAYER_PRIVATE_KEY. There is a webapp/.env.template file in the repo to use as a starting point.
Run the market proof service:
bun run services/market-proof-service/src/index.tsThis service is used by the market fulfillment flow to build delegated proofs and batched delegated proofs.
Several auxiliary services can be run directly with Bun, for example:
bun run services/screener/src/index.ts
bun run services/master-tree-updater/src/index.ts
bun run services/notes-vault/src/index.tsThese services use their own environment variables and templates where provided under services/.
Build the subgraph:
cd subgraph
bun run codegen
bun run buildFor local Graph Node workflows:
cd subgraph
bun run create-local
bun run deploy-localFor a typical end-to-end local workflow:
- Install dependencies with
bun install. - Build circuits with
cd circuits && bun run build. - Export artifacts with
bun run export-appandbun run export-contractsif you changed circuits. - Run contract tests with
cd contracts && forge test. - Start the proof service with
bun run services/market-proof-service/src/index.ts. - Start the webapp with
cd webapp && bun run dev.
