方伟的博客
j2ee技术、网络、web等,同名的人真多,我的QQ是20025404
posts - 21,comments - 14,trackbacks - 0

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)  编辑  收藏 所属分类: 区块链

只有注册用户登录后才能发表评论。


网站导航: