Operator Pool
Documentation for Operator Pool in the EigenLayer-AVS system.
Purpose and Overview#
The Operator Pool is a core component of the EigenLayer-AVS Aggregator service that manages and tracks connected operators. It maintains a registry of all active operators in the system, their connection status, and relevant metadata. The Operator Pool enables the Aggregator to monitor operator health, distribute tasks, and maintain an up-to-date view of the operator network.
For information about the Aggregator that houses this component, see Aggregator. For details about the operators themselves, see Operator.
Architecture and Components#
The Operator Pool is primarily responsible for tracking operator nodes and maintaining their status information in the storage layer. It consists of two main components:
- The
OperatorPool
struct, which provides methods for operator status management - The
OperatorNode
struct, which represents individual operator information
Sources:
- aggregator/pool.go16-106
- aggregator/aggregator.go88
- aggregator/aggregator.go194
- aggregator/aggregator.go210
Data Flow and Integration#
The Operator Pool integrates with other components of the EigenLayer-AVS system as follows:
Sources:
Operator Node Data Structure#
The OperatorNode
struct stores comprehensive information about each operator:
Field | Type | Description |
---|---|---|
Address | string | Ethereum address of the operator |
RemoteIP | string | IP address of the operator node |
LastPingEpoch | int64 | Unix timestamp of the last ping |
Version | string | Version of the operator software |
MetricsPort | int32 | Port for accessing operator metrics |
BlockNumer | int64 | Latest block number processed by the operator |
EventCount | int64 | Count of events processed by the operator |
Sources:
Core Functionality#
Operator Check-in Mechanism#
Operators periodically ping the Aggregator with their current status. The check-in process is handled by the Checkin
method of the OperatorPool
:
- The operator sends a
Checkin
message via gRPC - The RPC server authenticates the operator
- The operator's status is updated in the database
Sources:
Operator Status Retrieval#
The GetAll
method retrieves all operator information from the database:
- Get all entries with the operator prefix from the database
- Unmarshal the data into
OperatorNode
structs - Return the list of operator nodes
The method is used by both the HTTP server's /operator
and /telemetry
endpoints to provide operator information.
Sources:
Operator Authentication#
The Aggregator includes authentication mechanisms for operators, though it's not enforced in the current version:
The authentication is verified through the verifyOperator
method, which checks the validity of signatures submitted by operators.
Sources:
User Interface#
The Operator Pool data is accessible through two HTTP endpoints:
/operator
- Returns a JSON representation of all operators/telemetry
- Provides a user-friendly HTML dashboard showing operator status
The HTML dashboard displays each operator with:
- Ethereum address (linked to Etherscan)
- EigenLayer profile link
- Software version
- Last seen time
- Latest block number
- Event count
Sources:
Implementation Details#
Storage#
The Operator Pool uses BadgerDB for persistent storage, with a specific prefix for operator keys:
Each operator is stored as a JSON-serialized OperatorNode
struct, with a key of the form operator:<id>
.
Sources:
Time Formatting#
The LastSeen
method of OperatorNode
formats the time since the last ping in a human-readable format (e.g., "5m30s ago", "2h15m ago", "3d4h ago").
Sources:
External Links#
The OperatorNode
struct includes helper methods for generating external links:
EtherscanURL()
- Returns a link to the operator's address on EtherscanEigenlayerURL()
- Returns a link to the operator's profile on EigenLayer
Sources:
System Integration#
The Operator Pool is initialized when the Aggregator starts:
- The Aggregator creates an empty
OperatorPool
inNewAggregator()
- When the database is initialized in
initDB()
, the db reference is passed to theoperatorPool
Sources:
Conclusion#
The Operator Pool is a critical component of the EigenLayer-AVS system, providing real-time tracking and management of operator nodes. It enables the Aggregator to maintain an up-to-date view of the operator network, monitor operator health, and provide visibility into the system's operational status.
Feature this wiki to auto refresh weekly