Component | Mainnet | Testnet |
---|
Memory | 64 GB | 64 GB |
CPU | 8 cores | 8 cores |
Disk | 1 TB NVME SSD | 4 TB NVME SSD |
Bandwidth | 100 MBps for Download / Upload | 100 MBps for Download / Upload |
官方教程。
1. 下载
下载节点二进制文件的最新包:
wget -O galileo.tar.gz https://github.com/0glabs/0gchain-NG/releases/download/v1.2.0/galileo-v1.2.0.tar.gz
2. 解压
将软件包解压到您的主目录:
tar -xzvf galileo.tar.gz -C ~
3.复制文件并设置
复制配置文件并设置适当的权限:
cd galileo
cp -r 0g-home {your data path}
sudo chmod 777 ./bin/geth
sudo chmod 777 ./bin/0gchaind
4. 初始化
使用创世文件初始化 Geth 客户端:
./bin/geth init --datadir /{your data path}/0g-home/geth-home ./genesis.json
5. 初始化
为初始配置创建临时目录:
./bin/0gchaind init {node name} --home /{your data path}/tmp
6.复制节点
将生成的密钥移动到适当的位置:
cp /{your data path}/tmp/data/priv_validator_state.json /{your data path}/0g-home/0gchaind-home/data/
cp /{your data path}/tmp/config/node_key.json /{your data path}/0g-home/0gchaind-home/config/
cp /{your data path}/tmp/config/priv_validator_key.json /{your data path}/0g-home/0gchaind-home/config/
注意:完成此步骤后即可删除临时目录。
7. 启动
cd ~/galileo
nohup ./bin/0gchaind start \
--rpc.laddr tcp://0.0.0.0:26657 \
--chaincfg.chain-spec devnet \
--chaincfg.kzg.trusted-setup-path=kzg-trusted-setup.json \
--chaincfg.engine.jwt-secret-path=jwt-secret.hex \
--chaincfg.kzg.implementation=crate-crypto/go-kzg-4844 \
--chaincfg.block-store-service.enabled \
--chaincfg.node-api.enabled \
--chaincfg.node-api.logging \
--chaincfg.node-api.address 0.0.0.0:3500 \
--pruning=nothing \
--home /{your data path}/0g-home/0gchaind-home \
--p2p.seeds 85a9b9a1b7fa0969704db2bc37f7c100855a75d9@8.218.88.60:26656 \
--p2p.external_address {your node ip}:26656 > /{your data path}/0g-home/log/0gchaind.log 2>&1 &
8. 启动
cd ~/galileo
nohup ./bin/geth --config geth-config.toml \
--nat extip:{your node ip} \
--bootnodes enode://de7b86d8ac452b1413983049c20eafa2ea0851a3219c2cc12649b971c1677bd83fe24c5331e078471e52a94d95e8cde84cb9d866574fec957124e57ac6056699@8.218.88.60:30303 \
--datadir /{your data path}/0g-home/geth-home \
--networkid 16601 > /{your data path}/0g-home/log/geth.log 2>&1 &
9.验证
检查日志以确认您的节点是否正常运行:
# Check Geth logs
tail -f /{your data path}/0g-home/log/geth.log
# Check 0gchaind logs
tail -f /{your data path}/0g-home/log/0gchaind.log
检查日志以确认您的节点是否正常运行。
#!/bin/bash
set -euo pipefail
# ========= 配置 =========
DEFAULT_VERSION="v1.2.0"
NODE_NAME="my-node"
INSTALL_DIR="$HOME/galileo"
DATA_PATH="$HOME/0g-data"
NODE_IP=$(curl -s ifconfig.me)
LOG_DIR="${DATA_PATH}/0g-home/log"
GLOG="${LOG_DIR}/geth.log"
CLOG="${LOG_DIR}/0gchaind.log"
# ========= 工具函数 =========
log() {
echo -e "\033[32m[$(date '+%Y-%m-%d %H:%M:%S')] $*\033[0m"
}
retry() {
local cmd="$1"
local desc="$2"
local max_attempts=5
local count=0
until eval "$cmd"; do
count=$((count + 1))
if [[ $count -ge $max_attempts ]]; then
echo "❌ $desc 失败超过 $max_attempts 次,退出"
exit 1
fi
echo "⚠️ $desc 失败,重试第 $count 次..."
sleep 3
done
echo "✅ $desc 成功"
}
# ========= 步骤 1: 获取最新版本 =========
log "查询 Galileo 最新版本..."
LATEST_VERSION=$(curl -s https://api.github.com/repos/0glabs/0gchain-NG/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+')
if [[ -z "$LATEST_VERSION" ]]; then
log "⚠️ 无法从 GitHub 获取版本信息,使用默认版本 $DEFAULT_VERSION"
LATEST_VERSION="$DEFAULT_VERSION"
else
log "✅ 获取到最新版本: $LATEST_VERSION"
fi
DOWNLOAD_URL="https://github.com/0glabs/0gchain-NG/releases/download/${LATEST_VERSION}/galileo-${LATEST_VERSION}.tar.gz"
# ========= 步骤 2: 下载并解压 =========
log "下载 Galileo 包..."
retry "wget -O galileo.tar.gz $DOWNLOAD_URL" "下载 Galileo 包"
log "解压至 $HOME..."
rm -rf "$INSTALL_DIR"
mkdir -p "$INSTALL_DIR"
retry "tar -xzvf galileo.tar.gz -C ~" "解压 Galileo 包"
cd "$INSTALL_DIR"
# ========= 步骤 3: 设置数据目录和权限 =========
log "配置数据路径 $DATA_PATH..."
mkdir -p "$DATA_PATH"
cp -r 0g-home "$DATA_PATH/"
chmod 777 ./bin/geth ./bin/0gchaind
# ========= 步骤 4: 初始化 =========
log "初始化 geth..."
retry "./bin/geth init --datadir ${DATA_PATH}/0g-home/geth-home ./genesis.json" "初始化 geth"
log "初始化 0gchaind..."
rm -rf "${DATA_PATH}/tmp"
retry "./bin/0gchaind init ${NODE_NAME} --home ${DATA_PATH}/tmp" "初始化 0gchaind"
# ========= 步骤 5: 拷贝密钥 =========
log "拷贝密钥文件..."
cp ${DATA_PATH}/tmp/data/priv_validator_state.json ${DATA_PATH}/0g-home/0gchaind-home/data/
cp ${DATA_PATH}/tmp/config/node_key.json ${DATA_PATH}/0g-home/0gchaind-home/config/
cp ${DATA_PATH}/tmp/config/priv_validator_key.json ${DATA_PATH}/0g-home/0gchaind-home/config/
# ========= 步骤 6: 启动节点 =========
log "启动 0gchaind 节点 (screen 会话)..."
screen -S 0gchaind -dm bash -c "./bin/0gchaind start \
--rpc.laddr tcp://0.0.0.0:26657 \
--chaincfg.chain-spec devnet \
--chaincfg.kzg.trusted-setup-path=kzg-trusted-setup.json \
--chaincfg.engine.jwt-secret-path=jwt-secret.hex \
--chaincfg.kzg.implementation=crate-crypto/go-kzg-4844 \
--chaincfg.block-store-service.enabled \
--chaincfg.node-api.enabled \
--chaincfg.node-api.logging \
--chaincfg.node-api.address 0.0.0.0:3500 \
--pruning=nothing \
--home ${DATA_PATH}/0g-home/0gchaind-home \
--p2p.seeds 85a9b9a1b7fa0969704db2bc37f7c100855a75d9@8.218.88.60:26656 \
--p2p.external_address ${NODE_IP}:26656 \
> $CLOG 2>&1"
log "启动 Geth 节点 (screen 会话)..."
screen -S geth -dm bash -c "./bin/geth --config geth-config.toml \
--nat extip:${NODE_IP} \
--bootnodes enode://de7b86d8ac452b1413983049c20eafa2ea0851a3219c2cc12649b971c1677bd83fe24c5331e078471e52a94d95e8cde84cb9d866574fec957124e57ac6056699@8.218.88.60:30303 \
--datadir ${DATA_PATH}/0g-home/geth-home \
--networkid 16601 \
> $GLOG 2>&1"
# ========= 步骤 7: 验证日志 =========
sleep 5
log "验证 geth 日志..."
if grep -q "Listening on" "$GLOG"; then
echo "✅ Geth 节点运行正常"
else
echo "⚠️ Geth 日志中未检测到监听信息,请检查: $GLOG"
fi
log "验证 0gchaind 日志..."
if grep -q "Starting multiAppConn" "$CLOG"; then
echo "✅ 0gchaind 节点运行正常"
else
echo "⚠️ 0gchaind 日志中未检测到启动信息,请检查: $CLOG"
fi
# ========= 完成 =========
log "🎉 部署完成!以下是常用命令:"
echo "▶ 查看 Geth 日志: screen -r geth"
echo "▶ 查看 0gchaind 日志: screen -r 0gchaind"
echo "▶ 分离 screen 会话: Ctrl + A 然后 D"
echo "▶ 实时查看日志: tail -f $GLOG 或 $CLOG"