BSC链节点搭建 保姆级详细教程

2023-11-17

BSC链节点搭建 保姆级详细教程

文档最后修改日期:2023.06.24

一,服务器配置要求

系统:Mac & Linux
CPU:16核
内存:64 GB 内存
带宽:50M以上
硬盘:大于2T固态SSD可用空间数据盘
  • 本次搭建使用的服务器配置
系统:Debian 11.1 (base)
CPU:16核心32线程
内存:128 GB DDR4 ECC
带宽:1 GBit/s
硬盘:2 个 3.84 TB NVMe SSD 数据中心版 (2 个 1.92 TB NVMe SSD 数据中心版 已经足够)
区域:HEL1 (Helsinki)

【注】以下命令 基于Debian,但是由于部分命令我并未操作(如:安装go) 故 自行替换下命令 安装命令 Debian:apt-get install ***
Centos: yum install *** -y
如:安装 wget
Debian: apt-get install wget
Centos: yum install wget -y


二,服务器环境配置

  • 2.1 更新Debian/Centos软件包
Debian: sudo apt update && sudo apt dist-upgrade
Centos: yum -y upgrade
【注】若 apt 命令不行 就使用 apt-get 命令
  • 2.2 安装wget git vim unzip 等
Debian:
apt install wget git screen gcc automake autoconf libtool make unzip liblz4-tool aria2 vim zstd
#其中 
#liblz4-tool 为解压用
#screen 为安装linux下的窗口管理器工具screen

三、节点安装部署

在根目录创建jiedian文件夹用来存放节点程序,并在同时在jiedian里边创建一个kuaizhao文件夹,下载的快照数据

1.务必使用固态硬盘并且可使用空间大于2T
2.如果固态不够使用,可以把快照压缩包下载到机械硬盘里边,解压的时候解压到固态硬盘

创建文件夹

 cd /		#进入根目录
 mkdir -p jiedian/kuaizhao		#创建jiedian及kuaizhao文件夹
 cd /jiedian		#进入jiedian文件夹
  • 安装BSC版本的geth
  • 安装go的需要执行接下来的命令

Centos安装最新版Golang(安装 Go 主要是为了去编译 go-ethereum 源码,此步骤非必要,可以直接下载官方编译后的文件(文章下方有详细步骤))

下载安装

# 最新版本
# https://golang.google.cn/dl/

cd /usr/local/src	
wget https://golang.google.cn/dl/go1.17.7.linux-amd64.tar.gz
tar -zxvf go1.17.7.linux-amd64.tar.gz -C /usr/local/

增加配置文件

vim /etc/profile

【tips】
此时是vim的命令模式 我们需要在最后加入下面的代码 所以 vim的命令模式–>输入模式 的方法是按i键
即 按i键 把光标移动到最后 换行 输入以下内容

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=/opt/go
export PATH=$PATH:$GOPATH/BIN

然后我们需要冲从 输入模式–>命令模式
按 ESC 键
接下来保存内容并退出
需要冲当前的命令模式–>指令行模式
按:键
再输入wq 回车即可
vim修改内容保存退出(截图仅供参考,并非我实操过程的截图)

更新环境变量

source /etc/profile

查看版本

go version

返回以下 代表没问题

[root@localhost ~]# go version
go version go1.17.7 linux/amd64

编译geth

 git clone https://github.com/binance-chain/bsc
 cd bsc/
 make geth     #亲测使用yum install golang -y 此处报错

配置路径

export PATH=$PATH:/jiedian/bsc/build/bin
  • 下载预构建二进制文件后按照以下说明进行操作 (推荐)

发布页面下载预构建二进制文件(如不想安装go 可以下载官方编译后的二进制文件)

wget   $(curl -s https://api.github.com/repos/bnb-chain/bsc/releases/latest |grep browser_ |grep geth_linux |cut -d\" -f4)

设置可执行权限及重命名为geth

chmod +x geth_linux
mv geth_linux geth

修改 /etc/bashrc,在文件末尾添加了如下路径,目的是将 /jiedian/geth 加入环境变量,方便使用

export PATH=/jiedian/:$PATH

更新环境变量

source /etc/profile

使用 geth version 确认安装正确

  • 配置创世区块
wget $(curl -s https://api.github.com/repos/bnb-chain/bsc/releases/latest |grep browser_ |grep mainnet |cut -d\" -f4)
unzip mainnet.zip
geth --datadir node init genesis.json
  • 下载BSC快照
    创建一个用来下载快照的screen窗口
screen -S xiazai

注意1:使用screen窗口期间可以退出或者关闭命令行对话框
注意2:退出当前窗口时用ctrl+ad(顺序按a和d字母即可), 绝对不要用exit或ctrl+d退出会话
注意2:退出会话后 , 可以用screen -r xiazai , 这样可以保持在shell下运行,网络中断不会影响

注意1:使用screen窗口期间可以退出或者关闭命令行对话框。
注意2:退出当前窗口时用ctrl+ad(顺序按a和d字母即可),绝对不要用exit或ctrl+d退出会话。
注意3:退出会话后,可以用screen -x xiazai重新连接到会话。这样可以保持在shell下运行,网络中断不会影响。

  • 开始下载快照
cd /jiedian/kuaizhao		#进入kuaizhao文件夹下载快照
wget -O geth.tar.lz4 "最新下载地址"
# 例:
# 选择的 Asia Endpoint 的下载地址
# 如果硬盘大小不到2T 如1.92T 解压的时候 会硬盘内存不足 可以选择一边下载一边解压
# wget -q -O - <snapshot URL> | tar -I lz4 -xvf -  一边下载 一边解压 同时删除 -q 更方便查看进度:
# wget -O - "https://tf-dex-prod-public-snapshot-site1.s3-accelerate.amazonaws.com/geth-20220715.tar.lz4?AWSAccessKeyId=AKIAYINE6SBQPUZDDRRO&Signature=f9fLGGym3%2FQCOgu6cv%2BjOZDHZKg%3D&Expires=1660542966" | tar -I lz4 -xvf -

# BNB48快照例子(边下载边解压 容量不充足的可以用此命令 节省磁盘容量)
# wget https://snapshots.48.club/geth.none.29353321.tar.zst -O - | zstd -cd | tar xf -

【注】现在快照越来越大  下载解压同步要花费很多时间 使用此方法可以节约很多时间 我这里 下载40-60分钟 解压 10 分钟 同步也很快
进入BNB48的快照地址  下载BNB48快照  多线程下载 再解压 (推荐)
# 例:!!!来自区块25830280
# aria2c -s4 -x4 -k1024M https://snapshots.48.club/geth.none.29353321.tar.zst -o none.tar.zst
下载完之后 解压
# zstd -d none.tar.zst
节省磁盘容量 删除原有的zst压缩包
# rm -rf none.tar.zst
#解压 none.tar.zst 解压后的 none.tar 文件
# tar xf none.tar

删除快照(若先下载快照再解压需要删除用来节省空间  如果边下载边解压则不需要  这个不重要 可以弄完一切了再删除) 即节省磁盘容量 删除 none.tar
# rm -rf none.tar

这里要下载很久,所以带宽要尽可能高。
在这里获取最新全节点快照地址
BSC快照github:https://github.com/binance-chain/bsc-snapshots
BNB48快照github:https://github.com/48Club/bsc-snapshots#geth-snapshots

如不是一边下载一边解压下载完成后解压 并移动 chaindata 和 triecache 到./jiedian/bsc/node/geth/ 文件夹下(二进制执行文件方式的目录./jiedian/node/geth/)

tar -I lz4 -xvf geth.tar.lz4 -C /jiedian/kuaizhao
  • 替换数据
备份原有数据
mv ${BSC_DataDir}/geth/chaindata ${BSC_DataDir}/geth/chaindata_backup
mv ${BSC_DataDir}/geth/triecache ${BSC_DataDir}/geth/triecache_backup  #如果有这个文件夹  第一次搭建 没这个文件夹 如果报错提示不存在 就不管他了

mv server/data-seed/geth/chaindata ${BSC_DataDir}/geth/chaindata
mv server/data-seed/geth/triecache ${BSC_DataDir}/geth/triecache

例:我的BSC_DataDir 是 ./jiedian/node/geth/  (例子是bnb48快照的例子)
mv /jiedian/node/geth/chaindata /jiedian/node/geth/chaindata_backup
mv /jiedian/kuaizhao/none/geth/chaindata /jiedian/node/geth/chaindata

【注】BNB48下载的快照 没有 triecache,所以只需要移动 chaindata 就行

【注】我测试不备份 一直没从快照同步 ,问题应该是 直接执行 mv /jiedian/kuaizhao/server/data-seed/geth/chaindata /jiedian/node/geth/chaindata 命令,实际快照移动到了 /jiedian/kuaizhao/server/data-seed/geth/chaindata/chaindata ,这样就出问题了 ,如果 mv /jiedian/node/geth/chaindata /jiedian/node/geth执行这个命令 ,会提示文件夹已经存在 , 移动失败 ,所以可以把原有的chaindata文件夹改名称 chaindata_backup(或者删除 ,命令为:rm -rf /jiedian/node/geth/chaindata)。这样执行 mv /jiedian/kuaizhao/server/data-seed/geth/chaindata /jiedian/node/geth/chaindata 命令后,快照文件在 /jiedian/kuaizhao/server/data-seed/geth/chaindata 中。

移动完毕以后退出screen的xiazai窗口,并创建bsc窗口并开始运行节点。
退出当前窗口时用ctrl+ad(顺序按a和d字母即可)

启动之前可以先自行配置一下节点的配置文件

  • 修改BSC主网配置文件
ctrl+ad		#退出xiazai窗口
screen -S bscnode   #新建一个 节点运行窗口
vim /jiedian/bsc/config.toml

参数说明:

TrieTimeout:这意味着geth将不会将状态持久化到数据库中,直到达到这个时间阈值,如果节点已经被强制关闭,它将从最后一个状态开始同步,这可能需要很长时间,可设置为:TrieTimeout
= 200000000000 注意:当TrieTimeout值设置的越大,系统崩溃后,节点恢复的时间越长
HTTPHost: HTTP-RPC服务连接白名单,此参数的值默认为 “localhost”,仅允许本地可访问,如果需要外网访问节点请设置为:“0.0.0.0”
HTTPVirtualHosts:HTTP-RPC服务监听接口,此参数的值默认为[“localhost”],可设置为:HTTPVirtualHosts = [““]
HTTPPort:http协议rpc端口
WSPort:websocket协议rpc端口
WSHost:websocket服务连接白名单,此参数的值默认为 “localhost”,仅允许本地可访问,可设置为:“0.0.0.0”
WSOrigins:websocket服务监听接口,可设置为:WSOrigins = [”
”]

三、启动BSC智能全节点
screen -S bsc #创建bsc节点启动窗口

cd /jiedian

geth --config ./config.toml --datadir ./node --cache 65536 --diffsync --rpc.allow-unprotected-txs --snapshot=true --txlookuplimit 0 

【注】如使用的BNB48快照  需要后面加上 --txlookuplimit=0 --syncmode=full --tries-verify-mode=none --pruneancient=true --diffblock=5000
例:
geth --config ./config.toml --datadir ./node --cache 65536 --diffsync --rpc.allow-unprotected-txs --snapshot=true --txlookuplimit 0  --syncmode=full --tries-verify-mode=none --pruneancient=true --diffblock=5000

根据经验的参数配置:

  • cache 设置为了 65536 MB,即 64 GB
  • config.toml 中 maxPeers 设置为了 200 (默认 30)

然后按ctrl+ad回到主会话即可

参数说明:

–config:指定BSC节点配置文件
–datadir:指定BSC节点数据库和密钥存储库的数据目录(默认即可)
–cache:设置最大分配给内部缓存的内存,默认:1024(设置越大,每次同步的数据越多,消耗的内存也越大)
–rpc.allow-unprotected-txs:允许通过RPC提交不受保护的(非 EIP155 签名)交易
–txlookuplimit 0: 禁用删除事务索引
–diffsync:启用差异同步协议来帮助节点更快地同步

四、节点状态监听

geth attach http://127.0.0.1:8545
或 
geth attach /jiedian/node/geth.ipc

#这里的端口如果修改配置文件了,就填写配置文件的端口即可

eth.syncing #查看当前区块情况

说明:

currentBlock: 14290861, #当前同步到区块高度
highestBlock: 14297354, #主网当前高度
knownStates:297473485,
pulledStates: 297473485,
startingBlock: 14270385

net.peerCount #查看当前连接节点数量,结果为false为同步完成
eth.blockNumber #当前同步到区块高度

退出请按 ctrl+d 回到主会话。

  • 停止节点
    打开bsc窗口
 screen -x bsc

然后按 ctrl+c 即可

五、注意事项
bsc链主网浏览器浏览器:https://bscscan.com/

我这个设备配置同步到最高区块用了大概20分钟左右就追到了最高区块。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BSC链节点搭建 保姆级详细教程 的相关文章

随机推荐

  • 分享一个iec104协议的资源,一个模拟iec104协议主站端的小工具

    最近编写的iec104协议的软件也基本稳定了 现在上传到资源上去留作备份 可实现功能 V1 005 2019 331 1 增加启动调用可执行文件目录下104 ini 调用遥信点表功能 增加显示SOE功能 2 增加显示SOE功能 根据读取的点
  • 数据库批量插入,存在则更新,不存在则插入

    INSERT ON DUPLICATE KEY UPDATE 语句 在并发量比较高的时候 可能两个线程都查询某个记录不存在 所以会执行两次插入 然后其中一条必然会因为主键 这里说的主键不是递增主键 冲突而失败 数据库层MySQL中INSER
  • Python中利用compileall将py项目打包成pyc项目

    在进行python项目开发的时候一定会涉及到项目打包这个环节 有时因为一些依赖的原因没法打包成一个大的可执行文件 但为了代码的安全性我们最起码需要打包成pyc的预编译格式 这样运行者 一般是测试和线上部署 在无法看到程序源码的同时也能顺利执
  • numpy.c_和numpy.r_的用法

    numpy c 将切片对象沿第二个轴 按列 连接 np c np array 1 2 3 np array 4 5 6 array 1 4 2 5 3 6 np c np array 1 2 3 0 0 np array 4 5 6 arr
  • UML类图几种关系的总结

    在UML类图中 常见的有以下几种关系 泛化 Generalization 实现 Realization 关联 Association 聚合 Aggregation 组合 Composition 依赖 Dependency 1 泛化 Gene
  • 子类加@Data后,IDEA调试时“出现”父类属性无值

    项目场景 自测一个功能的时候 IDEA调试同过对象的VIEW查看对象内容 发现加了 Data的返回子类型中父类的属性没有出现 问题描述 父类Response中的返回VO对象 Data public class PVO private Sti
  • 链式存储之:链表的引出及其简介

    上篇博客 笔者讲解了一下顺序表ArrayList 对于ArrayList有想法的各位老铁可以看一下 值得思索的 ArrayList和线性表 你确定错过这次机会 念君思宁的博客 CSDN博客值得思索的 ArrayList和线性表 你确定错过这
  • python格式化

    python格式化是python语法中很基础也是很重要的知识 本文介绍了python格式化的几种方法仅供参考 一 格式化方法1 格式为 输出内容 对应的变量1 对应的变量2 其中 d表示整数类型 s表示字符串类型 f表示浮点类型 例子 设以
  • 半实物仿真测试方法、装置及系统与流程

    机器人控制器的测试主要包括控制器核心软件的测试和外部接口的测试 同时为了保证机器人控制器在真实工况下进行测试 需要对其实际运行的各项功能和性能指标进行测试 半实物仿真测试平台是连接控制器和被控对象进行测试的测试平台 在基于半实物仿真的实验中
  • 数据清洗:让数据更纯净,Python实战 机器学习&深度学习

    目录 步骤1 导入必要的库 步骤2 加载数据 步骤3 处理缺失值 3 1 删除含有缺失值的行
  • 给应届生开出20K月薪,看到招聘要求后,我傻眼了......

    一到秋招季 就有 灵异 事件发生 应届生痛斥找不到工作 精心准备的简历投了几十家过不了网申 而企业控诉招不到人才 今年明明扩招了 应届生be like 这些岗位都挺适合我的 简直一个量身打造 用人单位be like 岗位要求门槛写得也不高
  • MySQL数据库迁移快速导出导入大量数据(外发)

    数据库迁移是我们经常可遇到的问题 对于少量的数据 迁移基本上不会有什么问题 生产环境中 有以下情况需要做迁移工作 磁盘空间不够 比如一些老项目 选用的机型并不一定适用于数据库 随着时间的推移 硬盘很有可能出现短缺 业务出现瓶颈 比如项目中采
  • vue-cli3打包项目

    vue cli3打包项目 使用vue cli3开发好项目后 就可以将它打包 这样就可以通过输出文件中的index html来访问该项目了 在打包项目之前需要先修改两个文件 分别是vue config js router index js 如
  • 【C++】【TensorRT】检测时间不稳定原因汇总(持续更新)

    本人使用C 版本的TensorRT框架做模型部署的开发工作 在实际上线具体的项目过程中碰到过检测时间不理想的情况 所以本人专门为此写一篇博客记录曾经遇到过的坑以及对应的解决方案 一 相同型号的机器和显卡检测时间不同 1 问题描述 两台相同型
  • 一文掌握JS 事件循环(Event Loop)

    作为前端开发者 事件循环 Event Loop 是必须掌握的内容 它是前端极其重要的基础知识 在日常的工作或者面试中也是一个非常高频的话题 理解 JavaScript 的事件循环往往伴随着宏任务和微任务 JavaScript 单线程执行过程
  • 模电基础(2)半导体二极管

    1 二极管的组成 二极管 将PN结封装起来 引出两个电极就构成了半导体二极管 二极管的常见结构包括 点接触型 图a 面接触型 图b 平面型 图c 点接触型 结面积小 不可通过较大的电流 结电容小 工作频率高 面接触型的结面积变大 所允许的电
  • Go语言网络编程(socket编程)http编程

    1 http编程 1 1 1 web工作流程 Web服务器的工作原理可以简单地归纳为 客户机通过TCP IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求包 请求服务器里的资源文档 服务器向客户机发送HTTP协议应答包 如
  • 基于滑模控制的永磁同步电机直接转矩控制学习

    导读 针对传统的DTC存在的问题进行 本期主要介绍基于滑模控制的永磁同步电机直接转矩控制 如果需要文中的仿真模型 关注微信公众号 浅谈电机控制 获取 传统DTC采用两个 Bang bang 控制器分别对转矩和磁链幅值进行控制 响应快速 对系
  • IDEA中的方法、数组和重载

    IDEA软件 常用快捷键 快捷键 功能 Ctrl Shift 选中代码注释 多行注释 再按取消注释 Ctrl Alt L 格式化代码 Alt Ins 自动生成代码 toString get set等方法 Alt Enter 导入包 自动修正
  • BSC链节点搭建 保姆级详细教程

    BSC链节点搭建 保姆级详细教程 文档最后修改日期 2023 06 24 一 服务器配置要求 官方建议配置 系统 Mac Linux CPU 16核 内存 64 GB 内存 带宽 50M以上 硬盘 大于2T固态SSD可用空间数据盘 本次搭建