Automata Multi-Prover AVS
APACHE-2.0 License
The Automata Multi-Prover AVS target to build a robust, fortified prover system through the use of diverse, decentralized TEE committees.
Read this blog to understand more about the Multi-Prover AVS.
Task definition: A state transition or computational process seeking to leverage the independent execution within a Trusted Execution Environment (TEE) to ascertain its correctness.
struct StateHeader {
uint256 identifier;
bytes metadata;
bytes state;
}
This is the structure of the state header submitted ty provers, below is the detailed explaination:
keccak256(abi.encodePacked(chainID, blockNumber))
is the metadata for the task to prove blockchain state at specific block heightThe architecture of the AVS contains:
Below is a detailed diagram of the workflow
sequenceDiagram
autonumber
participant O as Operator
participant A as Aggregator
participant EC as Eigenlayer Contracts
participant M as Multi-prover AVS
participant L as TEE Liveness Contract
participant AC as Attestation Contracts
Note over O,L: Operator registration
O->>EC: Restake and register to Multi-prover AVS
O->>L: Operator Liveness
Note over O,AC: Operator Liveness (Periodically)
loop Every liveness cycle
O->>O: Generate Attestation Report
O->>L: Submit Attesatation Report with pubkey(submitLivenessProof)
L->>+AC: Verify Attestation Report(verifyAttestation)
AC->>AC: Verify MrEncalve and MrSigner
AC->>AC: Verify QE Report
AC->>AC: Verify Quote CertChain
AC->>AC: Verify TCB
AC-->>-L: Return reportData(pubkey)
L->>L: Mark the operator(pubkey) as attested within the liveness cycle
end
Note over O,L: Proving state
O-->>O: Fetch task and calculate inside TEE
O->>A: Provide state and signature(submitTask)
A-->>EC: Fetch pubkey by OperaterId
A->>L: Fetch operator's validity (verifyLivenessProof)
L-->>A: Operator's validity
alt Is Valid TEE Prover
A-->>A: Wait and aggregate signatures
A->>M: Submit state and aggregated signatures
else Not Valid TEE Prover
A-->>O: Reject
end
Components:
The workflow is divided into two parts:
TEE Committee is a set of quorum that is responsible to handle a specific type of task. For example, proving the root state of Zk-Rollup at a particular block height. Operators do not need to actively choose a committee, but automatically belong to a committee by joining quorums. The introduction of TEE Committee
facilitates a more organized structuring of operators and tasks. And lays the groundwork for future enhancements, including the rewarding mechanism and constraints of stake distribution across quorums.
The concept of a TEE Quorum aligns with the quorum definition utilized by Eigenlayer, but each quorum is associated with a TEE platform, such as Intel SGX. Each quorum belongs to a committee, operators can choose to join any quorum, But only the votes from operators possessing the requisite attestation will be accepted by the aggregator.
Name | Proxy |
---|---|
MultiProverServiceManager | 0x4665Af665df5703445645D243f0FD63eD3b9D132 |
RegistryCoordinator | 0x62c715575cE3Ad7C5a43aA325b881c70564f2215 |
StakeRegistry | 0x5C7BbAfA3d5A3Fa0b592cDCF4b7B52261FaA99A8 |
BlsApkRegistry | 0x2b6C2584760eDbcEC42391862f97dBB872b5e2Eb |
IndexRegistry | 0x158583f023ca440e79F199f037aa8b53b198F500 |
OperatorStateRetriever | 0xbfd43ac0a19c843e44491c3207ea13914818E214 |
TEELivenessVerifier | 0x2E8628F6000Ef85dea615af6Da4Fd6dF4fD149e6 |
AutomataDcapV3Attestation | 0x5669FE82711052e1A0EE16eafCDAb49ffe02ab14 |
Please visit the Operator setup repository if you are interested in joining the Multi-Prover AVS on Holesky testnet. The onboarding guide is available here.
Name | Proxy |
---|---|
MultiProverServiceManager | 0xE5445838C475A2980e6a88054ff1514230b83aEb |
RegistryCoordinator | 0x414696E4F7f06273973E89bfD3499e8666D63Bd4 |
StakeRegistry | 0x4A4EC1631aE79699be7dCFD3fCA395Ab89c5eFe9 |
BlsApkRegistry | 0x61D25c9b943b893747Bd33F92B62Ec8270222e6F |
IndexRegistry | 0x16552d7863560Ee6903F092A901A9124a5013085 |
OperatorStateRetriever | 0x91246253d3Bff9Ae19065A90dC3AB6e09EefD2B6 |
TEELivenessVerifier | 0x8E26055388347A2f4A7a112A7210CcC88A1c2F30 |
AutomataDcapV3Attestation | 0xA65a18a7f8Bb621017Ec0481B7eFe37a006EbD93 |
The Multi-Prover AVS will launch on mainnet soon, please be patient!
go build -o out/operator ./cmd/operator
go build -o out/aggregator ./cmd/aggregator