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#

EigenLayer AVS Diagram

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#

Mainnet#

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#

NameAddress
ProxyAdmin0x26CF7A7DF7d1E00D83A5Ca24385f697a3ca4577d
ServiceManager0xEA3E82F9Ae371A6a372A6DCffB1a9bD17e0608eF
RegistryCoordinator0x90c6d6f2A78d5Ce22AB8631Ddb142C03AC87De7a
BLSApkRegistry0x6752F8BeeE5BF45c9d11FDBC4F8aFfF879925585
IndexRegistry0x298a5d3C8F8Db30E8292C9e2BF92292de469C8FF
OperatorStateRetriever0xb7bb920538e038DFFEfcB55caBf713652ED2031F
PauserRegistry0x3A8ea6e4202CdDe4a9e0cCE19c4Dc1739ba2cF0b
StakeRegistry0x7BacD5dd5A7C3acf8bf1a3c88fB0D00B68EE626A
ApConfig0xb8abbb082ecaae8d1cd68378cf3b060f6f0e07eb

Ethereum Mainnet#

NameAddress
ProxyAdmin0x5989934D31f7f397511f105B7E4175a06B7A517F
ServiceManager0x18343Aa10e3D2F3A861e5649627324aEAD987Adf
RegistryCoordinator0x8DE3Ee0dE880161Aa0CD8Bf9F8F6a7AfEeB9A44B
BLSApkRegistry0xB58687fF303C8e92C28a484342755d3228081d45
IndexRegistry0xc6A464e39d4fA5013D61295501c7cCd050d76612
OperatorStateRetriever0xb3af70D5f72C04D1f490ff49e5aB189fA7122713
PauserRegistry0xeec585186c37c517030ba371deac5c17e728c135
StakeRegistry0x363b3604fE8c2323a98c00906115c8b87a512a12
TaskManager0x940f62f75cbbbd723d37c9171dc681dfba653b49
ApConfig0x9c02dfc92eea988902a98919bf4f035e4aaefced