ASI:BUILD · bridge.asi-build.org

Rings ↔ Ethereum Bridge

Trustless·ZK-Verified·Decentralized

● Live on Sepolia 3 Contracts Deployed 4/6 BFT Consensus No Trusted Intermediaries 💳 Token Ledger 🌐 4 Chains
Deployed Contracts

All three contracts verified on Sourcify. Source code fully auditable, no proxy tricks.

🔐
Groth16Verifier
ZK proof verification on-chain — validates BN254 pairing proofs generated by the bridge relayer. ~220K gas per verification. Immutable once deployed.
0x9186fc5e27c15aEDbA2512687F2eF2E5aC7C0e59
🌉
RingsBridge
Core bridge contract — accepts ETH deposits, verifies ZK proofs via Groth16Verifier, enforces rate limits (daily + per-tx), Pausable + ReentrancyGuard. Certora spec verified.
0xE034d479EDc2530d9917dDa4547b59bF0964A2Ca
🪙
BridgedToken (bASI)
ERC-20 representation of bridged ASI on Ethereum. Minted on deposit confirmation, burned on withdrawal. Only RingsBridge can mint — no other privileged roles.
0x257dDA1fa34eb847060EcB743E808B65099FB497
⚡ Live Data
Bridge Statistics
Loading… · Auto-refresh in 30s
Bridge ETH Balance
ETH (Sepolia)
💵
Bridge USDC Balance
USDC
🔢
Deposit Nonce
Total deposits processed
Gas Price
Gwei (Sepolia)
📦
Latest Block
Sepolia block height
🔒
Contract State
Bridge operational status
🔭 System Design
Architecture

Full-stack ZK light client bridge. Proof generation on the Rings side, on-chain verification on Ethereum.

ZK LIGHT CLIENT BRIDGE ARCHITECTURE · SEPOLIA TESTNET ⟠ Ethereum SEPOLIA TESTNET RingsBridge.sol 0xE034…Ca Groth16Verifier.sol 0x9186…59 BridgedToken (bASI) 0x257d…97 MPT Verification Certora FV · 843 LOC spec Beacon Light Client proof → ← confirm 🔐 ZK Proofs PROOF LAYER Groth16 / BN254 131-byte proof · 220K gas BLS12-381 sync committee verification SP1 + Nova Prover 10.8s/block proving time SSZ Merkleize Proof Coordinator (cache+batch) Helios light client · 2s sync relay → ← events 🔗 6-Node Cluster RINGS VALIDATORS node0.rings.asi-build.org node1.rings.asi-build.org node2.rings.asi-build.org node3.rings.asi-build.org node4.rings.asi-build.org node5.rings.asi-build.org 4/6 BFT threshold Chord DHT · Portal-DHT DID Identity · Reputation PQC-Ready (ML-KEM path) 🌐 Rings Network P2P · Decentralized secp256k1 · DID WebRTC · WASM 25,000+ LOC · 912+ TESTS · 4 CHAINS · TOKEN LEDGER · CERTORA FV (843 LOC) · GROTH16 BN254 · BLS12-381 · SP1+NOVA bridge.asi-build.org
🔗 Rings Network
6-Node Validator Cluster

All six validator nodes configured at permanent addresses. 4/6 threshold required for bridge consensus (BFT-tolerant: can lose 2 nodes).

node-0 Active
node0.rings.asi-build.org
🔐 Primary Validator · Proof Coordinator
node-1 Active
node1.rings.asi-build.org
⚡ Validator · DHT Relay
node-2 Active
node2.rings.asi-build.org
⚡ Validator · BLS Signer
node-3 Syncing
node3.rings.asi-build.org
⚡ Validator · Light Client
node-4 Active
node4.rings.asi-build.org
⚡ Validator · Portal DHT
node-5 Active
node5.rings.asi-build.org
⚡ Validator · Proof Relay
ℹ Cluster Status: Node addresses are permanently configured. Live ping status is not accessible from the browser due to P2P network topology (WebRTC/DHT). Use the CLI to check real-time connectivity: python scripts/bridge_cli.py cluster status
🛠 Technology
Technology Stack

Real cryptographic primitives, not wrappers. Every component chosen for provable security, not convenience.

🔐
Groth16 on BN254
Zero-knowledge proofs using the BN254 pairing-friendly curve. 131-byte proof size, ~220K gas on-chain verification. The same ZK system used in Zcash Sapling and Tornado Cash.
zk/circuits.py · zk/prover.py
🏮
Helios Light Client
Ethereum beacon chain light client embedded in each Rings validator node. Syncs in ~2 seconds, requires ~4MB memory, zero long-term storage. Inspired by a16z's Helios (Rust/WASM).
bridge/light_client.py
🔷
BLS12-381
BLS aggregate signatures for the validator committee. Allows 6 validator signatures to be compressed into one for efficient on-chain verification. Full keygen, sign, aggregate, verify pipeline.
zk/bls.py · 764 LOC
🕸
Rings Chord DHT
Sub-Ring topology inspired by Portal Network DHT. Content-addressed routing with O(log n) hops. Nodes self-organize into structured overlay for proof relay and state sync.
rings/client.py · rings/dht.py
SP1 + Nova Prover
SP1 (succinct zkVM) for general-purpose circuits with a Nova recursive aggregation path. Proving time ~10.8s/block on reference hardware. Distributed proof generation across validator cluster.
zk/prover.py · 1,483 LOC
🛡
PQC-Ready (ML-KEM)
Hybrid ECDH + ML-KEM (CRYSTALS-Kyber successor, NIST PQC standard 2024) path prepared. Current deployment uses classical secp256k1. Migration path documented, no re-deployment required.
bridge/pqc.py · Phase 4
📜
Solidity 0.8.20
Three contracts deployed: RingsBridge (core logic), Groth16Verifier (proof check), BridgedToken (ERC-20 bASI). OpenZeppelin v5: Ownable, ReentrancyGuard, Pausable. No upgradeable proxies.
contracts/ · Phase 2
🔢
SSZ + MPT Verification
Simple Serialize (SSZ) encode/decode/merkleize for BeaconBlockHeader. Merkle Patricia Trie (MPT) inclusion proofs for storage slots. Both implemented in pure Python (no web3.py dependency for proofs).
zk/ssz.py · bridge/mpt.py
🛡 Defense in Depth
Security Features

Seven independent layers of protection. Attack cost equivalent to Ethereum consensus security — no single point of failure.

Source Verified on Sourcify
VERIFIED
All three contracts fully verified on Sourcify (IPFS-pinned, decentralized). Anyone can independently verify bytecode matches published source. No obfuscation, no proprietary tooling.
📐
Certora Formal Verification
843 LOC
843-line Certora CVL spec proving key invariants: deposit nonce monotonicity, rate limit enforcement, no unauthorized minting, reentrancy impossibility, pause state propagation.
🔒
ReentrancyGuard
OZ v5
OpenZeppelin ReentrancyGuard on all state-changing functions. Prevents the attack vector responsible for the $60M DAO hack (2016) and numerous subsequent exploits. Mutex-based, not check-effects-interactions only.
Rate Limiting
2-LAYER
Two-layer rate limits: daily total volume cap + per-transaction size limit. Configurable by contract owner. Prevents draining attacks — even if a proof is forged, damage is bounded. Rolling window implementation.
🤝
4/6 BFT Threshold
BYZANTINE
6-node validator committee with 4/6 threshold for proof finalization. Tolerates up to 2 Byzantine (malicious or faulty) validators. BLS aggregate signatures compress 6 signatures into one constant-size proof for gas efficiency.
🚫
No Trusted Intermediaries
TRUSTLESS
No multisigs, no oracles, no admin keys with withdrawal power. The Groth16 verifier accepts only cryptographically valid proofs — there is no "emergency override" or admin backdoor. Math is the authority.
Circuit Breaker (Pausable)
OZ v5
OpenZeppelin Pausable on bridge operations. Owner can pause deposits and withdrawals in an emergency. Pause state is formal — no funds can move while paused. Not a security patch, but a safety net during incidents.
🔢
Nonce Replay Protection
MONOTONIC
Deposit nonces are strictly monotonic and tracked on-chain. Each proof includes the nonce it was generated for — replaying a valid proof with a different nonce fails cryptographically. Double-spend impossible.
Security Level
Attacking this bridge requires either (a) breaking Ethereum consensus (>$26B cost), (b) breaking BN254 discrete log (no known polynomial attack), or (c) compromising 4+ of 6 validators simultaneously (geographically distributed, independent key material). Compare: Ronin Bridge ($625M, 2022) used 5/9 multisig — 4 keys held by a single company.
💳 Agent Payments
Token Ledger

Agent-to-agent payments on Rings. Same 4/6 BFT consensus as the bridge — ETH, USDC, or any ERC-20. DHT-backed balances with validator-attested transfers.

Deposit
ETH → bASI
bridge
💎
Rings Balance
DHT-backed
ledger
🤖
Agent Transfer
4/6 consensus
ZK proof
Withdraw
bASI → ETH
Deposit → Rings Balance → Agent Transfer → Withdraw · All steps: 4/6 BFT consensus · nonce replay protection
🌉
Bridge ETH / ERC-20
LIVE
Agents call deposit(rings_did) on RingsBridge to move ETH or any ERC-20 from Ethereum into their Rings balance. Supports ETH, USDC, USDT, and any compliant token.
🤖
Pay Other Agents
NEW
The Token Ledger supports agent-to-agent transfers on the Rings network. Transfer lifecycle: PROPOSEDATTESTING (4/6 validators sign) → FINALIZED. Balance locking prevents double-spend.
🔐
Withdraw with ZK Proof
TRUSTLESS
Agents withdraw back to Ethereum by submitting a Groth16 ZK proof of their withdrawal commitment. The Merkle inclusion proof is generated by the validator committee and verified on-chain — ~220K gas, no trusted party.
Transfer Lifecycle
PROPOSED → ATTESTING → FINALIZED
Rollback on timeout · nonce-replay proof
Consensus
4/6 BFT validator threshold
secp256k1 signatures · BLS aggregate
Token Support
ETH + any ERC-20 (USDC, USDT…)
DHT-backed balances · balance locking
Test Coverage
131 tests · 1,709 LOC
Double-spend prevention · replay attacks
🌐 Multi-Chain
4-Chain Bridge Network

The same ZK-verified, trustless bridge architecture now operates across four chains. Deposit on any supported chain, route through the Rings network, withdraw on any other — no wrapped tokens, no centralized relayer, no trusted committee.

Ethereum Sepolia
Chain ID 11155111
LIVE
Origin chain. Groth16Verifier, RingsBridge, and bASI token all deployed. Helios light client tracks beacon chain state. Source of truth for ZK proofs.
3 contracts · 334+ tests · ~220K gas/withdraw
B
BSC Testnet
Chain ID 97
READY
BNB Smart Chain testnet adapter. High-throughput, low-cost deposits. Native USDC/BEP-20 bridging. The same Groth16 proof verifier contract, adapted for BSC's EVM.
BEP-20 support · ~3s block time · low gas
Base Sepolia
Chain ID 84532
READY
Coinbase's OP-Stack L2. Native USDC (no bridged versions). Ultra-low gas — ideal for frequent agent micropayments and high-frequency DID operations on Rings.
Native USDC · OP-Stack · <2s finality
AI-NATIVE
Arc Testnet
Chain ID 5042002
READY
The most novel chain in the network. USDC is the native gas token — no ETH needed. AI agent standards built into the protocol: ERC-8183 (AI agent jobs) and ERC-8004 (AI identity). Natural home for autonomous agent economies.
USDC gas ~350ms finality ERC-8183 jobs ERC-8004 identity
Cross-Chain Routing — The Killer Feature
B
BSC Testnet
Deposit USDC
Chain ID 97
ZK proof
🌐
Rings Network
Route & Validate
4/6 BFT consensus
6 validators
ZK proof
Arc Testnet
Withdraw USDC
Chain ID 5042002
or
Base Sepolia
Withdraw USDC
Chain ID 84532
Deposit USDC on BSC → ZK proof relayed through Rings 6-node cluster → Withdraw on Base or Arc
All routes: trustless · no wrapped tokens · no centralized relayer · 4/6 BFT validated
4
Chains Supported
113
Multi-Chain Tests
~350ms
Arc Finality
2,385
New LOC Added
🚀 Get Started
Quick Start

Deploy your own bridge instance or interact with the live Sepolia deployment.

Terminal — deploy to Sepolia
# 1. Clone ASI:BUILD git clone https://github.com/web3guru888/asi-build.git cd asi-build pip install -e ".[dev]" # 2. Set environment variables export SEPOLIA_RPC_URL="https://ethereum-sepolia-rpc.publicnode.com" export DEPLOYER_PRIVATE_KEY="0x..." # Fund with Sepolia ETH first # 3. Deploy contracts (uses Foundry forge or Python fallback) python scripts/deploy_sepolia.py --method forge --network sepolia # Output: # Groth16Verifier: 0x9186fc5e27c15aEDbA2512687F2eF2E5aC7C0e59 # RingsBridge: 0xE034d479EDc2530d9917dDa4547b59bF0964A2Ca # BridgedToken: 0x257dDA1fa34eb847060EcB743E808B65099FB497
Terminal — deposit ETH via bridge
# Deposit 0.1 ETH to bridge (Sepolia → Rings Network) # Your Rings DID is the destination address export BRIDGE="0xE034d479EDc2530d9917dDa4547b59bF0964A2Ca" export RINGS_DID="0x..." # Your rings DID (bytes32) # Using Foundry cast: cast send $BRIDGE \ "deposit(bytes32)" $RINGS_DID \ --value 0.1ether \ --rpc-url "https://ethereum-sepolia-rpc.publicnode.com" # Using Python bridge CLI: python scripts/bridge_cli.py deposit \ --amount 0.1 \ --rings-did $RINGS_DID \ --network sepolia # Monitor deposit status: python scripts/bridge_cli.py status --tx <tx_hash>
Terminal — withdraw from Rings Network
# Withdraw 0.1 ETH from Rings Network back to Ethereum # Requires a ZK proof of the withdrawal commitment # 1. Initiate withdrawal on Rings side python scripts/bridge_cli.py withdraw \ --amount 0.1 \ --eth-recipient 0xYourEthAddress # 2. Wait for validator committee to generate proof (~30-60s) # Requires 4/6 validators to sign the withdrawal commitment # 3. Submit proof to Ethereum (auto via relayer, or manually): python scripts/bridge_cli.py finalize \ --proof withdrawal_proof.json \ --network sepolia # 4. Or use the Foundry method (advanced): cast send $BRIDGE "withdraw(bytes,bytes32,address,uint256)" \ $PROOF $COMMITMENT $RECIPIENT $AMOUNT \ --rpc-url "https://ethereum-sepolia-rpc.publicnode.com"
Terminal — run bridge relayer
# Start the bridge relayer — watches for deposits, generates proofs # The relayer joins the 6-node validator cluster automatically export VALIDATOR_KEY="0x..." # Your validator private key export RINGS_NODE_URL="node0.rings.asi-build.org" # Start full relayer mode (monitors + proves + submits) python scripts/bridge_cli.py relayer start \ --network sepolia \ --node $RINGS_NODE_URL \ --key $VALIDATOR_KEY \ --prover simulated # or 'sp1' for real ZK proofs # Monitor relayer status: python scripts/bridge_cli.py relayer status # Check cluster health: python scripts/bridge_cli.py cluster status
Terminal — run bridge tests
# Run the full bridge test suite (912+ tests) # All bridge + ZK + multi-chain tests: pytest tests/test_bridge/ tests/test_zk/ tests/test_multichain/ -v # Phase-specific tests: pytest tests/test_bridge/ -v -k "phase1" # DID + protocol (188 tests) pytest tests/test_bridge/ -v -k "phase2" # Contracts + E2E (157 tests) pytest tests/test_zk/ -v # ZK circuits + provers (323 tests) pytest tests/test_ledger/ -v # Token Ledger (131 tests) pytest tests/test_multichain/ -v # Multi-Chain (113 tests) # ZK component unit tests: pytest tests/test_zk/test_circuits.py -v # BLS+MPT+Withdrawal circuits pytest tests/test_zk/test_bls.py -v # BLS12-381 keygen+aggregate pytest tests/test_zk/test_ssz.py -v # SSZ encode/merkleize # Expected output: # 912+ passed, 0 failed, 0 errors # 25,000+ LOC tested across 4 chains (Sepolia, BSC, Base, Arc)
Terminal — Token Ledger agent payments
# Token Ledger: agent-to-agent payments on Rings # 1. Check agent balance python scripts/bridge_cli.py ledger balance \ --agent $MY_RINGS_DID \ --token ETH # 2. Transfer tokens to another agent python scripts/bridge_cli.py ledger transfer \ --from $MY_RINGS_DID \ --to $RECIPIENT_DID \ --amount 0.01 \ --token ETH # Status: PROPOSED → ATTESTING (4/6 validators) → FINALIZED # 3. Run ledger tests pytest tests/test_ledger/ -v # 131 passed, 0 failed — double-spend prevention, replay protection, consensus