Ava Protocol EigenLayer AVS Explained
An in-depth explanation of the Ava Protocol EigenLayer AVS, covering its architecture, setup, and operational guidelines.
Overview#
The Ava Protocol AVS (Actively Validated Service) can be compiled directly using Go version 1.22+. Ensure you have the appropriate version of Go installed in your development environment.
How It Works#
User Wallet#
For each owner, an ERC6900 wallet is deployed to schedule tasks and approve spending. Each task type has its corresponding modular code to represent its condition and actual execution.
Aggregator#
The aggregator accepts RPC requests from clients to submit task payloads. Currently, the Ava Protocol team manages and runs the aggregator. Periodically, the aggregator combines task submissions, updates internal storage, and writes a zkSNARK proof back to our TaskManager contract.
The aggregator also accepts task condition check results from the operator, performs quorum and consensus checks, and flags tasks as ready to run.
Aggregator Address#
The Ava Protocol team currently manages the aggregator. Depending on whether you are on the testnet or mainnet, point your operator to the appropriate address in the operator configuration file.
Holesky Testnet#
- AVS node: aggregator-holesky.avaprotocol.org:2206
- API Explorer: https://api-explorer-holesky.avaprotocol.org/
Mainnet#
- AVS node: aggregator.avaprotocol.org:2206
- API Explorer: https://api-explorer.avaprotocol.org/
Operators#
Operators communicate with aggregators via RPC. They request task data from the aggregator, execute condition checks, and send results back to the aggregator. For tasks deemed ready to run, operators execute them. Detailed information on task execution through our ERC6900 modular wallet will be available soon.
Setting Up#
Check Go Version#
Verify the installed Go version:
go version
Compile Ava Protocol AVS#
Compile the AVS using the following command:
go build -o ap-avs
You can then run the ap-avs binary. We strive to use pure Go, allowing cross-compilation for any architecture supported by the Go compiler.
Running the Operator#
Refer to the operator documentation for detailed instructions.
Running the Aggregator#
To run the aggregator, use the following command:
ap-avs aggregator
Note: The Ava Protocol team currently manages the aggregator, and the IP address for communication between the operator and the aggregator is hardcoded in the operator.
Telemetry Dashboard#
Operators connected to the Ava Protocol aggregator can monitor their operations on the telemetry dashboard.
Testnet#
https://aggregator-holesky.avaprotocol.org/telemetry
Mainnet#
https://aggregator.avaprotocol.org/telemetry
Development Guide#
Refer to the development documentation.
Dependencies#
EigenLayer CLI#
Install the EigenLayer CLI with the following command:
curl -sSfL https://raw.githubusercontent.com/layr-labs/eigenlayer-cli/master/scripts/install.sh | sh -s
Golang#
Install Go with the following command:
brew install go
Foundry Toolchain#
Install the Foundry toolchain with the following commands:
curl -L https://foundry.paradigm.xyz | bash
foundryup
Protobuf Compiler#
Install the Protobuf compiler with the following command:
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
Contract address
Holesky Testnet#
Name | Address |
---|---|
ProxyAdmin | 0x26CF7A7DF7d1E00D83A5Ca24385f697a3ca4577d |
ServiceManager | 0xEA3E82F9Ae371A6a372A6DCffB1a9bD17e0608eF |
RegistryCoordinator | 0x90c6d6f2A78d5Ce22AB8631Ddb142C03AC87De7a |
BLSApkRegistry | 0x6752F8BeeE5BF45c9d11FDBC4F8aFfF879925585 |
IndexRegistry | 0x298a5d3C8F8Db30E8292C9e2BF92292de469C8FF |
OperatorStateRetriever | 0xb7bb920538e038DFFEfcB55caBf713652ED2031F |
PauserRegistry | 0x3A8ea6e4202CdDe4a9e0cCE19c4Dc1739ba2cF0b |
StakeRegistry | 0x7BacD5dd5A7C3acf8bf1a3c88fB0D00B68EE626A |
ApConfig | 0xb8abbb082ecaae8d1cd68378cf3b060f6f0e07eb |
Ethereum Mainnet#
Name | Address |
---|---|
ProxyAdmin | 0x5989934D31f7f397511f105B7E4175a06B7A517F |
ServiceManager | 0x18343Aa10e3D2F3A861e5649627324aEAD987Adf |
RegistryCoordinator | 0x8DE3Ee0dE880161Aa0CD8Bf9F8F6a7AfEeB9A44B |
BLSApkRegistry | 0xB58687fF303C8e92C28a484342755d3228081d45 |
IndexRegistry | 0xc6A464e39d4fA5013D61295501c7cCd050d76612 |
OperatorStateRetriever | 0xb3af70D5f72C04D1f490ff49e5aB189fA7122713 |
PauserRegistry | 0xeec585186c37c517030ba371deac5c17e728c135 |
StakeRegistry | 0x363b3604fE8c2323a98c00906115c8b87a512a12 |
TaskManager | 0x940f62f75cbbbd723d37c9171dc681dfba653b49 |
ApConfig | 0x9c02dfc92eea988902a98919bf4f035e4aaefced |