{"content":{"title":"BSC全节点搭建教程（2024）","body":"<!--StartFragment-->\r\n\r\n## 一、服务器配置\r\n\r\n* [全节点建议配置](https://docs.binance.org/smart-chain/developer/fullnode.html)\r\n\r\n```\r\n系统：Linux\r\nCPU：16核\r\n内存：64 GB 内存\r\n带宽：50M以上\r\n硬盘：大于2T固态SSD可用空间数据盘\r\n```\r\n\r\n* 本次搭建使用配置\r\n\r\n```\r\n系统：ubuntu22.04\r\nCPU：32核心64线程\r\n内存：64GB 内存\r\n带宽：1G上下对等\r\n硬盘：ssd 4T\r\n区域：HK\r\n```\r\n\r\n***\r\n\r\n* BSC官方文档：<https://docs.binance.org/smart-chain/developer/fullnode.html>\r\n* BSC快照github：<https://github.com/binance-chain/bsc-snapshots>\r\n* BSC github地址：<https://github.com/binance-chain/bsc/releases>\r\n\r\n***\r\n\r\n## 二、系统环境\r\n\r\n* 更新ubuntu软件包\r\n\r\n```\r\napt-get upgrade\r\n```\r\n\r\n* 安装git\r\n\r\n```\r\napt install git\r\n```\r\n\r\n* 安装Golang （安装 Go 主要是为了去编译 go-ethereum 源码）\r\n\r\n```\r\napt install golang\r\n```\r\n\r\n> 此命令如果安装不上，请自行度娘手动编译安装最新版本Golang\r\n\r\n使用go version确认安装正确\r\n\r\n```\r\ngo version\r\n```\r\n\r\n如下显示则安装正确。\r\n\r\n```\r\n[root@localhost ~]# go version\r\ngo version go1.18.1 linux/amd64\r\n```\r\n\r\n* 安装linux下的窗口管理器工具screen\r\n\r\n```\r\napt install screen\r\n```\r\n\r\n## 三、节点安装部署\r\n\r\n在根目录创建bscnode文件夹用来存放节点程序，并同时在bsc里边创建一个snapshot文件夹，下载的快照数据\r\n\r\n> 1.务必使用固态硬盘并且可使用空间大于2T 2.如果固态不够使用，可以把快照压缩包下载到机械硬盘里边，解压的时候解压到固态硬盘\r\n\r\n* 安装BSC版本的geth\r\n\r\n```\r\n cd /\t\t                #进入根目录\r\n mkdir -p bscnode/snapshot\t#创建bscnode及snapshot文件夹\r\n cd /bscnode\t\t        #进入bscnode文件夹\r\n git clone https://github.com/binance-chain/bsc\r\n cd bsc/\r\n make geth\r\n```\r\n\r\n配置路径\r\n\r\n```\r\nexport PATH=$PATH:/bscnode/bsc/build/bin\r\n```\r\n\r\n使用geth version确认安装正确\r\n\r\n* 配置创世区块\r\n\r\n```\r\nwget https://github.com/binance-chain/bsc/releases/download/v1.1.7/mainnet.zip  #这里建议在github找最新的配置\r\nunzip mainnet.zip\r\ngeth --datadir node init genesis.json\r\n```\r\n\r\n* 下载BSC快照\r\n\r\n创建一个用来下载快照的screen窗口\r\n\r\n```\r\nscreen -S download\r\n```\r\n\r\n> \\*注意1：使用screen窗口期间可以退出或者关闭命令行对话框。 \\*注意2：退出当前窗口时用ctrl+ad（顺序按a和d字母即可），绝对不要用exit或ctrl+d退出会话。 \\*注意2：退出会话后，可以用screen -x download重新连接到会话。这样可以保持在shell下运行，网络中断不会影响。\r\n\r\n开始下载快照\r\n\r\n```\r\ncd /bscnode/snapshot'     #进入bscnode文件夹下载快照\r\nwget -O geth.tar.gz \"最新下载地址\"   #在github上找最新的快照下载地址替换'最新下载地址'\r\n```\r\n\r\n> 这里要下载很久，所以带宽要尽可能高。 在这里获取最新全节点快照地址 BSC快照github：[https://github.com/binance-chain/bsc-snapshots](https://www.sihuo.club/go/?url=aHR0cHM6Ly9naXRodWIuY29tL2JpbmFuY2UtY2hhaW4vYnNjLXNuYXBzaG90cw==)\r\n\r\n下载完成后解压 并移动 chaindata 和 triecache 到./bscnode/bsc/node/geth/ 文件夹下\r\n\r\n```\r\ntar zxvf geth.tar.gz -C /bscnode/snapshot\r\nmv /bscnode/snapshot/server/data-seed/geth/chaindata /bscnode/bsc/node/geth\r\nmv /bscnode/snapshot/server/data-seed/geth/triecache /bscnode/bsc/node/geth\r\n```\r\n\r\n移动完毕以后退出screen的download窗口，并创建bsc窗口开始运行节点。\r\n\r\n> 退出当前窗口时用ctrl+ad（顺序按a和d字母即可），绝对不要用exit或ctrl+d退出会话\r\n\r\n```\r\nctrl+ad\t\t#退出download窗口\r\n```\r\n\r\n启动之前可以先自行配置一下节点的配置文件\r\n\r\n* 修改BSC主网配置文件\r\n\r\n```\r\nvim /bscnode/bsc/config.toml\r\n```\r\n\r\n参数说明：\r\n\r\n> 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 = \\[\"\\*\"]\r\n\r\n## 三、启动BSC全节点\r\n\r\n```\r\nscreen -S bsc\t#创建bsc节点启动窗口\r\ngeth --config ./config.toml --datadir ./node --diffsync --cache 8000 --history.transactions=0 --syncmode full --rpc.allow-unprotected-txs --pruneancient=true --db.engine=pebble\r\n```\r\n\r\n然后按ctrl+ad回到主会话即可\r\n\r\n参数说明：\r\n\r\n> –config：指定BSC节点配置文件 –datadir：指定BSC节点数据库和密钥存储库的数据目录(默认即可) –cache：设置最大分配给内部缓存的内存，默认:1024（设置越大，每次同步的数据越多，消耗的内存也越大） –rpc.allow-unprotected-txs：允许通过RPC提交不受保护的（非 EIP155 签名）交易 –txlookuplimit 0 : 禁用删除事务索引 –diffsync：启用差异同步协议来帮助节点更快地同步\r\n\r\n## 四、节点状态监听\r\n\r\n```\r\ngeth attach http://localhost:8545     #端口如果修改配置文件了，就填写配置文件的端口即可\r\n> eth.syncing\t                      #查看当前区块情况,结果为false表示已同步最新区块\r\n```\r\n\r\n说明：\r\n\r\n> currentBlock: 14290861, #当前同步到区块高度 highestBlock: 14297354, #主网当前高度 knownStates:297473485, pulledStates: 297473485, startingBlock: 14270385\r\n\r\n```\r\n> net.peerCount\t  #查看当前连接节点数量\r\n> eth.blockNumber #当前同步到区块高度\r\n```\r\n\r\n退出请按 ctrl+d 回到主会话。\r\n\r\n* 停止节点\r\n\r\n打开bsc窗口\r\n\r\n```\r\nscreen -x bsc\r\n```\r\n\r\n然后按 ctrl+c 即可\r\n\r\n## 五、注意事项\r\n\r\nbsc链主网浏览器浏览器：<https://bscscan.com/>\r\n\r\n本次教程服务器配置同步到最高区块用了大概6小时左右就追到了最高区块，在使用固态之前用机械硬盘试了一下，每秒1个块，可以说相当拉胯了，所以还是推荐直接上SSD，硬盘最好4T空间，否则区块数据都要1.9个T，如果只有2T空间根本不够用。\r\n\r\n**不懂的加我q(2857775253)，有bsc、eth节点租用，支持监听内部交易哦\\~**\r\n\r\n<!--EndFragment-->"},"author":{"user":"https://learnblockchain.cn/people/6592","address":null},"history":null,"timestamp":1704709089,"version":1}