Network
Operators evaluate, the gateway aggregates, challengers recompute every response, and a transporter carries the operator set to each destination chain.
Registered as a task generator on OperatorRegistry. Unlike challengers and transporters, the gateway set is enumerable on chain — additions and removals are events, and only a registered generator can create or respond to a task — all 23 of them, read from getAllTaskGenerators() rather than replayed, because every addition fired at AVS setup and no crawl reaches back that far. The timeouts and tolerance above are gateway.toml values with no on-chain source; everything else on this panel is derived from the tasks themselves.
Challenge submission is permissionless — raiseAndResolveChallenge has no caller restriction. A challenge that cannot prove a mismatch reverts, so nothing is ever pending and a zero invalidation count is the healthy result, not an idle one. There is no challenger registry — a challenger has no onchain state between actions, so what exists is a stream of challenges, not a roster. Browse challenges →
Destination chains
1 live · 0 whitelistedNot measured. A chain watcher leaves no on-chain trace, so nothing here can say whether one is running — which is different from knowing it is down.
A successful challenge on a destination chain invalidates the attestation there, then relays to the source chain for slashing — two transactions on two chains for one verdict.
AVS operators
stake-weighted · quorum 0 · threshold 40%Registry state, not health. Liveness shows in the missed and attestation rate columns — the registry only knows whether an operator is registered, exiting, or whitelisted and yet to join.
Contracts
21 deployed · 2 chains| Contract | Address | Indexed |
|---|---|---|
| TaskManager | 0xecb7…ed13 | NewTaskCreated(bytes32,(bytes32,address,bytes32,uint64,uint32,uint32,(address,address,uint256,bytes,uint256,bytes),bytes,(address,(bytes,uint32))[],bytes[],bytes,uint256)), TaskChallengedSuccessfully(bytes32,address), TaskChallengedUnsuccessfully(bytes32,address), TaskResponded((bytes32,address,bytes32,(address,address,uint256,bytes,uint256,bytes),bytes,bool,(bytes32,address,bytes,(bytes,bytes,uint32)[])[],uint256),(uint32,uint32,bytes32,bytes)), AttestationSpent(bytes32,(bytes32,bytes32,address,uint32,(address,address,uint256,bytes,uint256,bytes),bytes)), DirectTaskResponded(bytes32,(bytes32,address,bytes32,uint64,uint32,uint32,(address,address,uint256,bytes,uint256,bytes),bytes,(address,(bytes,uint32))[],bytes[],bytes,uint256),(bytes32,address,bytes32,(address,address,uint256,bytes,uint256,bytes),bytes,bool,(bytes32,address,bytes,(bytes,bytes,uint32)[])[],uint256)) |
| PolicyFactory | 0xe379…d0cd | PolicyDeployed(address,(address,address,string,string,string,string,string,string,bytes32),string) |
| PolicyClientRegistry | 0x0dbd…64dd | ClientRegistered(address,address) |
| BN254TableCalculator | 0x30d9…a799 | OperatorRegistered(address,(uint256,uint256),uint256[]), OperatorDeregistered(address), OperatorWeightsUpdated(address,uint256[],uint256[]), OperatorPubkeyUpdated(address,(uint256,uint256),(uint256,uint256)) |
| OperatorRegistryEpochGovernance | 0x8507…947a | EpochAdvanced(uint32,uint64,uint32), WhitelistAdditionQueued(address,uint32), WhitelistRemovalQueued(address,uint32), TaskGeneratorAdditionQueued(address,uint32), TaskGeneratorRemovalQueued(address,uint32), OperatorDeregistrationQueued(address,uint32), EpochDurationBlocksQueued(uint32,uint32) |
| OperatorRegistry | 0xbc61…46b2 | TaskGeneratorAdded(address), TaskGeneratorRemoved(address), OperatorWhitelisted(address,bool) |
| EnclaveVersionRegistry | 0x373d…098d | EnclaveVersionActivated(bytes32,string), EnclaveVersionDeprecated(bytes32), EnclaveKeyRegistered(address,bytes32) |
| SocketRegistry | 0xae59…71b1 | not read |
| ChallengeVerifier | 0x5aee…0956 | TeeAttestationChallenged(bytes32,address), CrossChainChallengeRelayed(uint256,bytes32,address) |
| InstantSlasher | 0x774e…4a08 | OperatorSlashed(uint256,address,uint32,uint256[],string) |
| AttestationValidator | 0x26f4…429c | DirectTaskResponded(bytes32,(bytes32,address,bytes32,uint64,uint32,uint32,(address,address,uint256,bytes,uint256,bytes),bytes,(address,(bytes,uint32))[],bytes[],bytes,uint256),(bytes32,address,bytes32,(address,address,uint256,bytes,uint256,bytes),bytes,bool,(bytes32,address,bytes,(bytes,bytes,uint32)[])[],uint256)) |
| Contract | Address | Indexed |
|---|---|---|
| TaskManager | 0xa5e1…0071 | NewTaskCreated(bytes32,(bytes32,address,bytes32,uint64,uint32,uint32,(address,address,uint256,bytes,uint256,bytes),bytes,(address,(bytes,uint32))[],bytes[],bytes,uint256)), TaskChallengedSuccessfully(bytes32,address), TaskChallengedUnsuccessfully(bytes32,address), TaskResponded((bytes32,address,bytes32,(address,address,uint256,bytes,uint256,bytes),bytes,bool,(bytes32,address,bytes,(bytes,bytes,uint32)[])[],uint256),(uint32,uint32,bytes32,bytes)), AttestationSpent(bytes32,(bytes32,bytes32,address,uint32,(address,address,uint256,bytes,uint256,bytes),bytes)), DirectTaskResponded(bytes32,(bytes32,address,bytes32,uint64,uint32,uint32,(address,address,uint256,bytes,uint256,bytes),bytes,(address,(bytes,uint32))[],bytes[],bytes,uint256),(bytes32,address,bytes32,(address,address,uint256,bytes,uint256,bytes),bytes,bool,(bytes32,address,bytes,(bytes,bytes,uint32)[])[],uint256)) |
| PolicyFactory | 0x4302…c59c | PolicyDeployed(address,(address,address,string,string,string,string,string,string,bytes32),string) |
| PolicyClientRegistry | 0x2a7b…9b0d | ClientRegistered(address,address) |
| OperatorRegistryEpochGovernance | 0x12c3…1cc5 | EpochAdvanced(uint32,uint64,uint32), WhitelistAdditionQueued(address,uint32), WhitelistRemovalQueued(address,uint32), TaskGeneratorAdditionQueued(address,uint32), TaskGeneratorRemovalQueued(address,uint32), OperatorDeregistrationQueued(address,uint32), EpochDurationBlocksQueued(uint32,uint32) |
| OperatorRegistry | 0x9f63…4f7f | TaskGeneratorAdded(address), TaskGeneratorRemoved(address), OperatorWhitelisted(address,bool) |
| EnclaveVersionRegistry | 0x4280…eb21 | EnclaveVersionActivated(bytes32,string), EnclaveVersionDeprecated(bytes32), EnclaveKeyRegistered(address,bytes32) |
| TableUpdater | 0xafbe…a80f | NewGlobalTableRoot(uint32,bytes32) |
| SocketRegistry | 0xf042…20d7 | not read |
| ChallengeVerifier | 0x768a…e807 | TeeAttestationChallenged(bytes32,address), CrossChainChallengeRelayed(uint256,bytes32,address) |
| AttestationValidator | 0xf345…54e5 | DirectTaskResponded(bytes32,(bytes32,address,bytes32,uint64,uint32,uint32,(address,address,uint256,bytes,uint256,bytes),bytes,(address,(bytes,uint32))[],bytes[],bytes,uint256),(bytes32,address,bytes32,(address,address,uint256,bytes,uint256,bytes),bytes,bool,(bytes32,address,bytes,(bytes,bytes,uint32)[])[],uint256)) |
Addresses come from the indexer’s chain registry rather than a constant in the build, so a redeploy is a row change and this list follows it. A chain with no contracts deployed appears above as whitelisted, not here. One stream is missing from the table by nature: PoliciesUpdated is emitted by each policy client itself, so it is crawled by topic across every address rather than from one.
Enclave versions
onchain whitelist · 0 active| Version | PCR0 hash | Activated | Deprecated | Operators |
|---|