| Crates.io | blueprint-eigenlayer-extra |
| lib.rs | blueprint-eigenlayer-extra |
| version | 0.1.0-alpha.13 |
| created_at | 2025-04-09 19:23:43.195682+00 |
| updated_at | 2025-10-31 23:26:50.421059+00 |
| description | Eigenlayer extra utilities for Blueprint framework |
| homepage | https://tangle.tools |
| repository | https://github.com/tangle-network/blueprint |
| max_upload_size | |
| id | 1627225 |
| size | 522,825 |
High-level framework for running multiple EigenLayer AVS services with a single operator.
This crate provides Rust APIs for:
For CLI usage, see the CLI README.
Each registered AVS gets:
Each AVS can specify its execution runtime:
native - Bare process (no sandbox)
hypervisor - cloud-hypervisor VM (default)
container - Docker/Kata containers (Coming Soon)
native for testing or hypervisor for productionStored in ~/.tangle/eigenlayer_registrations.json:
{
"registrations": {
"0x...service_manager_address": {
"operator_address": "0x...",
"config": { ... },
"status": "Active",
"registered_at": "2024-10-17T..."
}
}
}
Operator-level monitoring (runs once per operator):
use blueprint_eigenlayer_extra::AvsDiscoveryService;
let service = AvsDiscoveryService::new(env);
// Discover all AVS registrations for an operator
let discovered = service.discover_avs_registrations(operator_address).await?;
// Check specific AVS registration
let is_registered = service.is_operator_registered_to_avs(
operator_address,
registry_coordinator,
).await?;
use blueprint_eigenlayer_extra::{RegistrationStateManager, AvsRegistration};
// Load registrations
let manager = RegistrationStateManager::load()?;
// Register new AVS
let registration = AvsRegistration::new(operator_address, config);
manager.register(registration)?;
// Deregister
manager.deregister(service_manager_address)?;
// List all registrations
let registrations = manager.registrations();
use blueprint_eigenlayer_extra::{RewardsManager, SlashingMonitor};
// Check claimable rewards
let rewards_manager = RewardsManager::new(env);
let amount = rewards_manager.get_claimable_rewards().await?;
// Monitor slashing
let slashing_monitor = SlashingMonitor::new(env);
let is_slashed = slashing_monitor.is_operator_slashed().await?;
{
"service_manager": "0x...",
"registry_coordinator": "0x...",
"operator_state_retriever": "0x...",
"strategy_manager": "0x...",
"delegation_manager": "0x...",
"avs_directory": "0x...",
"rewards_coordinator": "0x...",
"permission_controller": "0x...",
"allocation_manager": "0x...",
"strategy_address": "0x...",
"stake_registry": "0x...",
"blueprint_path": "/path/to/blueprint",
"runtime_target": "hypervisor",
"allocation_delay": 0,
"deposit_amount": 5000000000000000000000,
"stake_amount": 1000000000000000000,
"operator_sets": [0]
}
See examples/incredible-squaring-eigenlayer/ for a complete AVS blueprint example.
# Run all tests
cargo test -p blueprint-eigenlayer-extra
# Run manager tests
cargo test -p blueprint-manager --test multi_avs_test
cargo test -p blueprint-manager --test protocol_integration