Chainbase Set Up AVS Operator

Written by FURI3 min read

Chainbase Set Up AVS Operator
On this page

Chainbase is the world's largest omnichain data network designed to integrate all blockchain data into a unified ecosystem, providing an open and transparent data interoperability layer for the AI era.


Prerequisites#

Update and Install Packages#

text
1sudo apt update & sudo apt upgrade -y
2sudo apt install ca-certificates zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev curl git wget make jq build-essential pkg-config lsb-release libssl-dev libreadline-dev libffi-dev gcc screen unzip lz4 -y

Install Docker & Docker Compose#

text
1curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
2echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
3
4sudo apt-get update
5sudo apt-get install docker-ce docker-ce-cli containerd.io
6docker version
text
1VER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)
2curl -L "https://github.com/docker/compose/releases/download/"$VER"/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
3
4chmod +x /usr/local/bin/docker-compose
5docker-compose --version

Install Go#

text
1cd $HOME && \
2ver="1.22.0" && \
3wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \
4sudo rm -rf /usr/local/go && \
5sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \
6rm "go$ver.linux-amd64.tar.gz" && \
7echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> ~/.bash_profile && \
8source ~/.bash_profile && \
9go version

Install EigenLayer CLI#

text
1curl -sSfL https://raw.githubusercontent.com/layr-labs/eigenlayer-cli/master/scripts/install.sh | sh -s
2export PATH=$PATH:~/bin
3eigenlayer --version

Clone Chainbase AVS Repo#

text
1git clone https://github.com/chainbase-labs/chainbase-avs-setup
2cd chainbase-avs-setup/holesky

Create or Import EigenLayer Wallet#

Create a new wallet:

text
eigenlayer operator keys create --key-type ecdsa "wallet_name"

Import an existing key (optional):

text
eigenlayer operator keys import --key-type ecdsa "wallet_name" PRIVATEKEY

You need at least 1 Holesky ETH for gas. Faucets: Google Faucet (opens in a new tab) or holeskyfaucet.io (opens in a new tab)


Configure & Register Operator#

text
eigenlayer operator config create

Fill in your details:

  • Operator address: your EigenLayer address
  • Earnings address: your EigenLayer address
  • ETH RPC URL: use Infura or Alchemy
  • Network: holesky
  • Signer type: local_keystore
  • ECDSA key path: /root/.eigenlayer/operator_keys/FURI.ecdsa.key.json

Edit metadata.json#

text
nano /root/chainbase-avs-setup/holesky/metadata.json
text
1{
2  "name": "FURI",
3  "website": "https://furinode.com",
4  "description": "Just Testing",
5  "logo": "https://0xfuri.eth.limo/img/fav.png",
6  "twitter": "https://x.com/furidngrt"
7}

Upload logo.png and metadata.json to a GitHub repo, then use the raw URL.

Edit operator.yaml#

text
nano /root/chainbase-avs-setup/holesky/operator.yaml

Set the metadata URL: https://raw.githubusercontent.com/furidngrt/Chainbase/master/metadata.json


Run EigenLayer Holesky Node#

text
eigenlayer operator register operator.yaml

Check status:

text
eigenlayer operator status operator.yaml

Configure Chainbase AVS#

text
nano .env
text
1# Chainbase AVS Image
2MAIN_SERVICE_IMAGE=repository.chainbase.com/network/chainbase-node:testnet-v0.1.7
3FLINK_TASKMANAGER_IMAGE=flink:latest
4FLINK_JOBMANAGER_IMAGE=flink:latest
5PROMETHEUS_IMAGE=prom/prometheus:latest
6
7MAIN_SERVICE_NAME=chainbase-node
8FLINK_TASKMANAGER_NAME=flink-taskmanager
9FLINK_JOBMANAGER_NAME=flink-jobmanager
10PROMETHEUS_NAME=prometheus
11
12# FLINK CONFIG
13FLINK_CONNECT_ADDRESS=flink-jobmanager
14FLINK_JOBMANAGER_PORT=8081
15NODE_PROMETHEUS_PORT=9091
16PROMETHEUS_CONFIG_PATH=./prometheus.yml
17
18# Chainbase AVS mounted locations
19NODE_APP_PORT=8080
20NODE_ECDSA_KEY_FILE=/app/operator_keys/ecdsa_key.json
21NODE_LOG_DIR=/app/logs
22
23# Node logs configs
24NODE_LOG_LEVEL=debug
25NODE_LOG_FORMAT=text
26
27# Metrics specific configs
28NODE_ENABLE_METRICS=true
29NODE_METRICS_PORT=9092
30
31# Holesky smart contracts
32AVS_CONTRACT_ADDRESS=0x5E78eFF26480A75E06cCdABe88Eb522D4D8e1C9d
33AVS_DIR_CONTRACT_ADDRESS=0x055733000064333CaDDbC92763c58BF0192fFeBf
34
35# TODO: Update these for your node
36NODE_CHAIN_RPC=https://rpc.ankr.com/eth_holesky
37NODE_CHAIN_ID=17000
38
39USER_HOME=$HOME
40EIGENLAYER_HOME=${USER_HOME}/.eigenlayer
41CHAINBASE_AVS_HOME=${EIGENLAYER_HOME}/chainbase/holesky
42NODE_LOG_PATH_HOST=${CHAINBASE_AVS_HOME}/logs
43NODE_ECDSA_KEY_FILE_HOST=${EIGENLAYER_HOME}/operator_keys/FURI.ecdsa.key.json
44NODE_ECDSA_KEY_PASSWORD=YourPassword

Update NODE_ECDSA_KEY_FILE_HOST, NODE_ECDSA_KEY_PASSWORD, and NODE_CHAIN_RPC with your values.


Edit docker-compose.yml#

text
nano docker-compose.yml

Replace the key path with yours:

text
{NODE_ECDSA_KEY_FILE_HOST:-./FURI.ecdsa.key.json}:${NODE_ECDSA_KEY_FILE}

Create Folders & Set Permissions#

text
source .env && mkdir -pv ${EIGENLAYER_HOME} ${CHAINBASE_AVS_HOME} ${NODE_LOG_PATH_HOST}
text
chmod +x ./chainbase-avs.sh

Edit prometheus.yml#

text
nano prometheus.yml

Input your operator name.


Register & Run Chainbase AVS#

text
./chainbase-avs.sh register
text
./chainbase-avs.sh run

Health Checks#

Check AVS logs:

text
docker compose logs chainbase-node -f

Check operator status:

text
1export PATH=$PATH:~/bin
2eigenlayer operator status operator.yaml

Check operator health:

text
curl -i localhost:8080/eigen/node/health

Check Docker containers:

text
docker ps

Keep reading

All articles