Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zellular-xyz/eigensync
Verify EigenLayer operators' signatures on any EVM chain
https://github.com/zellular-xyz/eigensync
bls eigenlayer eigenlayer-operators
Last synced: 16 days ago
JSON representation
Verify EigenLayer operators' signatures on any EVM chain
- Host: GitHub
- URL: https://github.com/zellular-xyz/eigensync
- Owner: zellular-xyz
- Created: 2024-08-07T18:16:34.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-09-20T12:36:10.000Z (about 2 months ago)
- Last Synced: 2024-10-18T23:28:27.821Z (27 days ago)
- Topics: bls, eigenlayer, eigenlayer-operators
- Language: TypeScript
- Homepage:
- Size: 424 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![Hardhat Tests](https://github.com/zellular-xyz/EigenSync/actions/workflows/hardhat-tests.yml/badge.svg)](https://github.com/zellular-xyz/EigenSync/actions/workflows/hardhat-tests.yml)
# EigenSyncEigenSync enables the verification of aggregated BLS signatures by EigenLayer operators on any EVM-compatible chain by mirroring their keys and stakes. This allows developers to grant contract ownership on these chains to EigenLayer operators, a feature previously restricted to the mainnet.
For an in-depth understanding of EigenSync's architecture, visit our [Wiki](https://github.com/Inspector-Butters/EigenSync/wiki).
> [!CAUTION]
> This library is a PoC implemented for the EigenLayer hackathon. Do not use it in Production, testnet only.## Main Components
The EigenSync comprises two main components:
1. Operator Registry Contract
2. Synchronizer Service### Operator Registry Contract
The Operator Registry is a middleware contract deployed on EVM-compatible chains, designed to host AVS operators' stakes and keys. It allows dApps on these chains to verify aggregated BLS signatures from AVS operators.
The following section outlines how to run tests and deploy the contract.
#### Testing
To test the contract, run the following commands:
```bash
$ git clone https://github.com/zellular-xyz/EigenSync
$ cd contract
$ npm install
$ npx hardhat test
```#### Deploying the Contract
Add the configuration for the chain you want to deploy on, and add your private key and scanner API key (for verification) in the `.env` file. Then, deploy the contract with the following command:
```bash
$ npx hardhat run ./scripts/deploy.ts --network
```If the verification fails, you can try the following command:
```bash
$ npx hardhat verify --network --force
```###### Deployment operator registry contract on different chains:
| Network | Deployment Address |
|----------|-------------------------------------------------|
| Sepolia | `0xB3efEc7Fe6b7ae0CDe3abFC46AaBD527F95D390C` |
| Base | `0xC62aB311db6B819d05dE464eB338836595f99C8d` |
| Optimism | `0x01b028f1BF8FC6915D53F762C6Ff905e4AAE6877` |
| Celo | `0xf9937cf6EeDA0628b04B9782693D942D58fac165` |
| Frax | `0x01b028f1BF8FC6915D53F762C6Ff905e4AAE6877` |
| Metal L2 | `0x01b028f1BF8FC6915D53F762C6Ff905e4AAE6877` |---
### Synchronizer Service
The Synchronizer is an oracle service that retrieves the AVS operators' keys and stake information from the AVS middleware contracts on the mainnet and records it in the operator registry contract on the destination chain. This service includes one script for operators and two scripts for the aggregator. To install the necessary dependencies, run the following command:
```bash
$ pip install -r requirements.txt
```#### On Operators
Navigate to the operator directory:
```bash
$ cd operator
```Create a `KEY_PAIR` and obtain an [Infura key](https://www.infura.io/). Complete the `local_setting.py` file based on the sample provided.
Run the node script:
```bash
$ python node.py
```#### On Aggregator
Navigate to the aggregator directory:
```bash
$ cd aggregator
```Create an [Infura key](https://www.infura.io/) and add the address and private key of the account used to deploy the **Operator Registry Contract** (or any account with the `DAO_ROLE` on the contract). Complete the `local_setting.py` file based on the sample provided.
To initiate the process and register the first operator on the **Operator Registry Contract**, run:
```bash
$ python initialization.py
```To run the aggregator service:
```bash
$ python aggregator.py
```For more information on the [EigenSDK](https://eigensdk-python.readthedocs.io/en/latest/) used for cryptographic operations, please visit the [Zellular Project](https://www.zellular.xyz/).
---