1.服务器
需要3T(建议4T) NVMe 硬盘,最好是裸硬盘,云盘io性能太差,建议物理机(裸金属主机)+本地SSD。
*注意,bsc节点对硬件要求是我见过的所有链中最高的,强烈建议独立使用一台高配置服务器。
2.带宽
越高越好,建议国外服务器,1G带宽不限流量
3.操作系统
建议centos7/8,或ubuntu,这里均以centos为例
4.准备环境:
yum update -y
yum install screen iftop iotop -y
4.1.安装golang
yum install golang -y
或编译安装:
cd /root/
wget https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
tar zxvf go1.4-bootstrap-20170531.tar.gz
cd /root/go/src/
./all.bash
5.创建一个screen
screen -S bsc
*注意1:最后退出时用ctrl+ad(顺序按a和d字母即可),绝对不要用exit或ctrl+d退出会话。
*注意2:退出会话后,可以用screen -r bsc重新连接到会话。这样可以保持在shell下运行,网络中断不会影响。
6.安装bsc客户端
#这里我的数据目录,可以根据需要自行更改
mkdir -p /data/bsc/data
#下载最新版本
cd /root
wget -O binance-chain-v1.1.4.tar.gz https://github.com/binance-chain/bsc/archive/refs/tags/v1.1.4.tar.gz
tar -xvf binance-chain-v1.1.4.tar.gz
rm -fr binance-chain-v1.1.4.tar.gz
编译:
cd /root/bsc-1.1.4
make all
6.1.检查安装是否成功
/root/bsc-1.1.4/build/bin/geth version
7.编辑并上传配置文件:
bsc-mainnet配置文件.zip-以太坊文档类资源-CSDN下载
config.toml和genesis.json两个文件放到/data/bsc/目录下。(该目录可以自行修改)
8.设置防火墙
firewall-cmd --permanent --zone=public --add-port=30311/tcp
firewall-cmd --permanent --zone=public --add-port=8575/tcp
firewall-cmd --permanent --zone=public --add-port=8576/tcp
firewall-cmd --reload
不懂防火墙配置的,可以先禁用防火墙,关于firewalld的使用技巧,之后会单独写一篇教程
9.1.下载最新的snapshot数据,以加快同步实际
#最新snapshots参加:https://github.com/binance-chain/bsc-snapshots
cd /data/bsc/data
wget -O geth.tar.gz 'https://s3.ap-northeast-1.amazonaws.com/dex-bin.bnbstatic.com/geth-20211031.tar.gz?AWSAccessKeyId=AKIAYINE6SBQPUZDDRRO&Signature=ESK5xmr5f1AIK4Mr6our%2FALXzQk%3D&Expires=1638310885'
tar zxvf geth.tar.gz
*这里要下载很久,所以带宽要尽可能高。
*解压后,注意目录结构可能要调整下,保持chaindata和keystore那一级目录直接在/data/bsc/data/目录下,如果不在的话,自己mv到那个目录下。
9.2.启动客户端
#先init,很多人没有执行这一步,导致下面启动节点同步出错
/root/bsc-1.1.4/build/bin/geth --datadir /data/bsc/data --config /data/bsc/config.toml --syncmode "fast" --cache=10240 init /data/bsc/genesis.json
#启动节点(上面的init只要执行一次,之后启动节点不要再执行了)
ulimit -n 65535
/root/bsc-1.1.4/build/bin/geth --datadir /data/bsc/data --config /data/bsc/config.toml --syncmode "fast" --cache=8192 --rpc.allow-unprotected-txs --txlookuplimit 0 --allow-insecure-unlock
*然后按ctrl+ad回到主会话即可
10.测试验证
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8575
(如果已经追上最新高度,result会返回false)
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://127.0.0.1:8575
11.停止节点
方式1:(建议,毕竟停止后还要启动不是)
screen -r bsc
按ctrl+c,等待一会即可看到节点停止
12.接口文档参考
RPC接口文档同eth文档,如:
以太坊JSON RPC手册 / eth_call - 汇智网
其它参考:
BSC链github地址:https://github.com/binance-chain/bsc
主网浏览器:https://bscscan.com/
主网链官方部署文档:https://docs.binance.org/smart-chain/developer/fullnode.html
私有链官方部署文档:https://docs.binance.org/smart-chain/developer/deploy/local.html
13.注意事项
*最大文件打开数必须修改,很多人遇到bsc客户端经常被kill,就是达到了最大文件打开数限制,导致被操作系统自动kill。
*同步到最高区块所需时间:
需要看网络带宽和磁盘io性能,我用NVMe的裸盘,读写1500到2000左右,1G的国外带宽,基于最新snapshot同步,大概需要3天左右。
*带宽需要100M,建议1G,磁盘io越高越好,如果5天还没有追上,或者高度经常落后,极有可能是服务器磁盘io存在瓶颈
*硬盘最好4T空间,否则区块数据都要1.9个T,如果只有2T空间根本不够用。
*虽然用snapshot+fast模式同步,但同步到最新高度后,依然会自动切换为full node模式,这是正常现象,不用疑惑,也不要删除重新同步。
*再次强调bsc非常耗资源,aws和阿里云的云盘性能根本不够,除非使用本地ssd才可以,而且bsc同步到最新高度后,对带宽的使用依然很高,建议网络不要按流量付费的,否则费用会高到无法承受。
*建议服务器先做io测试,可以用dd,或者安装个宝塔面板做跑分测试,磁盘读写低于500MB/s的就别安装了,建议1000MB/s以上,这个非常关键。
posted on 2021-11-14 23:36
方伟的博客 阅读(4004)
评论(0) 编辑 收藏 所属分类:
区块链