[
{
"layer": {
"value": "EigenDA",
"sentiment": "warning",
"description": "The data is posted to EigenDA which is a separate data availability layer developed by the Eigenlayer team. Only commitments to the data are published on an onchain inbox.",
"projectId": "eigenda"
},
"bridge": {
"value": "DACert Verifier",
"sentiment": "warning",
"description": "EigenDA V3 certificates are verified by the proof system through the DACert Verifier contract, which validates certificates against operator signatures and stake thresholds.",
"projectId": "eigenda-v2"
"projectId": "eigenda"
},
"mode": {
"value": "Transaction data",
"secondLine": "Compressed"
}
}
]
eigenda+82-2757
daBridge+75-1
null
{
"daLayer": "eigenda",
"name": "DACert Verifier (EigenDA V2)",
"relayerType": {
"value": "SelfRelay",
"sentiment": "good",
"description": "In EigenDA V2 secure integrations, the rollup batcher includes the DA certificate on L1, no separate third-party relayer is required."
},
"risks": {
"committeeSecurity": {
"value": "Permissioned",
"sentiment": "warning",
"description": "The committee requires an honest minority (less than 1/3) of members (or the network stake) to prevent the DA bridge from accepting an unavailable data commitment.\n There are 74 operators currently registered in the committee, but entry or exit of members is partially controlled by a centralized entity.",
"orderHint": 1
},
"upgradeability": {
"value": "No delay",
"sentiment": "bad",
"description": "There is no delay in the upgradeability of the bridge. Users have no time to exit the system before the bridge implementation update is completed."
},
"relayerFailure": {
"value": "Self propose",
"sentiment": "good",
"description": "Anyone can relay data availability commitments to the DA bridge. In case of current relayer failure, users can collect attestations from committee members and propose new data availability commitments to the DA bridge."
}
},
"technology": {
"description": "## EigenDA V2 Architecture\n\nEigenDA V2 introduces a more efficient architecture where the L2 sequencer acts as the relayer, eliminating the need for separate permissioned relayers:\n\n- **Sequencer as Relayer**: The sequencer acts as the relayer, eliminating the need for separate permissioned relayers\n- **Direct Certificate Verification**: Multiple DACert Verifier contracts handle different certificate versions (V2, V3). These contracts read operator/state metadata via EigenDA and EigenLayer core contracts (incl. ServiceManager components) and verify signatures and stake thresholds.\n- **Version-Specific Verification**: Each certificate version has a corresponding verifier contract that validates the specific certificate format and cryptographic proofs\n\n### Certificate Types and Verifiers\nEigenDA V2 supports multiple certificate formats:\n\n- **V2 Certificates**: Contain blob inclusion info, batch headers, and non-signer stakes with signatures. Verified through EigenDACertVerifierV2 contracts.\n- **V3 Certificates**: Similar structure to V2 but with reordered fields for optimization. Verified through EigenDACertVerifierV3 contracts.\n\n### Verification Process\n1. **Certificate Construction**: The EigenDA client constructs certificates from BlobStatusReply data received from the disperser\n2. **Version Detection**: The certificate version is determined from the commitment structure \n3. **Verifier Selection**: The appropriate DACert Verifier contract is selected based on the certificate version using the EigenDACertVerifierRouter\n4. **Onchain Verification**: The verifier contract's checkDACert function validates the certificate against operator signatures and stake thresholds\n\n### Secure Dispersal Flow\nBased on the EigenDA integration spec:\n\n1. EigenDA Client converts raw payload bytes into a blob\n2. Client fetches the appropriate EigenDACertVerifier contract address using the router\n3. Client submits blob request to disperser and polls for BlobStatusReply\n4. Once confirmation thresholds are met, client constructs the DACert from the reply\n5. Client calls the verifier's checkDACert function for onchain verification\n6. Based on verification status, client either returns the certificate or initiates failover\n\n### Router-Based Verifier Selection\nEigenDA V2 uses the EigenDACertVerifierRouter to dynamically select the appropriate verifier contract:\n- The router maps certificate versions to their corresponding verifier contracts\n- This allows for seamless upgrades and support for multiple certificate formats\n- The client queries the router using the latest block number to get the verifier for the reference block\n\nThis architecture provides improved throughput and eliminates single points of failure while maintaining the same security guarantees as V1.",
"references": [
{
"title": "EigenDA Integration Spec - Lifecycle Phases",
"url": "https://layr-labs.github.io/eigenda/integration/spec/5-lifecycle-phases.html#secure-dispersal"
},
{
"title": "EigenDA - Documentation",
"url": "https://docs.eigenda.xyz/overview"
},
{
"title": "EigenDA Disperser - Source Code",
"url": "https://github.com/Layr-Labs/eigenda/blob/2ed86a0c1dd730b56c8235031c19e08a9837bde8/disperser/batcher/batcher.go"
}
],
"risks": [
{
"category": "Funds can be lost if",
"text": "the sequencer posts an invalid certificate and EigenDA operators do not make the data available for verification."
},
{
"category": "Funds can be frozen if",
"text": "the EigenDACertVerifierRouter fails to provide correct verifier contract addresses."
}
]
},
"usedIn": [
{
"id": "celo",
"name": "Celo",
"slug": "celo"
},
{
"id": "rise",
"name": "RISE",
"slug": "rise"
},
{
"id": "roninnetwork",
"name": "Ronin",
"slug": "ronin-network"
}
],
"validationType": {
"value": "BLS Signature",
"description": "EigenDA V2 certificates require onchain BLS signatures verification through dedicated DACert Verifier contracts. Each certificate version corresponds to a specific verifier that validates the certificate format and proofs."
}
}
{
"badges": [],
"description": "EigenDA V2 DACert Verifier provides certificate verification for EigenDA V2 with improved architecture where the sequencer acts as relayer.",
"links": {
"websites": [
"https://www.eigenda.xyz/"
],
"documentation": [
"https://docs.eigenda.xyz/overview"
],
"repositories": [
"https://github.com/Layr-Labs/eigenda"
],
"explorers": [
"https://blobs.eigenda.xyz/"
],
"socialMedia": [
"https://x.com/eigen_da",
"https://discord.com/invite/eigenlayer"
]
}
}
colors+0-1
null
ecosystemColors+0-1
null
milestones+0-1
null
chainConfig+0-1
null
escrows+0-1
null
bridgeInfo+0-1
null
bridgeRisks+0-1
null
bridgeTechnology+0-1
null
scalingInfo+0-1
null
scalingStage+0-1
null
scalingRisks+0-1
null
scalingDa+0-1
null
scalingTechnology+0-1
null
daLayer+0-1
null
daBridge+0-75
{
"daLayer": "eigenda",
"name": "DACert Verifier (EigenDA V2)",
"relayerType": {
"value": "SelfRelay",
"sentiment": "good",
"description": "In EigenDA V2 secure integrations, the rollup batcher includes the DA certificate on L1, no separate third-party relayer is required."
},
"risks": {
"committeeSecurity": {
"value": "Permissioned",
"sentiment": "warning",
"description": "The committee requires an honest minority (less than 1/3) of members (or the network stake) to prevent the DA bridge from accepting an unavailable data commitment.\n There are 74 operators currently registered in the committee, but entry or exit of members is partially controlled by a centralized entity.",
"orderHint": 1
},
"upgradeability": {
"value": "No delay",
"sentiment": "bad",
"description": "There is no delay in the upgradeability of the bridge. Users have no time to exit the system before the bridge implementation update is completed."
},
"relayerFailure": {
"value": "Self propose",
"sentiment": "good",
"description": "Anyone can relay data availability commitments to the DA bridge. In case of current relayer failure, users can collect attestations from committee members and propose new data availability commitments to the DA bridge."
}
},
"technology": {
"description": "## EigenDA V2 Architecture\n\nEigenDA V2 introduces a more efficient architecture where the L2 sequencer acts as the relayer, eliminating the need for separate permissioned relayers:\n\n- **Sequencer as Relayer**: The sequencer acts as the relayer, eliminating the need for separate permissioned relayers\n- **Direct Certificate Verification**: Multiple DACert Verifier contracts handle different certificate versions (V2, V3). These contracts read operator/state metadata via EigenDA and EigenLayer core contracts (incl. ServiceManager components) and verify signatures and stake thresholds.\n- **Version-Specific Verification**: Each certificate version has a corresponding verifier contract that validates the specific certificate format and cryptographic proofs\n\n### Certificate Types and Verifiers\nEigenDA V2 supports multiple certificate formats:\n\n- **V2 Certificates**: Contain blob inclusion info, batch headers, and non-signer stakes with signatures. Verified through EigenDACertVerifierV2 contracts.\n- **V3 Certificates**: Similar structure to V2 but with reordered fields for optimization. Verified through EigenDACertVerifierV3 contracts.\n\n### Verification Process\n1. **Certificate Construction**: The EigenDA client constructs certificates from BlobStatusReply data received from the disperser\n2. **Version Detection**: The certificate version is determined from the commitment structure \n3. **Verifier Selection**: The appropriate DACert Verifier contract is selected based on the certificate version using the EigenDACertVerifierRouter\n4. **Onchain Verification**: The verifier contract's checkDACert function validates the certificate against operator signatures and stake thresholds\n\n### Secure Dispersal Flow\nBased on the EigenDA integration spec:\n\n1. EigenDA Client converts raw payload bytes into a blob\n2. Client fetches the appropriate EigenDACertVerifier contract address using the router\n3. Client submits blob request to disperser and polls for BlobStatusReply\n4. Once confirmation thresholds are met, client constructs the DACert from the reply\n5. Client calls the verifier's checkDACert function for onchain verification\n6. Based on verification status, client either returns the certificate or initiates failover\n\n### Router-Based Verifier Selection\nEigenDA V2 uses the EigenDACertVerifierRouter to dynamically select the appropriate verifier contract:\n- The router maps certificate versions to their corresponding verifier contracts\n- This allows for seamless upgrades and support for multiple certificate formats\n- The client queries the router using the latest block number to get the verifier for the reference block\n\nThis architecture provides improved throughput and eliminates single points of failure while maintaining the same security guarantees as V1.",
"references": [
{
"title": "EigenDA Integration Spec - Lifecycle Phases",
"url": "https://layr-labs.github.io/eigenda/integration/spec/5-lifecycle-phases.html#secure-dispersal"
},
{
"title": "EigenDA - Documentation",
"url": "https://docs.eigenda.xyz/overview"
},
{
"title": "EigenDA Disperser - Source Code",
"url": "https://github.com/Layr-Labs/eigenda/blob/2ed86a0c1dd730b56c8235031c19e08a9837bde8/disperser/batcher/batcher.go"
}
],
"risks": [
{
"category": "Funds can be lost if",
"text": "the sequencer posts an invalid certificate and EigenDA operators do not make the data available for verification."
},
{
"category": "Funds can be frozen if",
"text": "the EigenDACertVerifierRouter fails to provide correct verifier contract addresses."
}
]
},
"usedIn": [
{
"id": "celo",
"name": "Celo",
"slug": "celo"
},
{
"id": "rise",
"name": "RISE",
"slug": "rise"
},
{
"id": "roninnetwork",
"name": "Ronin",
"slug": "ronin-network"
}
],
"validationType": {
"value": "BLS Signature",
"description": "EigenDA V2 certificates require onchain BLS signatures verification through dedicated DACert Verifier contracts. Each certificate version corresponds to a specific verifier that validates the certificate format and proofs."
}
}
customDa+0-1
null
zkCatalogInfo+0-1
null
interopConfig+0-1
null
privacyInfo+0-1
null
tvsInfo+0-1
null
tvsConfig+0-1
null
activityConfig+0-1
null
livenessInfo+0-1
null
livenessConfig+0-1
null
costsInfo+0-1
null
trackedTxsConfig+0-1
null
daTrackingConfig+0-1
null
ecosystemInfo+0-1
null
ecosystemConfig+0-1
null
permissions+0-308
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "EigenDAOperationsMultisig",
"name": "EigenDAOperationsMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can upgrade **with no delay**\n * StakeRegistry [via: ProxyAdmin]\n * BLSApkRegistry [via: ProxyAdmin]\n * RegistryCoordinator [via: ProxyAdmin]\n * EjectionManager [via: ProxyAdmin]\n * EigenDACertVerifierRouter [via: ProxyAdmin]\n * SocketRegistry [via: ProxyAdmin]\n * EigenDADisperserRegistry [via: ProxyAdmin]\n * EigenDAServiceManager [via: ProxyAdmin]\n * PaymentVault [via: ProxyAdmin]\n * IndexRegistry [via: ProxyAdmin]\n * EigenDARelayRegistry [via: ProxyAdmin]\n * EigenDAThresholdRegistry [via: ProxyAdmin]\n* Can interact with RegistryCoordinator\n * can add and remove strategies \n* Can interact with EigenDAServiceManager\n * can transfer ownership of the contract, update the metadata URI, set reward initiator and set batch confirmer ",
"accounts": [
{
"address": "eth:0x002721B4790d97dC140a049936aA710152Ba92D5",
"type": "Contract",
"isVerified": true,
"name": "0x0027…92D5",
"url": "https://etherscan.io/address/0x002721B4790d97dC140a049936aA710152Ba92D5"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xB646A0871af2b2c6e115b24D7E36d406780b6ca8",
"type": "EOA",
"isVerified": true,
"name": "0xB646…6ca8",
"url": "https://etherscan.io/address/0xB646A0871af2b2c6e115b24D7E36d406780b6ca8"
},
{
"address": "eth:0xA3e302a6Ea0cf79B8580d94e92Eb5514292daacE",
"type": "EOA",
"isVerified": true,
"name": "0xA3e3…aacE",
"url": "https://etherscan.io/address/0xA3e302a6Ea0cf79B8580d94e92Eb5514292daacE"
},
{
"address": "eth:0x1b6cC4C0670bBA2B992b82Cb8E76B286D63264c6",
"type": "EOA",
"isVerified": true,
"name": "0x1b6c…64c6",
"url": "https://etherscan.io/address/0x1b6cC4C0670bBA2B992b82Cb8E76B286D63264c6"
},
{
"address": "eth:0x403F4d4958409480502CdC78a54cE1B67263C17a",
"type": "EOA",
"isVerified": true,
"name": "0x403F…C17a",
"url": "https://etherscan.io/address/0x403F4d4958409480502CdC78a54cE1B67263C17a"
},
{
"address": "eth:0x891bbCfEF0C7504218b3156Cd0795cA5C8c7d489",
"type": "EOA",
"isVerified": true,
"name": "0x891b…d489",
"url": "https://etherscan.io/address/0x891bbCfEF0C7504218b3156Cd0795cA5C8c7d489"
}
],
"discoveryDrivenData": true
},
{
"id": "PauserRegistry",
"name": "PauserRegistry",
"accounts": [
{
"address": "eth:0x0c431C66F4dE941d089625E5B423D00707977060",
"type": "Contract",
"isVerified": true,
"name": "0x0c43…7060",
"url": "https://etherscan.io/address/0x0c431C66F4dE941d089625E5B423D00707977060"
}
],
"chain": "ethereum",
"description": "Defines and stores pauser and unpauser roles for EigenDA contracts.\n* Can interact with EigenDAServiceManager\n * can pause the DA bridge ",
"discoveryDrivenData": true
},
{
"id": "EigenLayerRewardsInitiatorMultisig",
"name": "EigenLayerRewardsInitiatorMultisig",
"description": "A Multisig with 3/4 threshold. \n* Can interact with EigenDAServiceManager\n * can create rewards submissions ",
"accounts": [
{
"address": "eth:0x178eeeA9E0928dA2153A1d7951FBe30CF8371b8A",
"type": "Contract",
"isVerified": true,
"name": "0x178e…1b8A",
"url": "https://etherscan.io/address/0x178eeeA9E0928dA2153A1d7951FBe30CF8371b8A"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x900a9E1D5D5980973f513173249727505FA3bd22",
"type": "EOA",
"isVerified": true,
"name": "0x900a…bd22",
"url": "https://etherscan.io/address/0x900a9E1D5D5980973f513173249727505FA3bd22"
},
{
"address": "eth:0x5dc74815C14E2D4223B79D2dE94C4ccD5f5f7DA7",
"type": "EOA",
"isVerified": true,
"name": "0x5dc7…7DA7",
"url": "https://etherscan.io/address/0x5dc74815C14E2D4223B79D2dE94C4ccD5f5f7DA7"
},
{
"address": "eth:0x55688D9211bC00BA573A1e0672e5de050818a360",
"type": "EOA",
"isVerified": true,
"name": "0x5568…a360",
"url": "https://etherscan.io/address/0x55688D9211bC00BA573A1e0672e5de050818a360"
},
{
"address": "eth:0x68bbBD6c18B0bc1B563489A13a398345E9da23d0",
"type": "EOA",
"isVerified": true,
"name": "0x68bb…23d0",
"url": "https://etherscan.io/address/0x68bbBD6c18B0bc1B563489A13a398345E9da23d0"
}
],
"discoveryDrivenData": true
},
{
"id": "EigenDA Multisig",
"name": "EigenDA Multisig",
"description": "A Multisig with 3/8 threshold. \n* Can interact with EjectionManager\n * can eject DA operators from a quorum ",
"accounts": [
{
"address": "eth:0x338477FfaF63c04AC06048787f910671eC914B34",
"type": "Contract",
"isVerified": true,
"name": "0x3384…4B34",
"url": "https://etherscan.io/address/0x338477FfaF63c04AC06048787f910671eC914B34"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x9308319e3988843f36BC6682Ffa571525E56a125",
"type": "EOA",
"isVerified": true,
"name": "0x9308…a125",
"url": "https://etherscan.io/address/0x9308319e3988843f36BC6682Ffa571525E56a125"
},
{
"address": "eth:0x5262498E7D4fbbb08425b2a06D91157acDC50aDA",
"type": "EOA",
"isVerified": true,
"name": "0x5262…0aDA",
"url": "https://etherscan.io/address/0x5262498E7D4fbbb08425b2a06D91157acDC50aDA"
},
{
"address": "eth:0x995152ee7BB6304565Fbe04465d2c4D1BdD5683F",
"type": "EOA",
"isVerified": true,
"name": "0x9951…683F",
"url": "https://etherscan.io/address/0x995152ee7BB6304565Fbe04465d2c4D1BdD5683F"
},
{
"address": "eth:0xA38372470ed4c3C4bb5123CC7f335212950e350A",
"type": "EOA",
"isVerified": true,
"name": "0xA383…350A",
"url": "https://etherscan.io/address/0xA38372470ed4c3C4bb5123CC7f335212950e350A"
},
{
"address": "eth:0x44aC63d4e18c0d24d0EDe1C058D5A93Fc2fbB904",
"type": "EOA",
"isVerified": true,
"name": "0x44aC…B904",
"url": "https://etherscan.io/address/0x44aC63d4e18c0d24d0EDe1C058D5A93Fc2fbB904"
},
{
"address": "eth:0x3C20b05f44ef008A5b848761e58e5Ca9594163e9",
"type": "EOA",
"isVerified": true,
"name": "0x3C20…63e9",
"url": "https://etherscan.io/address/0x3C20b05f44ef008A5b848761e58e5Ca9594163e9"
},
{
"address": "eth:0xA4f7168cEa82877B23Bc55a7fd7557D546F4dD31",
"type": "EOA",
"isVerified": true,
"name": "0xA4f7…dD31",
"url": "https://etherscan.io/address/0xA4f7168cEa82877B23Bc55a7fd7557D546F4dD31"
},
{
"address": "eth:0x542aC639c0DeF0a468aed462B474FF9B7858Bd7E",
"type": "EOA",
"isVerified": true,
"name": "0x542a…Bd7E",
"url": "https://etherscan.io/address/0x542aC639c0DeF0a468aed462B474FF9B7858Bd7E"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1,-EOA-2-and-EOA-4",
"name": "EOA 1, EOA 2 and EOA 4",
"accounts": [
{
"address": "eth:0x454Ef2f69f91527856E06659f92a66f464C1ca4e",
"type": "EOA",
"isVerified": true,
"name": "0x454E…ca4e",
"url": "https://etherscan.io/address/0x454Ef2f69f91527856E06659f92a66f464C1ca4e",
"displayName": "EOA 1"
},
{
"address": "eth:0x5A49Bf6c5690E22dFff3eB37F7dd18254eC361ED",
"type": "EOA",
"isVerified": true,
"name": "0x5A49…61ED",
"url": "https://etherscan.io/address/0x5A49Bf6c5690E22dFff3eB37F7dd18254eC361ED",
"displayName": "EOA 2"
},
{
"address": "eth:0x8ED83c6Bb12E441Ca2C3a544F525d4a3Fb6484D8",
"type": "EOA",
"isVerified": true,
"name": "0x8ED8…84D8",
"url": "https://etherscan.io/address/0x8ED83c6Bb12E441Ca2C3a544F525d4a3Fb6484D8",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with EigenDAServiceManager\n * can confirm batches to the DA bridge ",
"discoveryDrivenData": true
},
{
"id": "EOA-3-and-EOA-5",
"name": "EOA 3 and EOA 5",
"accounts": [
{
"address": "eth:0x8642473a123FE33b0aaE90bD8604eA1029417236",
"type": "EOA",
"isVerified": true,
"name": "0x8642…7236",
"url": "https://etherscan.io/address/0x8642473a123FE33b0aaE90bD8604eA1029417236",
"displayName": "EOA 3"
},
{
"address": "eth:0xD2Ee81Cf07B12140C793FcE5B26313CDd9d78eA8",
"type": "EOA",
"isVerified": true,
"name": "0xD2Ee…8eA8",
"url": "https://etherscan.io/address/0xD2Ee81Cf07B12140C793FcE5B26313CDd9d78eA8",
"displayName": "EOA 5"
}
],
"chain": "ethereum",
"description": "* Can interact with EjectionManager\n * can eject DA operators from a quorum ",
"discoveryDrivenData": true
},
{
"id": "EOA-6",
"name": "EOA 6",
"accounts": [
{
"address": "eth:0xe0550117Cb066D3b330eBd764B0d75D3BA378734",
"type": "EOA",
"isVerified": true,
"name": "0xe055…8734",
"url": "https://etherscan.io/address/0xe0550117Cb066D3b330eBd764B0d75D3BA378734",
"displayName": "EOA 6"
}
],
"chain": "ethereum",
"description": "* Can interact with RegistryCoordinator\n * can approve the replacement of churned operators from a quorum ",
"discoveryDrivenData": true
},
{
"id": "EOA-7",
"name": "EOA 7",
"accounts": [
{
"address": "eth:0xe8437B66E834B7CdC90cC5D98B8DD6e636b37D7a",
"type": "EOA",
"isVerified": true,
"name": "0xe843…7D7a",
"url": "https://etherscan.io/address/0xe8437B66E834B7CdC90cC5D98B8DD6e636b37D7a",
"displayName": "EOA 7"
}
],
"chain": "ethereum",
"description": "* Can interact with EigenDARelayRegistry\n * Can store and serve both unencoded blobs as well as encoded chunks ",
"discoveryDrivenData": true
},
{
"id": "EOA-8",
"name": "EOA 8",
"accounts": [
{
"address": "eth:0xF3d7C0D52fF8f4CF74A3CD9C53778516f4235bE9",
"type": "EOA",
"isVerified": true,
"name": "0xF3d7…5bE9",
"url": "https://etherscan.io/address/0xF3d7C0D52fF8f4CF74A3CD9C53778516f4235bE9",
"displayName": "EOA 8"
}
],
"chain": "ethereum",
"description": "* Can interact with EigenDADisperserRegistry\n * Can disperse EigenDA blobs to the EigenDA node operators ",
"discoveryDrivenData": true
}
]
}
}
contracts+0-623
{
"addresses": {
"ethereum": [
{
"name": "StakeRegistry",
"isVerified": true,
"address": "eth:0x006124Ae7976137266feeBFb3F4D2BE4C073139D",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0x1C468cf7089D263c2f53e2579b329B16aBc4dd96"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712353799,
"transactionHash": "0x67b4fa469020a02fb0ab975c67604ada64cb11cdb170d44a3108cc67a9037bad",
"implementations": [
"eth:0x1f96861fEFa1065a5A96F20Deb6D8DC3ff48F7f9"
]
},
{
"timestamp": 1712353799,
"transactionHash": "0xb72070366da1397312ab26f2128e3be250c3f9b8fa7164694e55d052f8d9f8ac",
"implementations": [
"eth:0x1C468cf7089D263c2f53e2579b329B16aBc4dd96"
]
}
],
"description": "Keeps track of the total stake of each operator.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x006124Ae7976137266feeBFb3F4D2BE4C073139D#code"
},
{
"name": "BLSApkRegistry",
"isVerified": true,
"address": "eth:0x00A5Fd09F6CeE6AE9C8b0E5e33287F7c82880505",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0x5d0B9cE2e277Daf508528E9f6Bf6314E79e4eD2b"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712353799,
"transactionHash": "0xd0aab9a017adecfb4a605cd0c0790eaa6776e15054ddae552970406fc2320dd8",
"implementations": [
"eth:0x1f96861fEFa1065a5A96F20Deb6D8DC3ff48F7f9"
]
},
{
"timestamp": 1712353799,
"transactionHash": "0x02bfebfdc5898228aafc5da844daeea8bc9c810ee1ee17f555d46da13247f13c",
"implementations": [
"eth:0x5d0B9cE2e277Daf508528E9f6Bf6314E79e4eD2b"
]
}
],
"description": "Keeps track of the BLS public keys of each operator and the quorum aggregated keys.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x00A5Fd09F6CeE6AE9C8b0E5e33287F7c82880505#code"
},
{
"name": "RegistryCoordinator",
"isVerified": true,
"address": "eth:0x0BAAc79acD45A023E19345c352d8a7a83C4e5656",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0x2088435ABcB1234A9427B755931C9064C93a2595"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712353787,
"transactionHash": "0x3a9b2c12f66b0acc238c64eebdf84faee5e7539710be705584432368f1724d7f",
"implementations": [
"eth:0x1f96861fEFa1065a5A96F20Deb6D8DC3ff48F7f9"
]
},
{
"timestamp": 1712353799,
"transactionHash": "0x6a6489dbfbe688c34d924a3e86de303d3d427dc328652e931926333729f242be",
"implementations": [
"eth:0xd3e09a0c2A9A6FDf5E92aE65D3CC090A4dF8EECF"
]
},
{
"timestamp": 1721834291,
"transactionHash": "0x28e327c2afc40ceec4bbc6e6a960b2f7744632a20e48da93c657bdd82c92bf5c",
"implementations": [
"eth:0xdcabf0bE991d4609096CCe316df08d091356E03F"
]
},
{
"timestamp": 1748556275,
"transactionHash": "0xfa483d640a2793a223b75e6a2c6fb8f9eaa2a1c0df1e6ca69d7d332251981282",
"implementations": [
"eth:0x2088435ABcB1234A9427B755931C9064C93a2595"
]
}
],
"description": "Operators register here with an AVS: The coordinator has three registries: 1) a `StakeRegistry` that keeps track of operators' stakes, 2) a `BLSApkRegistry` that keeps track of operators' BLS public keys and aggregate BLS public keys for each quorum, 3) an `IndexRegistry` that keeps track of an ordered list of operators for each quorum.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig\n * **churnApprover**: EOA 6\n * **owner**: EigenDAOperationsMultisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0BAAc79acD45A023E19345c352d8a7a83C4e5656#code"
},
{
"name": "EjectionManager",
"isVerified": true,
"address": "eth:0x130d8EA0052B45554e4C99079B84df292149Bd5E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0xC125fECDDabFe13f29EB287Bb8551892AEE7C98A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1715347895,
"transactionHash": "0xb9f7f80114bf8e8fa3092fb298aa8aae1bccbb04b36516667396b5b12a6a23e0",
"implementations": [
"eth:0x1f96861fEFa1065a5A96F20Deb6D8DC3ff48F7f9"
]
},
{
"timestamp": 1715347895,
"transactionHash": "0xd04d3d0dbf04adf100c0edbe832d60786758b828ce9073e205b8ab3675864d32",
"implementations": [
"eth:0x1A27AC48D40F70213Ae6ec64f66852e0A1a0E6fa"
]
},
{
"timestamp": 1723045967,
"transactionHash": "0x7dcee857c6f42698dd0db59a3032770cdffa8607b6902fee32f3d498991df44a",
"implementations": [
"eth:0x33A517608999DF5CEfFa2b2EbA88B4461c26Af6f"
]
},
{
"timestamp": 1748556275,
"transactionHash": "0xfa483d640a2793a223b75e6a2c6fb8f9eaa2a1c0df1e6ca69d7d332251981282",
"implementations": [
"eth:0xC125fECDDabFe13f29EB287Bb8551892AEE7C98A"
]
}
],
"description": "Contract used for ejection of operators from the RegistryCoordinator for violating the Service Legal Agreement (SLA).\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig\n * **ejectors**: EOA 3, EOA 5, EigenDA Multisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x130d8EA0052B45554e4C99079B84df292149Bd5E#code"
},
{
"name": "SocketRegistry",
"isVerified": true,
"address": "eth:0x5a3eD432f2De9645940333e4474bBAAB8cf64cf2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0x5b60105ceD5207D6ad217BF2d426e133454eCFB4"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1733339723,
"transactionHash": "0xac0215d6889603e179b545d19d00944d5655764c4763ef724ffd7956b4d346b2",
"implementations": [
"eth:0x5b60105ceD5207D6ad217BF2d426e133454eCFB4"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5a3eD432f2De9645940333e4474bBAAB8cf64cf2#code"
},
{
"name": "EigenDADisperserRegistry",
"isVerified": true,
"address": "eth:0x78cb05379a3b66E5227f2C1496432D7FFE794Fad",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0x7DECf99BE82Ea4Cf72F381a5fCBc04228955FBE5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1744750295,
"transactionHash": "0x19a69477f502e4c9c6ffa34582f15519fcd131c25e889864b5ce976d865bacd2",
"implementations": [
"eth:0x7DECf99BE82Ea4Cf72F381a5fCBc04228955FBE5"
]
}
],
"description": "Registry for EigenDA disperser info such as disperser key to address mapping.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig\n * **dispersers**: EOA 8",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x78cb05379a3b66E5227f2C1496432D7FFE794Fad#code"
},
{
"name": "EigenDAServiceManager",
"isVerified": true,
"address": "eth:0x870679E138bCdf293b7Ff14dD44b70FC97e12fc0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0xae448D008B6F69033AfdA361b46b36C472B6FEE0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712353787,
"transactionHash": "0x0742f1a4d072fc85fe39830a9d21536bf3e09c0ce5a7571cab93bd85d09ff576",
"implementations": [
"eth:0x1f96861fEFa1065a5A96F20Deb6D8DC3ff48F7f9"
]
},
{
"timestamp": 1712353799,
"transactionHash": "0xb51ad742d1c13af667acb1608d33790a5dcc4970153a6ac2f415390b16fb485e",
"implementations": [
"eth:0xF5fD25A90902c27068CF5eBe53Be8da693Ac899e"
]
},
{
"timestamp": 1715289191,
"transactionHash": "0xb40a6884127043977ba87604e5b6a7447b7f8e6fa88b3ab3d940507c8e1c92d8",
"implementations": [
"eth:0x26089e9738b809d8308B0011B93b4225a112DB8C"
]
},
{
"timestamp": 1716321419,
"transactionHash": "0x43cca617c25c2c5ac4164bdfbeedb8dbf7325056844893fe61bb9e2034ebad1e",
"implementations": [
"eth:0xCDFFF07d5b8AcdAd13607615118a2e65030f5be1"
]
},
{
"timestamp": 1722701675,
"transactionHash": "0xfacff9a26f07d7ae55c6b9fc80059faa016f249c4624841cfcd43c34717cbaf7",
"implementations": [
"eth:0x0D2C5FD4Bb956cDD48A23fC3Ef77a768a5cDbAf7"
]
},
{
"timestamp": 1726582631,
"transactionHash": "0xaedce35d052ceaed37943107a78d8fb3d833ac5619edeab62a8772d67afaaff9",
"implementations": [
"eth:0x58fDE694Db83e589ABb21A6Fe66cb20Ce5554a07"
]
},
{
"timestamp": 1748556275,
"transactionHash": "0xfa483d640a2793a223b75e6a2c6fb8f9eaa2a1c0df1e6ca69d7d332251981282",
"implementations": [
"eth:0xae448D008B6F69033AfdA361b46b36C472B6FEE0"
]
}
],
"description": "Bridge contract that accepts blob batches data availability attestations. Batches availability is attested by EigenDA operators signatures and relayed to the service manager contract by the EigenDA disperser.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig\n * **batchConfirmers**: EOA 1, EOA 2, EOA 4\n * **owner**: EigenDAOperationsMultisig\n * **pauserRegistry**: PauserRegistry\n * **rewardsInitiator**: EigenLayerRewardsInitiatorMultisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x870679E138bCdf293b7Ff14dD44b70FC97e12fc0#code"
},
{
"name": "PaymentVault",
"isVerified": true,
"address": "eth:0xb2e7ef419a2A399472ae22ef5cFcCb8bE97A4B05",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0x62242213E6FA34E943844f9B3124150EFb9CB0dD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1744750295,
"transactionHash": "0x359ca1fa527881edba34879bf633971940ab7addc0c00d96eebbe318fb3f8bd5",
"implementations": [
"eth:0x62242213E6FA34E943844f9B3124150EFb9CB0dD"
]
}
],
"description": "Entrypoint for making reservations and on demand payments for EigenDA.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb2e7ef419a2A399472ae22ef5cFcCb8bE97A4B05#code"
},
{
"name": "IndexRegistry",
"isVerified": true,
"address": "eth:0xBd35a7a1CDeF403a6a99e4E8BA0974D198455030",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0x1ae0b73118906f39D5ED30Ae4A484ce2F479a14c"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712353799,
"transactionHash": "0xfebe64f00a8d96fe319e7b388f6cf4c4fb343dac129610a1c978f2ffc2e70a36",
"implementations": [
"eth:0x1f96861fEFa1065a5A96F20Deb6D8DC3ff48F7f9"
]
},
{
"timestamp": 1712353799,
"transactionHash": "0x59468c0a593e95396455fade35463fcff5e9e310e1da5fef0de8f9ad00645acc",
"implementations": [
"eth:0x1ae0b73118906f39D5ED30Ae4A484ce2F479a14c"
]
}
],
"description": "A registry contract that keeps track of an ordered list of operators for each quorum.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xBd35a7a1CDeF403a6a99e4E8BA0974D198455030#code"
},
{
"name": "EigenDARelayRegistry",
"isVerified": true,
"address": "eth:0xD160e6C1543f562fc2B0A5bf090aED32640Ec55B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0xF6D82FBBdf700c086389e72C3023812e956ECa9e"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1744750223,
"transactionHash": "0x5542d5049911c1b3f1a3d0e2f2c861a7e473c817622998049b78529202e6a374",
"implementations": [
"eth:0xF6D82FBBdf700c086389e72C3023812e956ECa9e"
]
}
],
"description": "Registry for EigenDA relay keys, maps key to address.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig\n * **relayers**: EOA 7",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD160e6C1543f562fc2B0A5bf090aED32640Ec55B#code"
},
{
"name": "EigenDAThresholdRegistry",
"isVerified": true,
"address": "eth:0xdb4c89956eEa6F606135E7d366322F2bDE609F15",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0x92104977f16dAe423966caa5cD9C115F2D25a8D6"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1744750211,
"transactionHash": "0x903e00f79e1b98e13ebbc40db4c023249e3dca47685bd30ad86962d60aa83292",
"implementations": [
"eth:0x92104977f16dAe423966caa5cD9C115F2D25a8D6"
]
}
],
"description": "Registry of EigenDA threshold (i.e, adversary and confirmation threshold percentage for a quorum)\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xdb4c89956eEa6F606135E7d366322F2bDE609F15#code"
},
{
"name": "EigenDACertVerifierRouter",
"isVerified": true,
"address": "eth:0x1be7258230250Bc6a4548F8D59d576a87D216C12",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8247EF5705d3345516286B72bFE6D690197C2E99"
],
"implementations": [
"eth:0xff35F7DC73F7fA664910Ab58200dFD4129F1D9E0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1751656319,
"transactionHash": "0x5488e95653a4fee14a5d79879453d85348aa9cf73ee1ac692af8b2b15f669f60",
"implementations": [
"eth:0xff35F7DC73F7fA664910Ab58200dFD4129F1D9E0"
]
}
],
"description": "A router contract for DA Certificate verifiers. Verifier routing depends on the certificate reference block number.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EigenDAOperationsMultisig",
"upgradableBy": [
{
"name": "EigenDAOperationsMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1be7258230250Bc6a4548F8D59d576a87D216C12#code"
},
{
"name": "EigenDACertVerifier",
"isVerified": true,
"address": "eth:0x46766C6426eF4D3092f73F72660A8b7B510E6846",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A DA verifier contract for EigenDA V2 certificates. The verifier is used to verify the certificate against operator signatures and stake thresholds.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x46766C6426eF4D3092f73F72660A8b7B510E6846#code"
},
{
"name": "EigenDACertVerifier",
"isVerified": true,
"address": "eth:0x61692e93b6B045c444e942A91EcD1527F23A3FB7",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A DA verifier contract for EigenDA V2 certificates. The verifier is used to verify the certificate against operator signatures and stake thresholds.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x61692e93b6B045c444e942A91EcD1527F23A3FB7#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x8247EF5705d3345516286B72bFE6D690197C2E99",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EigenDAOperationsMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8247EF5705d3345516286B72bFE6D690197C2E99#code"
},
{
"name": "EigenDACertVerifier",
"isVerified": true,
"address": "eth:0xD2e690d08Db56Fb648B1340457281EDE7b6F53FE",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD2e690d08Db56Fb648B1340457281EDE7b6F53FE#code"
},
{
"name": "EigenDACertVerifier",
"isVerified": true,
"address": "eth:0xE1Ae45810A738F13e70Ac8966354d7D0feCF7BD6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A legacy DACert verifier contract. It is used to verify v2 DA certificates. New verifiers should use the new verifier router contract.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE1Ae45810A738F13e70Ac8966354d7D0feCF7BD6#code"
},
{
"name": "OperatorStateRetriever",
"isVerified": true,
"address": "eth:0xEC35aa6521d23479318104E10B4aA216DBBE63Ce",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A contract for retrieving AVS operators state (e.g., quorum bitmaps, ordered operator lists, stakes, sockets, signatures indices—at) at a given block directly from on-chain registries.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEC35aa6521d23479318104E10B4aA216DBBE63Ce#code"
}
]
},
"risks": [
{
"category": "Funds can be lost if",
"text": "the EigenDACertVerifier or EigenDACertVerifierRouter contracts receive a malicious code upgrade and accept invalid certificates. There is no delay on code upgrades."
},
{
"category": "Funds can be lost if",
"text": "the EigenDAServiceManager (BLS signature verifier) contract receives a malicious code upgrade. There is no delay on code upgrades."
},
{
"category": "Funds can be lost if",
"text": "the EigenDA middleware contracts (StakeRegistry, BLSApkRegistry, RegistryCoordinator) receive a malicious code upgrade and report incorrect stake or keys to the cert verifier. There is no delay on code upgrades."
},
{
"category": "Funds can be lost if",
"text": "the EigenLayer EIGEN token contract receives a malicious code upgrade. There is a 10d delay on code upgrades."
},
{
"category": "Funds can be lost if",
"text": "the churn approver or ejectors act maliciously and eject EigenDA operators from a quorum without cause."
},
{
"category": "Funds can be lost if",
"text": "a sequencer posts an incorrect or malicious DA certificate that is accepted by the verifier contract."
}
]
}
discoveryInfo+0-1
null
archivedAt+0-1
null
hasTestnet+0-1
null
rise+1-1
scalingDa+1-1
[
{
"layer": {
"value": "EigenDA",
"sentiment": "warning",
"description": "The data is posted to EigenDA which is a separate data availability layer developed by the Eigenlayer team. Only commitments to the data are published on an onchain inbox.",
"projectId": "eigenda"
},
"bridge": {
"value": "DACert Verifier",
"sentiment": "warning",
"description": "EigenDA V3 certificates are verified by the proof system through the DACert Verifier contract, which validates certificates against operator signatures and stake thresholds.",
"projectId": "eigenda-v2"
"projectId": "eigenda"
},
"mode": {
"value": "Transaction data",
"secondLine": "Compressed"
}
}
]
roninnetwork+1-1
scalingDa+1-1
[
{
"layer": {
"value": "EigenDA",
"sentiment": "warning",
"description": "The data is posted to EigenDA which is a separate data availability layer developed by the Eigenlayer team. Only commitments to the data are published on an onchain inbox.",
"projectId": "eigenda"
},
"bridge": {
"value": "DACert Verifier",
"sentiment": "warning",
"description": "EigenDA V3 certificates are verified by the proof system through the DACert Verifier contract, which validates certificates against operator signatures and stake thresholds.",
"projectId": "eigenda-v2"
"projectId": "eigenda"
},
"mode": {
"value": "Transaction data",
"secondLine": "Compressed"
}
}
]