{
"addresses": {
"ethereum": [
{
"name": "NitroValidator",
"isVerified": true,
"address": "eth:0x0119bC52a09Ac6e7998378BadC16D0e9A866Be56",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Validates AWS Nitro enclave attestations against the certificate chain verified by the CertManager.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0119bC52a09Ac6e7998378BadC16D0e9A866Be56#code"
},
{
"name": "SwapEscrowFactory",
"isVerified": true,
"address": "eth:0x03b21BBa8e75A1BD0354c5ECbEC078cF59C85343",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Swap-on-withdraw: a withdrawal can pay DAI to a SwapEscrow clone whose route, recipient and tip are fixed in its address. Anyone can deploy and execute a funded clone to swap the DAI for USDC, USDT or ETH to the recipient.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x03b21BBa8e75A1BD0354c5ECbEC078cF59C85343#code"
},
{
"name": "FrozenNotesRefundVerifier",
"isVerified": true,
"address": "eth:0x0694fF404DDA586C73EfCe21f34fe084541BB877",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "UltraHonk verifier for a zk.money circuit with a hardcoded verification key.\n",
"description": "UltraHonk verifier for a zk.money refund circuit with a hardcoded verification key.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0694fF404DDA586C73EfCe21f34fe084541BB877#code"
},
{
"name": "RegistrationSIPA",
"isVerified": true,
"address": "eth:0x0934F010d59b552949DBe44AcBE5AFf0e32C8C34",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Implementation of zk.money registration addresses. Sweeping a funded clone registers the name through the current RegistrationController of the NameRegistry, pays the committed fees and deposits the rest into the PORTAL. The recipient's account can recover any funds from the clone.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0934F010d59b552949DBe44AcBE5AFf0e32C8C34#code"
},
{
"name": "RegistrationController",
"isVerified": true,
"address": "eth:0x10EB6fecD2DCE6DA55d25C355374c970D5D11E23",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Completes paid name registrations: deploys the user's L1 account, claims the name and writes the user record. Fees above the relayer fee go to an allowlisted beneficiary.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x10EB6fecD2DCE6DA55d25C355374c970D5D11E23#code"
},
{
"name": "OxideAccountFactory",
"isVerified": true,
"address": "eth:0x187d19EccBf2909AD3d71B798A8704D950b9C3ee",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Permissionless factory for deterministic L1 accounts. The implementation is immutable and there is no administrator.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x187d19EccBf2909AD3d71B798A8704D950b9C3ee#code"
},
{
"name": "Resolver",
"isVerified": true,
"address": "eth:0x3e9BcF7cCA4b94885aBEB9Bbf0005aA99DC6307F",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "ENS resolver for zk.money names. It returns a deposit address derived from a resolver operator's answer, which must come with a zk proof that it matches the user's registered keys and L2 address in the AccountMetadataRegistry.\n* Roles:\n * **ensNodeOwner**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3e9BcF7cCA4b94885aBEB9Bbf0005aA99DC6307F#code"
},
{
"name": "UnprocessedDepositRefundVerifier",
"isVerified": true,
"address": "eth:0x5C487AEb500BD0fE65fe52Be7e55a150c3220FA5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "UltraHonk verifier for a zk.money circuit with a hardcoded verification key.\n",
"description": "UltraHonk verifier for a zk.money refund circuit with a hardcoded verification key.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5C487AEb500BD0fE65fe52Be7e55a150c3220FA5#code"
},
{
"name": "FrozenDepositRefundVerifier",
"isVerified": true,
"address": "eth:0xa2fd594dCA2d598aF231d615E5D34903154C3cCe",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "UltraHonk verifier for a zk.money circuit with a hardcoded verification key.\n",
"description": "UltraHonk verifier for a zk.money refund circuit with a hardcoded verification key.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa2fd594dCA2d598aF231d615E5D34903154C3cCe#code"
},
{
"name": "NameRegistry",
"isVerified": true,
"address": "eth:0xa9863B8F573D62377d987ccb9AF6e0000f99D14a",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Registry of zk.money names. It points to the RegistrationController and the AccountMetadataRegistry, which together decide where payments to a zk.money name resolve to.\n* Roles:\n * **domainOwner**: EOA 2\n * **owner**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa9863B8F573D62377d987ccb9AF6e0000f99D14a#code"
},
{
"name": "ResolverVerifier",
"isVerified": true,
"address": "eth:0xbF058D54c5033F4cB45c6E1Eba103CaeF232E451",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "UltraHonk verifier for a zk.money circuit with a hardcoded verification key.\n",
"description": "UltraHonk verifier for the zk.money resolver circuit with a hardcoded verification key. The Resolver uses it to check that a resolver operator's answer matches the user's registered keys and L2 address.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbF058D54c5033F4cB45c6E1Eba103CaeF232E451#code"
},
{
"name": "PlainWithdrawalExecutor",
"isVerified": true,
"address": "eth:0xC2363b7155EE8391C5395B72C46a6d22BF49151c",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Default payout contract for withdrawals and refunds. Only the PORTAL can call it. It pays the recipient and relayer tip committed on Aztec.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC2363b7155EE8391C5395B72C46a6d22BF49151c#code"
},
{
"name": "SIPAFactory",
"isVerified": true,
"address": "eth:0xc357E34D4C7520a83C9Ec0a242Ba52b4ecABa1Fc",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Deploys zk.money deposit addresses (SIPAs) as deterministic clones. The implementation per portal and intent is blessed once by the owner and cannot be changed afterwards.\n* Roles:\n * **owner**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc357E34D4C7520a83C9Ec0a242Ba52b4ecABa1Fc#code"
},
{
"name": "OxideAccount",
"isVerified": true,
"address": "eth:0xdA0D7cD0f49cE7b1D04bf03eE56374a8981c2844",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable implementation of users' L1 accounts. The bootstrap key authorizes the first passkey. Once a passkey is installed, only the user's passkeys can authorize operations and manage keys. The last passkey cannot be removed. Deposit recovery checks signatures against this account.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xdA0D7cD0f49cE7b1D04bf03eE56374a8981c2844#code"
},
{
"name": "AccountMetadataRegistry",
"isVerified": true,
"address": "eth:0xDA79Bae4485c40291363D885Aae5B543d2D0Efa9",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Stores user records (Aztec L2 address, keys, chosen resolver operator) and resolver operator entries. User records can be written by the user or by the RegistrationController. Anyone can register as a resolver operator.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDA79Bae4485c40291363D885Aae5B543d2D0Efa9#code"
},
{
"name": "ZkMoneyPortal",
"isVerified": true,
"address": "eth:0xdf410ad448A0f7165181FBdB32f8896f4a0d9449",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Escrow of zk.money on the Aztec Network. A withdrawal needs both a proven Aztec L2->L1 message from the zk.money L2 contract and a signature from a registered TEE signer. Anyone can register a TEE signer with a fresh AWS Nitro attestation of an approved enclave image. Once the Aztec Registry's canonical rollup is no longer ROLLUP, anyone can permanently freeze the portal, stopping deposits and fixing the refund snapshot at the last proven checkpoint. Withdrawals within the frozen checkpoint and epoch bounds remain available alongside refunds that need a zk proof and a TEE signature. L2 transfers are not disabled but do not change refundable ownership.\n* Roles:\n * **teeSigners**: EOA 3, EOA 4",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xdf410ad448A0f7165181FBdB32f8896f4a0d9449#code"
},
{
"name": "CertManager",
"isVerified": true,
"address": "eth:0xdfe52FD98aa0Cc8Ce7778a2b00ac7B7Dc9595875",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies and caches AWS Nitro attestation certificates. The only trust anchor is the hardcoded AWS Nitro root certificate.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xdfe52FD98aa0Cc8Ce7778a2b00ac7B7Dc9595875#code"
},
{
"name": "OperationExecutor",
"isVerified": true,
"address": "eth:0xe883686d9EC4E0430f2233A6BF12B2D226a39e19",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Permissionless helper that executes a call and forwards the resulting token payout to the caller. Used by finalizers to collect fees and subsidies.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe883686d9EC4E0430f2233A6BF12B2D226a39e19#code"
},
{
"name": "SwapEscrow",
"isVerified": true,
"address": "eth:0xf16Fd140036925e3a0630d0F743204a4c7d8ccaf",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "SwapEscrow implementation. A clone swaps via the Curve 3pool (and Uniswap for ETH) with a slippage bound of 100 bps for stablecoins and 200 bps against the Chainlink ETH/USD price for ETH. If the swap cannot execute, only the recovery key committed in the clone's address can move the funds.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf16Fd140036925e3a0630d0F743204a4c7d8ccaf#code"
},
{
"name": "DepositSIPA",
"isVerified": true,
"address": "eth:0xF714D8Cf287F4A410b018514074A9371BC45461b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Implementation of zk.money deposit addresses. Anyone can sweep a funded clone, which swaps USDC or USDT to DAI, pays DEPOSIT_FEE to the relayer and deposits the rest into the PORTAL for the recipient fixed in the clone's address. The recipient's account can recover any funds from the clone.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF714D8Cf287F4A410b018514074A9371BC45461b#code"
},
{
"name": "FPCFunderDAI",
"isVerified": true,
"address": "eth:0x37cD81C39Bf276ea7e1c6a416A254f688c70eAFb",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Collects the portal's funding cut. Anyone can swap it to AZTEC and bridge it as Fee Juice to the zk.money fee-paying contract on Aztec (L2_BENEFICIARY), which pays L2 fees for users.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x37cD81C39Bf276ea7e1c6a416A254f688c70eAFb#code"
}
]
},
"risks": [],
"zkVerifiers": [
"eth:0x0694fF404DDA586C73EfCe21f34fe084541BB877",
"eth:0xa2fd594dCA2d598aF231d615E5D34903154C3cCe",
"eth:0x5C487AEb500BD0fE65fe52Be7e55a150c3220FA5",
"eth:0xbF058D54c5033F4cB45c6E1Eba103CaeF232E451"
]
}