0G-Galileo-Testnet

ComponentMainnetTestnet
Memory64 GB64 GB
CPU8 cores8 cores
Disk1 TB NVME SSD4 TB NVME SSD
Bandwidth100 MBps for Download / Upload100 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

检查日志以确认您的节点是否正常运行。

自动部署

75%
#!/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"

发表评论