The Operator is a key component in the EigenLayer-AVS system that monitors blockchain events, blocks, and time-based triggers.
The Operator is a key component in the EigenLayer-AVS system that monitors blockchain events, blocks, and time-based triggers. It acts as a sentinel that watches for predefined conditions and reports them to the Aggregator for task execution. The Operator component integrates with EigenLayer for distributed validation and ensures secure communication using BLS signatures.
For information about task execution after conditions are detected, see Task Engine and for aggregation of trigger notifications, see Aggregator.
The Operator node performs several critical functions in the EigenLayer-AVS architecture:
Sources:
The Operator component is designed with a modular architecture consisting of the following key components:
Worker Loop: The central event processing system that listens for triggers and communicates with the Aggregator
Trigger Engines:
BLS Signature System: Supports either local key pairs or remote signing via a service
Registration Manager: Handles operator registration with EigenLayer AVS
Alias Key Manager: Supports using alternative signing keys
Sources:
The Operator is configured via a YAML configuration file that specifies connection parameters, blockchain endpoints, and feature flags. The main configuration structure is defined in OperatorConfig.
Key configuration parameters include:
| Parameter | Description | Example |
|---|---|---|
operator_address | Ethereum address of the operator | 0x123...abc |
avs_registry_coordinator_address | Address of the AVS Registry Coordinator contract | 0x456...def |
eth_rpc_url | Ethereum JSON-RPC endpoint URL | https://ethereum-sepolia.publicnode.com |
eth_ws_url | Ethereum WebSocket endpoint URL | wss://ethereum-sepolia.publicnode.com |
ecdsa_private_key_store_path | Path to ECDSA private key file | /keys/operator.key |
aggregator_server_ip_port_address | gRPC address of the Aggregator | 127.0.0.1:8090 |
bls_private_key_store_path | Path to BLS private key file | /keys/bls.key |
enable_metrics | Whether to enable Prometheus metrics | true |
enabled_features.event_trigger | Whether to enable event trigger monitoring | true |
The configuration supports two modes for BLS signing:
Example configuration for remote signing:
Sources:
The worker loop is the central processing system of the Operator. It initializes the trigger engines, establishes a connection to the Aggregator, and processes trigger notifications.
The worker loop performs these key functions:
Sources:
The Operator uses three types of trigger engines to monitor different conditions:
Monitors for specific block numbers or block intervals. When a target block is reached, it sends a notification through the blockTriggerCh channel.
Monitors blockchain events based on contract addresses, topics, and event signatures. When a matching event is detected, it sends a notification through the eventTriggerCh channel. This engine is optional and can be disabled in the configuration.
Monitors for time-based triggers:
When a time trigger condition is met, it sends a notification through the timeTriggerCh channel.
Sources:
Before an Operator can start monitoring triggers, it must be registered with the EigenLayer AVS system. This registration process involves:
The registration process uses the EigenLayer SDK to register the operator in the specified quorum. By default, operators join quorum number 0.
The RegisterOperatorWithAvs method handles this registration process, using the operator's ECDSA private key and BLS keypair to generate the necessary signatures.
Sources:
Operators can check their status and deregister from the AVS if needed:
The Status command queries on-chain data to provide information about the operator:
The DeregisterFromAVS command allows an operator to leave the AVS network by deregistering from the quorum.
Sources:
The Operator supports using alias keys for signing operations. This allows the operator's main address to remain secure while using a different key for day-to-day signing operations.
The CreateOrImportAliasKey function allows operators to:
Once an alias key is created, the operator must declare it on-chain by calling the DeclareAlias function, which:
If an operator wants to stop using an alias, they can call RemoveAlias to:
Sources:
The Operator communicates with the Aggregator using gRPC. This communication includes:
Messages sent to the Aggregator are authenticated using:
The Operator sends several types of messages to the Aggregator:
The Operator maintains a persistent gRPC stream with the Aggregator through the StreamMessages method, which:
Sources:
For secure communication, the Operator uses BLS signatures which can be generated in two ways:
When configured with a local BLS key file, the Operator generates signatures directly using the local key pair.
Alternatively, the Operator can use a remote signing service (like Cerberus) to generate signatures without storing the private key locally, which provides enhanced security.
The GetSignature method handles signature generation through either mechanism based on the configuration.
Sources:
To run an Operator node:
The Operator process will connect to the specified Ethereum nodes and Aggregator, register for task monitoring, and begin watching for triggers based on instructions from the Aggregator.
Sources:
Feature this wiki to auto refresh weekly