Centos7搭建bsc全链节点

服务器配置

 CPU:8 Cores - 16 Threads
 RAM:131072 MB
 Storage:2x 2000GB NVMe
 Bandwidth:8400.65 GB of 10000 GB
 OS:
 CentOS 7 x64
 服务器位置: 东京

 

因为要下载1.4T的节点快照并且解压,所以最好要4T的磁盘

该服务器是两块2T磁盘组成,所以首先进行磁盘的挂载

 

新磁盘的挂载

1.查看服务器当前的挂载设备

 fdisk -l

 

 
 #(当前服务器已经挂载好了,新磁盘为nvme1n1, 应输入fdisk -l查看自己服务器未挂载的磁盘)
 
 磁盘 /dev/nvme1n1:2000.4 GB, 2000398934016 字节,3907029168 个扇区
 Units = 扇区 of 1 * 512 = 512 bytes
 扇区大小(逻辑/物理):512 字节 / 512 字节
 I/O 大小(最小/最佳):512 字节 / 512 字节
 
 
 磁盘 /dev/nvme0n1:2000.4 GB, 2000398934016 字节,3907029168 个扇区
 Units = 扇区 of 1 * 512 = 512 bytes
 扇区大小(逻辑/物理):512 字节 / 512 字节
 I/O 大小(最小/最佳):512 字节 / 512 字节
 磁盘标签类型:dos
 磁盘标识符:0x000e0a65
 
        设备 Boot     Start         End     Blocks   Id System
 /dev/nvme0n1p1   *       2048 3907029134 1953513543+ fd Linux raid autodetect
 
 磁盘 /dev/md0:2000.4 GB, 2000394722816 字节,3907020943 个扇区
 Units = 扇区 of 1 * 512 = 512 bytes
 扇区大小(逻辑/物理):512 字节 / 512 字节
 I/O 大小(最小/最佳):512 字节 / 512 字节
 
 

2.删除原有分区

 fdisk /dev/nvme1n1

 

 
 
 #nvme1n1位需挂载的设备名
 
 欢迎使用 fdisk (util-linux 2.23.2)。
 
 更改将停留在内存中,直到您决定将更改写入磁盘。
 使用写入命令前请三思。
 
 
 命令(输入 m 获取帮助):d
 已选择分区 1
 分区 1 已删除
 
 命令(输入 m 获取帮助):p
 
 磁盘 /dev/nvme1n1:2000.4 GB, 2000398934016 字节,3907029168 个扇区
 Units = 扇区 of 1 * 512 = 512 bytes
 扇区大小(逻辑/物理):512 字节 / 512 字节
 I/O 大小(最小/最佳):512 字节 / 512 字节
 磁盘标签类型:dos
 磁盘标识符:0x04fc5a3c
 
    设备 Boot     Start         End     Blocks   Id System
 
 命令(输入 m 获取帮助):w
 The partition table has been altered!
 
 Calling ioctl() to re-read partition table.
 正在同步磁盘。

3.新建分区

 fdisk /dev/nvme1n1
 欢迎使用 fdisk (util-linux 2.23.2)。
 
 更改将停留在内存中,直到您决定将更改写入磁盘。
 使用写入命令前请三思。
 
 
 命令(输入 m 获取帮助):n
 Partition type:
    p   primary (0 primary, 0 extended, 4 free)
    e   extended
 Select (default p): p
 分区号 (1-4,默认 1):1
 起始 扇区 (2048-3907029167,默认为 2048):
 将使用默认值 2048
 Last 扇区, +扇区 or +size{K,M,G} (2048-3907029167,默认为 3907029167):
 将使用默认值 3907029167
 分区 1 已设置为 Linux 类型,大小设为 1.8 TiB
 
 命令(输入 m 获取帮助):w
 The partition table has been altered!
 
 Calling ioctl() to re-read partition table.
 正在同步磁盘。

4.格式化分区

 mkfs.ext3 /dev/nvme1n1

5.挂载使用

 # 新建一个挂载点。
 mkdir /data
 
 # 挂载。
 mount /dev/sdb1 /data
 
 #查看是否挂载成功
 [root@guest ~]# df -h
 文件系统       容量 已用 可用 已用% 挂载点
 devtmpfs         63G     0   63G   0% /dev
 tmpfs           63G     0   63G   0% /dev/shm
 tmpfs           63G   34M   63G   1% /run
 tmpfs           63G     0   63G   0% /sys/fs/cgroup
 /dev/md0       1.8T 1.5T 208G   89% /
 tmpfs           13G     0   13G   0% /run/user/0
 /dev/nvme1n1   1.8T 1.4T 322G   82% /data
 
 在最后一行
 磁盘因为已经使用过了所以有占用

6.开机自动挂载

 vim /etc/fstab
 在底部添加
 /dev/nvme1n1 /data ext3 defaults 1 2

至此磁盘已经挂载成功

 

centos7 git的升级

因为centos7的默认git版本是1.8,后续用到git会有版本问题,所以得先对git进行升级

安装依赖

 
 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
 yum install gcc perl-ExtUtils-MakeMaker

卸载旧版本git

 yum remove git

打开文件夹

 cd /usr/local/src/

下载git压缩包

该压缩包版本为2.32

 wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.32.0.tar.xz

解压

 tar -xvf git-2.32.0.tar.xz

打开解压好的git文件

 cd git-2.32.0

编译

 make prefix=/usr/local/git all

安装git

 make prefix=/usr/local/git install

配置环境变量

 echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile && source /etc/profile
 
 #验证git版本
 git --version
 

 

安装其他所需插件

 yum -y upgrade
 
 yum install wget -y
 
 yum install golang -y
 
 #验证go的版本
 go version
 
 #如正确显示版本号则安装正确
 #go version go1.18.1 linux/amd64
 
 yum -y install screen

至此准备工作已经做好,下面开始正式搭建bsc链

 

 

BSC链的搭建

 

 cd /        #进入根目录
 mkdir -p jiedian/kuaizhao #创建jiedian及kuaizhao文件夹
 cd /jiedian #进入jiedian文件夹
 git clone https://github.com/binance-chain/bsc
 cd bsc/
 make geth
 

配置路径

 vim /etc/profile
 #把下列一行写到最后边然后 :wq 保存退出
 export PATH=$PATH:/jiedian/bsc/build/bin
 #然后使命令生效
 source /etc/profile
 
 #使用geth version确认安装正确

 

配置创世块

 wget https://github.com/binance-chain/bsc/releases/download/v1.1.9/mainnet.zip
 unzip mainnet.zip
 geth --datadir node init genesis.json

下载BSC快照

创建一个用来下载快照的screen窗口

  • 进入screen窗口后,若想退出,依次连续按住ctrl+a+d

  • 退出窗口后,在主窗口输入screen -ls查看所打开的其他窗口

  • screen -x <窗口名> 连接进窗口

注意下文的 wget -O geth.tar.lz4 指令中链接地址一定要在双引号之内

注意!!!!!: 官网给出的下载地址是https连接,若网络环境较差容易导致ssl无法验证问题从而中断下载而浪费服务器流量,若出现该问题可将连接复制下载下来并将开头的https改为http。

 screen -S xiazai
 cd /data #下载至上文所挂载的新磁盘
 wget -O geth.tar.lz4 "最新下载地址"

快照的下载地址连接:https://github.com/binance-chain/bsc-snapshots

该压缩包有1.4T左右

 

下载完成后解压该文件至 /jiedian/kuaizhao

并将该文件中的chaindata和triecache移动到/jiedian/bsc/node/geth文件夹下

node文件夹是由上文配置mainnet后自动生成

 tar -I lz4 -xvf geth.tar.lz4
 
 mv /jiedian/kuaizhao/server/data-seed/geth/chaindata /jiedian/bsc/node/geth
 mv /jiedian/kuaizhao/server/data-seed/geth/triecache /jiedian/bsc/node/geth
 
 ctrl+ad #退出xiazai窗口

 

启动BSC全节点

 screen -S bsc   #创建bsc节点启动窗口
 1
 geth --config ./config.toml --datadir ./node --diffsync --cache 86016 --rpc.allow-unprotected-txs --txlookuplimit 0 --rpc.txfeecap 0 --rpc.gascap 0

参数说明:

–config:指定BSC节点配置文件

–datadir:指定BSC节点数据库和密钥存储库的数据目录(默认即可)

–cache:设置最大分配给内部缓存的内存,默认:1024(设置越大,每次同步的数据越多,消耗的内存也越大)

–rpc.allow-unprotected-txs:允许通过RPC提交不受保护的(非 EIP155 签名)交易

–txlookuplimit 0 : 禁用删除事务索引

–diffsync:启用差异同步协议来帮助节点更快地同步

–rpc.txfeecap:无上限gas费用

–rpc.gascap:无交易费用上限

 

 ctrl + a + a #返回主窗口

节点监听

 geth attach http://127.0.0.1:8545
 #这里的端口如果修改配置文件了,就填写配置文件的端口即可
 
 > eth.syncing #查看当前块情况
 > net.peerCount #查看当前连接节点数量,结果为false为同步完成
 > eth.blockNumber #当前同步到块高度

 

nginx配置文件

让节点提供ws连接给外部服务器使用

 server{
  listen 80;
  server_name # 你的网址名称
  # 重点,转发websocket需要的设置
 location / {
    proxy_pass http://127.0.0.1:8545/;
 }
 
 
  # 所有请求都转发
  location /ws {
  proxy_pass http://127.0.0.1:8546/;
  proxy_set_header X-Real_IP $remote_addr;
  proxy_set_header Host $host;
  proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection 'upgrade';
  }
 }
 

如果有对搭节点有疑问的可以加入我们的社区群提问

群里还有一些关于solidity学习的心得分享

还有一些免费小工具分享

 

 

 

参考文章:https://learnblockchain.cn/article/3888