Skip to content

Deployed Contracts

Canonical address registry for every contract zkde.fi has deployed or interacts with. Addresses are grouped by network and verified against deployment artifacts and live configuration.

Live verification: zkde.fi/test

Network layout

flowchart LR
  subgraph MAINNET["Starknet mainnet"]
    RR["ReceiptRegistry"]
    RA["ReceiptOS Archive"]
    SD["SelectiveDisclosure"]
  end
  subgraph EXTERNAL["Mainnet protocols"]
    EK["Ekubo DEX"] 
    VE["Vesu Lending"]
    MI["MIST Chamber"]
    SG["StarkGate Bridge"]
  end
  subgraph SEPOLIA["Starknet Sepolia"]
    VC["VaultController + Adapters"]
    AG["Agent system"]
    VR["Verifiers"]
    PP["Privacy pools"]
    GOV["Governance"]
  end
  subgraph ETH["Ethereum Sepolia"]
    EZ["EZKL Halo2Verifier"]
    BR["L1→L2 Bridge"]
  end
  subgraph L3["Madara L3"]
    FR["VerifiedFactRegistry"]
  end
  • Starknet mainnet — ReceiptOS attestation layer and selective disclosure. The backend reads mainnet chain state for portfolio scanning and reputation scoring. Swaps execute on mainnet Ekubo through the user's own wallet.
  • Starknet Sepolia — the full proof-gated execution pipeline. Vaults, adapters, verifiers, agent system, privacy pools, governance. This is the experimental infrastructure being brought to mainnet as PMF demand materialises.
  • Ethereum Sepolia — EZKL KZG verifier and L1→L2 bridge sender.
  • Madara L3 — dedicated appchain for proof fact registration.

Starknet mainnet

Our contracts

Deployed to mainnet. Confirmed via receiptos/integration/addresses.json (mainnet key) and frontend/.env.local (uses rpc.starknet.lava.build mainnet RPC + mainnet_receipts signer).

ContractAddressWhat it does
ReceiptRegistry0x048bfcab6cde939483a9a1f71ecadb1839bd4df9ae4d8fd3f4723fed0c8d4aacImmutable receipt attestations — every portfolio operation and passport export gets a receipt written here
ReceiptOS Archive0x0092494273b46b26d5c7684d41e2fc5c15a3b24a56507e410f1b8ee33c3dabdaPermanent archive for receipt metadata and attestation history
SelectiveDisclosure0x06cd41594720f786dbe8f5d371c6d209db28013d8a55c58079838d7f6fe74811Prove properties about your data without revealing it — used by the compliance panel. Set in NEXT_PUBLIC_SELECTIVE_DISCLOSURE_ADDRESS
How I verified these
  • receiptos/integration/addresses.json has a "mainnet" key with receipt_registry_v01 and receipt_archive_v01
  • frontend/.env.local sets RECEIPTOS_STARKNET_RPC=https://rpc.starknet.lava.build:443 (mainnet) and STARKNET_ACCOUNT=/root/.starkli-wallets/mainnet_receipts/account.json
  • frontend/.env.local and .env.production both set NEXT_PUBLIC_SELECTIVE_DISCLOSURE_ADDRESS to this address, and the backend default chain ID is 0x534e5f4d41494e (SN_MAIN)

What the backend reads on mainnet

The backend talks to Starknet mainnet by default (config.py defaults to rpc.starknet.lava.build:443, chain ID SN_MAIN). These services scan mainnet to power /portfolio and /passport:

ServiceWhat it readsSource
position_scanner.pyYour wallet's token balances and DeFi positions across Ekubo, Vesu, stakingmainnet RPC
reputation_scanner.pyOn-chain activity, transaction history, protocol interactionsmainnet RPC
onchain_activity_service.pyVesu positions, StarkGate bridge activity, noncemainnet RPC
cross_chain_fetcher.pyCross-chain position datamainnet RPC
ekubo_config.pyEkubo pool state, pricing, routesmainnet RPC

Mainnet token addresses

Hardcoded in frontend/src/components/portfolio/execution.ts:

TokenAddress
ETH0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7
STRK0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d
USDC0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8
WBTC0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac

External protocols (mainnet)

Third-party contracts the system interacts with. These are not ours — they're the DeFi protocols we route through.

ProtocolAddressSource in codebase
Ekubo Core0x00000005dd3D2F4429AF886cD1a3b08289DBcEa99A294197E9eB43b0e0325b4bekubo_config.pyEKUBO_CORE_MAINNET
Ekubo Router0x0199741822c2dc722f6f605204f35e56dbc23bceed54818168c4c49e4fb8737eekubo_config.pyEKUBO_ROUTER_MAINNET; execution.ts, privateExecutionWallet.ts
Vesu Lending0x00a84a2a04e4254e3b917afc7204d688c694b3e60e5e1c3c0e41c86cac42a87eonchain_activity_service.pyVESU_CORE
StarkGate ETH Bridge0x073314940630fd6dcda0d772d4c972c4e0a9946bef9dabf4ef84eda8ef542b82onchain_activity_service.pySTARKGATE_ETH_BRIDGE
MIST Cash Chamber0x06f8dcc500131b6be6b33f4534ec6d33df33e61083ec2b051555d52e75654444@mistcash/configCHAMBER_ADDR_MAINNET; useMistPrivacy.ts

Execution gates

Server-side mainnet execution is double-gated off by default. The rebalancer builds calldata and the user signs+submits through their own wallet directly. Server-side submission only activates with both flags:

GateDefaultEffect
EXECUTOR_LIVE_SUBMIT_MAINNETfalseBackend won't submit transactions to mainnet
EXECUTION_GATE_ALLOW_MAINNET_LIVEfalsePortfolio execution gate blocks mainnet live submission
REBALANCER_SIGNER_PRIVATE_KEYRequired for server-side signing when gates are open
RELAYER_DRY_RUNtrueRelayer defaults to dry-run mode

Starknet Sepolia

Everything below is on Starknet Sepolia. These contracts are the proof-gated execution pipeline that will be brought to mainnet as demand grows. Deploy scripts use api.cartridge.gg/x/starknet/sepolia RPC.

Core contracts

ContractAddressRole
ProofGatedYieldAgent0x012ebbddae869fbcaee91ecaa936649cc0c75756583ae4ef6521742f963562b3The main agent contract — gates yield operations on proof validity
SelectiveDisclosure0x00ab6791e84e2d88bf2200c9e1c2fb1caed2eecf5f9ae2989acf1ed3d00a0c77Prove properties about data without revealing it (Sepolia copy)
ConfidentialTransfer0x07fdc7c21ab074e7e1afe57edfcb818be183ab49f4bf31f9bf86dd052afefaa4Private token transfers with commitment/nullifier scheme
SessionKeyManager0x01c0edf8ff269921d3840ccb954bbe6790bb21a2c09abcfe83ea14c682931d68Session key grants and revocations for autonomous mode
IntentCommitment0x062027ceceb088ac31aa14fe7e180994a025ccb446c2ed8394001e9275321f70Commit-reveal pattern for execution intents
ComplianceProfile0x05aa72977c1984b5c61aee55a185b9caed9e9e42b62f2891d71b4c4cc6b96d93On-chain compliance profile storage
ZkmlVerifier0x068abd64a4a78172a5ee15a30bbe614257d62482f07d3ff7fdb72da5aad08923Verifies zkML circuit outputs
GaragaVerifier0x06d0cb7a48b48c5b6ca70f856d249caccea90f506ad7596a6838502fe3aa6d37Groth16 pairing check in Cairo — the SNARK lane verifier
ConstraintReceipt0x04c8756f9baf927aa6a85e9b725dd854215f82c65bd70076012f02fec8497954Immutable receipts that an operation met its constraints

Vault system + adapters

Deployed via scripts/deploy_vault_controller_system.py (Sepolia RPC). These form the proof-gated execution pipeline.

ContractAddressRole
VaultController (v3)0x2f29b985bc962f065160828296ab3889769a92a313d11077f186a81d0853b63Vault management — allocation, withdrawal, constraint enforcement
EkuboLpAdapter0x1f5e68f5470f2d316afdd057029438d950baa3dc59fc7060fd0a57ef88c4245Ekubo DEX LP — max 4000 bps
LendingAdapter0x2f76cf75ca90657b933686807884b3a1ffdc43347a9c5a053f2c2d108431357Lending protocol interactions — max 3500 bps
StakingAdapter0x66c048e79c11c5f3f94ad2a7f7cdd033e5cd5b5b3d207f6dd37cc22526edadfStaking protocol interactions — max 2500 bps
Deprecated adapters (wrong VaultController)

These were deployed 2026-03-05 against the old VaultController (0x6c5b17...). Replaced 2026-03-11.

ContractAddress
EkuboLpAdapter v10x74febeff7301aa58d786b01756e36f20ab7208a52ce94a82b425af8f9933a0
LendingAdapter v10x104f06b17e476bae294253ec1bba54dd4eaedd4f9d97468251fa6de62cfb90a
StakingAdapter v10x63b4f90d0f3373700e30624191651c2d2d301a11c544a463ffd66df320b85e3

Agent system

Deployed via scripts/deploy_agent_system.py (Sepolia RPC).

ContractAddressRole
ReputationRegistry0x10d00b33b5683afd776c58638a222aa10605d7eeafa95979b5246312b7e022On-chain reputation state for agents
ValidationProofRegistry0x20ea9a32eae3fe6fe5137ca9f576383f8723913e1619f17120cf1aeb7e06305Stores validation proof references
AllocationRouter0xabda1150d8fc9db11b99c8485d671c53bc2ad65fe21a8d218c1e621a85843bRoutes allocations to the right adapter
ConstraintReceipt0x59c5a05987025ee88e89cc266aadc17676db42ea4eb08c99099ed12f32b7607Constraint satisfaction receipts
BatchVerifier0x285f944aa5cb8f90fa37c4dbdf5dd1eb2e34ab0bde9669e61fbd7a9a0f3b869Batch proof verification
AgentIdentity0x7847f732db68d030526fdc9e461cfe4a0857d25303dc6635cf661206d0f06e8Agent identity management
TieredAgentController0x1c3e4e552f3bfd72c5973423870cace4cd7887b28a30c30a867a79b134d1107Tiered agent access control
AgentSkillRegistry0x6a039b4e59b39fc2ab44c3c70a5ecdbe765a9afabb4b2765f9bb966dfb6dddaRegisters agent capabilities and skill sets
AgentPerformanceStore0x67f10e598223c89135cd8b6a6f58b081e658069231b5a9064d29d5204d4c450Stores agent performance metrics

Reputation & governance

ContractAddressRole
ReceiptRegistry (Sepolia)0x02900291a932aa63f6510b9320e13fc25cf2dd7c2274ebe3a671ec6daecd83cdSepolia copy of receipt registry
ReceiptRegistry (Sepolia #2)0x0544ef8cbf8bf1ac7987bc0d2bb211434d515fbe10bab65f36e0f761c79bbdffFrom addresses.json sepolia key
ReceiptOS Archive (Sepolia)0x076f1e28238b1ce4640632be6df94fcf3ac8b85ba9ad1fac00ef2142f10a1054From addresses.json sepolia key
DAOConstraintManager0x0101bd9710017c0870077dcf03bf6fe68a955d9f9b9922ed5d673afed7497fc2Private DAO governance — emergency pause/unpause
ObsqraFactRegistry0x02009ab87f581a0a92f65906ce84664a5cfcb86f7266651f48a04fac3c62faa3Registers verified reputation proofs and other facts
SolvencyProofVerifier0x043b253e3f2fcac35eef0b08fd2f8f4ff81aeb52848f11640d62879854329c9bVerifies "I can pay what I owe" (Groth16)
RiskPassportTierVerifier0x05e71cc0c4b87908230414644d675164fb90cd6d8cfafeae87198241e60eb788Verifies risk tier attestation
TraderPerformanceVerifier0x04c8087855dd0812042de58b2a3f3838d3cea45118c86f07d32ac87648e90769Verifies historical trading performance
StrategyIntegrityVerifier0x00c9478f355bdad25caf13899a0d5bf2ee1accb1678e9934ebeda40f2653e549Verifies strategy constraint compliance
ExecutionIntegrityVerifier0x03bb26a38ea2d8e4bd21895f665d0056a5496f31ad84f4d77e040d9e63e6873bVerifies execution fairness

Privacy contracts

ContractAddress
FullPrivacyPoolV20x03dde5617d362a6f9202cd3955b4508e2bd6b1c5d35250153beeb6237c811559
FullyShieldedPool0x07fed6973cfc23b031c0476885ec87a401f1006bdc8ba58df2bd8611b38b5ff5

Ekubo Sepolia pools

Deployed via scripts/deploy_strkbtc_pools.py and deploy_zkd_pools.py (Sepolia RPC).

PoolStatus
strkBTC/ETHinitialized
strkBTC/STRKinitialized
zkdAI/zkdETHinitialized
STRK/zkdETHinitialized
zkdAI/STRKinitialized
ETH/zkdETHinitialized
zkdAI/ETHinitialized

Ethereum Sepolia

ContractAddressWhat it does
Halo2Verifier (EZKL KZG)0xF7b555ca4E54a8c7B9A0DDBFa17341575a852Ab9EZKL proof verification — the entry point of the SNARK lane on Ethereum
L1 EZKL Bridge Sender0x2a1b030f2835cB0ADC4ea271105e96da293853abSends verified proof facts from L1 to L2 via Starknet messaging

Madara L3

ContractAddressWhat it does
VerifiedFactRegistry0x5ed322b12ddc28d27b7797d79516ca285137f9bab9fde870191119b4c68d691Registers proof facts on the dedicated appchain — this is where pipeline receipts land

Contract interaction topology

Proof-gated execution (Sepolia)

flowchart TD
  User --> FE["Frontend"]
  FE --> BE["Backend API"]
  BE --> PG{"Generate proof"}
  PG --> FR["ObsqraFactRegistry"]
  FR --> VC["VaultController"]
  VC --> V{"Verify proof"}
  V -->|Valid| EX["Execute allocation"]
  V -->|Invalid| REJ["Reject"]
  EX --> RR["ReceiptRegistry"]
  RR --> RCPT["Immutable receipt"]

Portfolio execution (mainnet)

flowchart TD
  User --> FE["Frontend /portfolio"]
  FE --> BE["Backend API"]
  BE --> PS["position_scanner<br/>mainnet RPC"]
  PS --> REC["Build recommendation"]
  REC --> CD["Build Ekubo calldata"]
  CD --> FE2["Return to frontend"]
  FE2 --> W["User wallet signs"]
  W --> EK["Ekubo Router<br/>mainnet"]
  EK --> DONE["Receipt → ReceiptRegistry<br/>mainnet"]

Privacy vault (Sepolia)

flowchart LR
  DEP["Deposit"] --> FSP["FullyShieldedPool"]
  FSP --> MT["MerkleTree"]
  MT --> C["Store commitment"]
  WD["Withdraw"] --> HWP["HashedWithdrawPool"]
  HWP --> MT2["Verify merkle proof"]
  MT2 --> REL["Release funds"]

DAO governance (Sepolia)

flowchart TD
  P["Proposer"] --> CREATE["Create proposal"]
  CREATE --> DAO["DAOConstraintManager"]
  V["Voter"] --> ZKP{"ZK vote proof"}
  ZKP --> VOTE["Cast private vote"]
  VOTE --> DAO
  DAO --> TALLY["Tally"]
  TALLY -->|Passed| EXEC["Execute"]
  TALLY -->|Failed| ARCH["Archive"]
  EXEC --> VC["Update VaultController"]

Link here from other pages instead of duplicating contract tables. For the API surface and execution semantics, see API Reference. For the proving pipeline these contracts participate in, see Proof Pipeline.

Built by Obsqra Labs