# bsc **Repository Path**: jackeron/bsc ## Basic Information - **Project Name**: bsc - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-28 - **Last Updated**: 2021-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # bsc ETH节点RPC服务搭建 ### 安装按需的依赖: git、gcc、screen ## 创建项目 目录,区块节点数据目录 mkdir /root/bsc_project mkdir /root/bsc_project/nodeData ## 一、进入项目目录 bsc_project, 下载geth: 1、github直接下载已预编译好的 wget https://github.com/binance-chain/bsc/releases/download/v1.1.4/geth_linux 1) 修改增加geth_linux文件的可执行权限 chmod +x geth_linux 2) 改名,方便好记 mv geth_linux geth 3)查看版本号验证是否可执行成功 ./geth version 2、github下载源码本地编译 版本及下载地址 https://github.com/binance-chain/bsc/releases 如 https://github.com/binance-chain/bsc/archive/refs/tags/v1.1.4.tar.gz 1) 解压后,进入下载好的源码目录,编译 make geth (geth为指定编译后生成的可执行文件的名称) 4、上面的geth生成后,将geth命令加入系统环境变量(可快速执行) export PATH=$PATH:/root/bsc_project/bsc-1.1.4/build/bin (此为编译生成geth的目录) 5、使用执行geth version查看版本号以确认安装正确若(geth没加入环境变量,在geth所在目录中执行) 6 、配置创世区块文件 1)下载配置文件 wget https://github.com/binance-chain/bsc/releases/download/v1.1.4/mainnet.zip 2)解压 unzip mainnet.zip 3)执行geth加载配置文件(若geth没加入环境变量,在geth所在目录中执行) geth --datadir node init genesis.json ## 二、下载区块节点数据,进入区块节点数据目录 /root/bsc_project/nodeData 快照目录地址 https://github.com/binance-chain/bsc-snapshots 下载最新快照 wget -O geth.tar.gz "<复制的快照地址>" 解压快照(确保磁盘有足够空间,快照压缩包约700G,解压后约800G,大小随区块高度而不同,所以磁盘空闲至少要1.6T以上) tar zxvf geth.tar.gz 确认解压后的目录中存在 chaindata 和 triecache 文件,并将这两文件移动到当前目录下(当前目录路径会作为 geth启动指定的datadir路径) 如 mv server/data-seed/geth/chaindata nodeData/chaindata mv server/data-seed/geth/triecache nodeData/triecache
 ## 三、启动节点 方式一:后台启动(geth已加入环境变量) nohup geth --config /root/bsc/config.toml --datadir /root/bsc_project/nodeData --cache 48000 --rpc.allow-unprotected-txs --txlookuplimit 0 --diffsync & 方式二:(在/root/bsc_project目录下) screen -S bsc_project ./geth --config ./config.toml --datadir /root/bsc_project/nodeData --cache 18000 --rpc.allow-unprotected-txs --txlookuplimit 0 ## 四、最后可以根据机器配置修改config.toml文件,增加节点来加快同步速度 HTTPHost: 值默认为 "localhost",仅允许本地访问,可设置为:"0.0.0.0" HTTPVirtualHosts:设置为:HTTPVirtualHosts = ["*"] HTTPPort = 8545 :HTTP端口 ## geth启动参数说明 --datadir "xxxx" 指定数据目录,用来存放区块链数据,状态数据,keystore数据等。如果不加这个参数这些数据在不同的系统会放到不同的位置。 --cache value 分配给内部缓存的内存MB数量,默认为 128,最后设置大一点儿,起码 1024吧,这个值设大一些可以提高数据同步效率。 --rpc 启用HTTP-RPC服务器 --rpcaddr value HTTP-RPC服务器接口地址(默认值:“localhost”),默认只允许本地连接,设置为 0.0.0.0 可以接收任何地址发来的连接请求 --rpcport value HTTP-RPC服务器监听端口(默认值:8545),可以改为不同的端口 --ws 启用WS-RPC服务器,几乎所有第三方节点都不启动这个服务,而要监听以太坊事件又必须启动这个服务 --wsaddr value WS-RPC服务器监听接口地址(默认值:“localhost”) --wsport value WS-RPC服务器监听端口(默认值:8546) 如: nohup geth --datadir data --cache 4096 --rpc --rpcport 6666 --rpcaddr 0.0.0.0 --ws --wsaddr 0.0.0.0 --wsport 6667 --wsorigins "*" & > nohup.out ## 查询监控同步状态 # 需要在eth的根目录下进入交互模式(data 为上面启动 geth 时指定的 datadir 目录) # geth attach data/geth.ipc > eth.syncing #查看当前的同步状态 > eth.blockNumber #查看当前区块号,没同步到区块会显示为 0 > net.peerCount #查看这个节点连了多少个其它节点进行数据同步,返回为0是有问题的,没有同步 # geth removedb --datadir data #移除区块链数据并重新同步数据 ## rpc服务连接测试 #当前燃气价格 # curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}' http://127.0.0.1:8545 {"jsonrpc":"2.0","id":73,"result":"0x0"} 查询最新区块高度 # curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://127.0.0.1:8545 {"jsonrpc":"2.0","id":1,"result":"0x46e"} 根据区块高度查询当前区块里的交易数 # curl -H Content-Type:application/json -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0x517"],"id":1}' http://127.0.0.1:8545 {"jsonrpc":"2.0","id":1,"result":"0x1"}