Quickstart
Requirements
Python 3.12+
Ubuntu 24.04+ / macOS 13+ / Windows 11+
Git for installation from source
Dependencies
The MCL native library is required for BLS signing & verification.
System dependencies
sudo apt update
sudo apt install libgmp3-dev cmake make wget unzip
Install MCL library
wget https://github.com/herumi/mcl/archive/refs/tags/v1.93.zip
unzip v1.93.zip
cd mcl-1.93
mkdir build && cd build
cmake .. && make
sudo make install
Installation
Installing from PyPI
After installing the MCL library, you can install or upgrade eigensdk-python via:
pip install eigensdk --upgrade
Installing from Source
git clone https://github.com/zellular-xyz/eigensdk-python
cd eigensdk-python
pip install .
Using EigenSDK
To demonstrate using eigensdk, here’s how you can find the list of operators registered on EigenDA, a sample AVS:
>>> from eigensdk.chainio.clients.builder import BuildAllConfig, build_all
>>>
>>> # Note: You'll need to provide all required contract addresses
>>> config = BuildAllConfig(
... eth_http_url='https://ethereum-rpc.publicnode.com',
... avs_name="EigenDA",
... registry_coordinator_addr='0x0BAAc79acD45A023E19345c352d8a7a83C4e5656',
... operator_state_retriever_addr='0xD5D7fB4647cE79740E6e83819EFDf43fa74F8C31',
... rewards_coordinator_addr='0x7750d328b314EfFa365A0402CcfD489B80B0adda',
... permission_controller_addr='0x0000000000000000000000000000000000000000',
... service_manager_addr='0x870679E138bCdf293b7ff14dD44b70FC97e12fc0',
... allocation_manager_addr='0x3A93c17D806bf74066d7e2c962b7a0F49b97e1Cf',
... delegation_manager_addr='0x39053D51B77DC0d36036Fc1fCc8Cb819df8Ef37A',
... )
>>>
>>> # You'll need a private key for transaction operations
>>> private_key = "your_private_key_here" # For read-only operations, use any valid key
>>> clients = build_all(config, private_key)
>>>
>>> # Get operators in quorums 0,1
>>> quorums = clients.avs_registry_reader.get_operators_stake_in_quorums_at_current_block(
... quorum_numbers=[0,1]
... )
>>> quorums
[[
OperatorStateRetrieverOperator(
operator='0x4Cd2...Bd0a',
operator_id='0x62fd...e8ee',
stake=45675515801958122764368
), ...
], [
OperatorStateRetrieverOperator(
operator='0xDCeb...3040',
operator_id='0x6507...e37a',
stake=100000000000000000000
), ...]]
Note
You can find a list of EigenDA contracts’ addresses here.
To calculate the total stake amount in both quorums 0 and 1:
>>> print(sum([operator.stake for operator in quorums[0]]) / 10**18)
...
>>> print(sum([operator.stake for operator in quorums[1]]) / 10**18)
...