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#
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 -yInstall Docker & Docker Compose#
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 version1VER=$(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 --versionInstall Go#
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 versionInstall EigenLayer CLI#
1curl -sSfL https://raw.githubusercontent.com/layr-labs/eigenlayer-cli/master/scripts/install.sh | sh -s
2export PATH=$PATH:~/bin
3eigenlayer --versionClone Chainbase AVS Repo#
1git clone https://github.com/chainbase-labs/chainbase-avs-setup
2cd chainbase-avs-setup/holeskyCreate or Import EigenLayer Wallet#
Create a new wallet:
eigenlayer operator keys create --key-type ecdsa "wallet_name"Import an existing key (optional):
eigenlayer operator keys import --key-type ecdsa "wallet_name" PRIVATEKEYYou 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#
eigenlayer operator config createFill 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#
nano /root/chainbase-avs-setup/holesky/metadata.json1{
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#
nano /root/chainbase-avs-setup/holesky/operator.yamlSet the metadata URL:
https://raw.githubusercontent.com/furidngrt/Chainbase/master/metadata.json
Run EigenLayer Holesky Node#
eigenlayer operator register operator.yamlCheck status:
eigenlayer operator status operator.yamlConfigure Chainbase AVS#
nano .env1# 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=YourPasswordUpdate
NODE_ECDSA_KEY_FILE_HOST,NODE_ECDSA_KEY_PASSWORD, andNODE_CHAIN_RPCwith your values.
Edit docker-compose.yml#
nano docker-compose.ymlReplace the key path with yours:
{NODE_ECDSA_KEY_FILE_HOST:-./FURI.ecdsa.key.json}:${NODE_ECDSA_KEY_FILE}Create Folders & Set Permissions#
source .env && mkdir -pv ${EIGENLAYER_HOME} ${CHAINBASE_AVS_HOME} ${NODE_LOG_PATH_HOST}chmod +x ./chainbase-avs.shEdit prometheus.yml#
nano prometheus.ymlInput your operator name.
Register & Run Chainbase AVS#
./chainbase-avs.sh register./chainbase-avs.sh runHealth Checks#
Check AVS logs:
docker compose logs chainbase-node -fCheck operator status:
1export PATH=$PATH:~/bin
2eigenlayer operator status operator.yamlCheck operator health:
curl -i localhost:8080/eigen/node/healthCheck Docker containers:
docker ps


