BSC 主网全节点快速搭建:硬件选型到 RPC 端口一站式指南

·

关键词:BSC、币安智能链、全节点、RPC 接口、geth、快速同步、高并发

想给自己的 DApp 提供最稳定、低延迟的 BSC RPC 服务?比起依赖第三方节点,自建全节点不仅数据可控,还能大幅降低调用成本。本文聚焦“非挖矿”主网全节点,带你从选机、装系统到成功出块同步,每一步都踩过坑后给出的最新经验


1. 硬件怎么选?——千万别在云盘里存区块

硬盘

CPU / 内存

带宽

越高越好,1 Gbps 不限流量是标配,300 Mbps 以下就等三天两头掉块吧。

👉 想要测试你的服务器是否能扛住 BSC 的 I/O 压力?先来看这份性能基线报告。


2. 系统与环境:CentOS 7/8、Ubuntu 20+ 均可

下面以 CentOS 7/8 示范;如用 Ubuntu,仅需把 yum 换成 apt 即可。

# 更新并装必要工具
yum update -y
yum install -y screen iftop iotop htop git wget

安装 Golang

CentOS 自带源一般版本过旧,建议二进制安装:

cd /root
wget -O go.tar.gz https://go.dev/dl/go1.20.10.linux-amd64.tar.gz
tar -C /usr/local -xzf go.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version
看到 go version go1.20.10 即成功。

3. 用 screen 隔离会话,不怕断网

screen -S bsc

用法提示:


4. 编译安装官方 geth(BSC 版)

# 目录规划
mkdir -p /data/bsc/data

cd /root
wget -O bsc.tar.gz https://github.com/bnb-chain/bsc/archive/v1.2.15.tar.gz
tar xf bsc.tar.gz && cd bsc-*
make all

验证:

/root/bsc-*/build/bin/geth version
# 输出应包含 "Version: 1.2.15"

5. 配置文件:三步到位

  1. config.tomlgenesis.json 两文件放 /data/bsc/(可随时换目录)。
  2. 若不会改端口,可用官方模板仅调大 cache 参数。
  3. 记得同步完后统一关闭 allow-insecure-unlock,防误操作。

6. 防火墙开 3 个端口即可

firewall-cmd --permanent --add-port=30311/tcp  # 节点通讯
firewall-cmd --permanent --add-port=8575/tcp   # HTTP-RPC
firewall-cmd --permanent --add-port=8576/tcp   # WebSocket
firewall-cmd --reload

7. 快照加速:把 20 天拉到 3 天

官方每日快照 BSC Snapshots

cd /data/bsc/data
wget -c https://snapshots.bnbstatic.com/geth-20231027.tar.gz
tar xf geth.tar.gz --strip-components=1

⚠️ 注意核对顶层目录正确;如多了一层 chaindata/chaindata,直接 mv 调整即可。


8. 启动!第一次必须先 init

# 只做一次
/root/bsc-*/build/bin/geth \
  --datadir /data/bsc/data \
  --config /data/bsc/config.toml \
  init /data/bsc/genesis.json

日常启动放在 start.sh,内容示例:

#!/bin/bash
ulimit -n 65535
/root/bsc-*/build/bin/geth \
  --datadir /data/bsc/data \
  --config /data/bsc/config.toml \
  --syncmode=full \
  --cache=12288 \
  --rpc.allow-unprotected-txs \
  --txlookuplimit=0 \
  --ws --ws.api eth,net,web3 --ws.addr 0.0.0.0 --ws.port=8576 \
  --http --http.api eth,net,web3,debug --http.addr 0.0.0.0 --http.port=8575

执行:

chmod +x start.sh
./start.sh

再按 Ctrl+a d 回到主会话即可。


9. 状态查看与测试

判断同步进度

curl -s -X POST http://localhost:8575 \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_syncing"}'

返回 "result":false 说明已追平最高块。

查询当前块高

curl -s -X POST http://localhost:8575 \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber"}'

将十六进制值 0x21d5700 转为十进制即可与 bscscan.com 比对。


10. 优雅关停

重新进入 screen:

screen -r bsc
Ctrl+c        # 稍等 3-5 秒,看见 "Block synchronisation stopped" 即安全退出

常见问题 FAQ

Q1:启动 30 分钟后就 OOM 被杀?
A:先检查 /var/log/messages,若提示 "too many open files",运行
echo "* - nofile 65535" >> /etc/security/limits.conf && reboot

Q2:我用快照后卡住高度很久不涨?
A:十有八九是 I/O 瓶颈,或者带宽被 runaway peer 占光。限速:--maxpeers 50 --LightIngress 0 --LightEgress 0

Q3:fast 同步完为什么磁盘使用量持续涨?
A:fast 会自动变 full node,之后需要保存世界状态,所以每天新增约 20–30 GB,很正常。

Q4:云厂商说 IOPS 无限,但还是卡?
A:所谓“无限”只是 突增额度,持续 2–3 小时后被打回原型。只有本地 NVMe 才能硬扛。

Q5:非 1 Gbps 的轻量云能不能跑?
A:能跑,但别指望实时性能。适合离线分析、日志归档,用作业务 RPC 会遇到超时报警。


11. 额外监控与报警


12. 接口参考与生态链接

👉 想用脚本一键管理节点生命周期?这里整理了一份轻量级运维脚本合集,开箱即用。


结束语

把所有坑踩完后回头发现,建 BSC 节点最大的敌人并不是技术本身,而是对硬件的幻想。只要硬盘够快、带宽够大,剩余的就是等区块追平然后享受毫秒级延迟的 本地 RPC。祝你早日拥有一个随叫随到的 BSC 数据引擎!