WHCSRL 技术网

在Ubuntu系统中使用HECO二进制文件部署HECO主网同步节点

  • heco官网:https://www.hecochain.com/zh-cn/
  • heco链github地址:https://github.com/HuobiGroup/huobi-eco-chain/releases
  • 主网区块链浏览器:https://hecoinfo.com/
  • 主网链官方部署文档:https://docs.hecochain.com/#/dev/install
  • heco主网相关信息:https://docs.hecochain.com/#/mainnet
  • 手续费(gasprice):https://tc.hecochain.com/price/prediction
  • 创世文件介绍:https://docs.hecochain.com/#/genesis
  • 开发者文档:https://docs.hecochain.com/#/

注:因监管问题,hecochain.com域名相关的网页无法进行查看。

本篇文档开始之前,大概说明一下本次HECO同步的情况:

  • 服务器环境
服务器:阿里云服务器
CPU:8核
内存:32GB
数据盘:1T SSD 数据盘
带宽:独享 30M
  • 1
  • 2
  • 3
  • 4
  • 5
  • 软件环境
Ubuntu 20.04.3
  • 1

一、下载HECO二进制文件

  • 下载HECO二进制文件
cd /data/heco
wget https://github.com/HuobiGroup/huobi-eco-chain/releases/download/v1.2.0/geth-linux-amd64
  • 1
  • 2
  • 授予可执行权限
chmod +x geth-linux-amd64 
  • 1

二、编辑heco主网配置文件

  • 编辑heco主网配置文件,主网配置文件可参考:https://docs.hecochain.com/#/dev/deploy
cd /data/heco
cat config.toml

[Eth]
SyncMode = "fast"
TrieCleanCacheRejournal= 300000000000

[Eth.Miner]
GasFloor = 8000000
GasCeil = 8000000
GasPrice = 0
Recommit = 3000000000
Noverify = false

[Eth.Ethash]
CacheDir = "ethash"
CachesInMem = 2
CachesOnDisk = 3
CachesLockMmap = false
DatasetDir = "/data/heco/data/.ethash"
DatasetsInMem = 1
DatasetsOnDisk = 2
DatasetsLockMmap = false
PowMode = 0

[Eth.TxPool]
Locals = []
NoLocals = false
Journal = "transactions.rlp"
Rejournal = 3600000000000
PriceLimit = 1
PriceBump = 10
AccountSlots = 16
GlobalSlots = 4096
AccountQueue = 64
GlobalQueue = 1024
Lifetime = 10800000000000

[Node]
DataDir = "/data/heco/data"
InsecureUnlockAllowed = true
NoUSB = true
IPCPath = "geth.ipc"
HTTPHost = "0.0.0.0"
HTTPPort = 8545
HTTPCors = ["*"]
HTTPVirtualHosts = ["*"]
HTTPModules = ['eth', 'net', 'web3']

WSHost = "0.0.0.0"
WSPort = 8546
WSModules = ['eth', 'net', 'web3']

GraphQLVirtualHosts = ["localhost"]


[Node.P2P]
MaxPeers = 50
NoDiscovery = false

ListenAddr = ":32668"
EnableMsgEvents = false

[Node.HTTPTimeouts]
ReadTimeout = 30000000000
WriteTimeout = 30000000000
IdleTimeout = 120000000000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 修改HECO主网配置文件

HTTPHost: HTTP-RPC服务连接白名单,此参数的值默认为 “localhost”,仅允许本地可访问,可设置为:“0.0.0.0”

HTTPVirtualHosts:HTTP-RPC服务监听接口,此参数的值默认为 [“localhost”],可设置为:HTTPVirtualHosts = ["*"]

三、二进制启动HECO主网

3.1 下载bsc主网快照数据

  • 安装linux下的窗口管理器工具:screen
apt-get install screen -y
  • 1

3.2 启动HECO主网节点

screen -S heco /data/heco/geth-linux-amd64 --config /data/heco/config.toml --logpath /data/heco/logs
  • 1

参数说明:

–config:指定HECO节点配置文件
–logpath:指定HECO节点日志目录

  • 查看节点日志启动状态
# head -100 chain.log 
INFO [10-18|18:27:38.096] Starting Geth on Ethereum mainnet... 
INFO [10-18|18:27:38.096] Bumping default cache on mainnet         provided=1024 updated=4096
INFO [10-18|18:27:38.097] Maximum peer count                       ETH=50 LES=0 total=50
INFO [10-18|18:27:38.097] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
WARN [10-18|18:27:38.097] Option nousb is deprecated and USB is deactivated by default. Use --usb to enable 
WARN [10-18|18:27:38.098] Sanitizing cache to Go's GC limits       provided=4096 updated=2606
INFO [10-18|18:27:38.098] Set global gas cap                       cap=25,000,000
WARN [10-18|18:27:38.098] Sanitizing invalid miner gas price       provided=0    updated=1,000,000,000
INFO [10-18|18:27:38.098] Allocated trie memory caches             clean=390.00MiB dirty=651.00MiB
INFO [10-18|18:27:38.098] Allocated cache and file handles         database=/data/heco/data/geth/chaindata cache=1.27GiB handles=32767
INFO [10-18|18:27:38.114] Opened ancient database                  database=/data/heco/data/geth/chaindata/ancient readonly=false
INFO [10-18|18:27:38.115] Writing default main-net genesis block 
INFO [10-18|18:27:38.115] Persisted trie from memory database      nodes=5 size=742.00B time="37.858µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [10-18|18:27:38.115] Initialised chain configuration          config="{ChainID: 128 Homestead: 0 DAO: <nil> DAOSupport: true EIP150: 0 EIP155: 0 EIP158: 0 Byzantium: 0 Constantinople: 0 Petersburg: 0 Istanbul: 0, Muir Glacier: <nil>, RedCoastBlock: 6618800, Berlin: 8577000, London: 8577000, Engine: congress}"
INFO [10-18|18:27:38.115] Initialising Ethereum protocol           network=128 dbversion=<nil>
INFO [10-18|18:27:38.116] Loaded most recent local header          number=0 hash=5751d1..4cb144 td=1 age=10mo3w10h
INFO [10-18|18:27:38.116] Loaded most recent local full block      number=0 hash=5751d1..4cb144 td=1 age=10mo3w10h
INFO [10-18|18:27:38.116] Loaded most recent local fast block      number=0 hash=5751d1..4cb144 td=1 age=10mo3w10h
WARN [10-18|18:27:38.117] Failed to load snapshot, regenerating    err="missing or corrupted snapshot"
INFO [10-18|18:27:38.117] Rebuilding state snapshot 
INFO [10-18|18:27:38.117] JamConfig sanity PeriodsSecs             old=0 new=3
INFO [10-18|18:27:38.117] JamConfig sanity JamSecs                 old=0 new=15
INFO [10-18|18:27:38.117] JamConfig sanity UnderPricedFactor       old=0 new=3
INFO [10-18|18:27:38.117] JamConfig sanity PendingFactor           old=0 new=1
INFO [10-18|18:27:38.117] JamConfig sanity MaxValidPendingSecs     old=0 new=300
INFO [10-18|18:27:38.117] Resuming state snapshot generation       root=51729b..61d32f accounts=0 slots=0 storage=0.00B elapsed="544.689µs"
INFO [10-18|18:27:38.117] Generated state snapshot                 accounts=4 slots=0 storage=259.00B elapsed="780.136µs"
INFO [10-18|18:27:38.117] Regenerated local transaction journal    transactions=0 accounts=0
INFO [10-18|18:27:38.132] Allocated fast sync bloom                size=1.27GiB
INFO [10-18|18:27:38.132] Gasprice oracle is ignoring threshold set threshold=2
INFO [10-18|18:27:38.132] Prediction started                       checkBlocks=20 Interval=3 ff=2 mf=5 lf=8 minMi=500 minLi=1000 fp=75 mp=90 minCnt=100
WARN [10-18|18:27:38.132] Error reading unclean shutdown markers   error="leveldb: not found"
INFO [10-18|18:27:38.133] Starting peer-to-peer node               instance=Geth/v1.2.0-stable-f7849a80/linux-amd64/go1.13.4
INFO [10-18|18:27:38.139] Stored checkpoint snapshot to disk       number=0 hash=5751d1..4cb144
INFO [10-18|18:27:38.145] New local node record                    seq=1 id=ef7e229d842043a6 ip=127.0.0.1 udp=32668 tcp=32668
INFO [10-18|18:27:38.149] Started P2P networking                   self=enode://e1f394741c1e2e77797d04e42da63b9f52f3717d89a33f7317ef70f3b87511869508114d5a522ba5c543d961d9ed3426a6457cbe33a550ecfc01fc36145564d1@127.0.0.1:32668
INFO [10-18|18:27:38.149] IPC endpoint opened                      url=/data/heco/data/geth.ipc
INFO [10-18|18:27:38.150] HTTP server started                      endpoint=[::]:8545 prefix= cors=* vhosts=*
INFO [10-18|18:27:38.150] WebSocket enabled                        url=ws://[::]:8546
INFO [10-18|18:27:38.151] Initialized state bloom                  items=9 errorrate=0.000 elapsed=18.155ms
ERROR[10-18|18:27:39.440] Snapshot extension registration failed   peer=98998f1a err="peer connected on snap without compatible eth support"
INFO [10-18|18:27:39.630] New local node record                    seq=2 id=ef7e229d842043a6 ip=47.242.166.213 udp=32668 tcp=32668
INFO [10-18|18:27:48.150] Block synchronisation started 
INFO [10-18|18:27:50.076] Looking for peers                        peercount=2 tried=139 static=0
INFO [10-18|18:28:01.226] Looking for peers                        peercount=2 tried=98  static=0
INFO [10-18|18:31:58.461] Imported new state entries               count=273 elapsed="3.638µs"   processed=273 pending=4369 trieretry=0 coderetry=0 duplicate=0 unexpected=0
......
INFO [10-18|18:35:19.310] Imported new block receipts              count=2048 elapsed=381.770ms   number=875,712 hash=8f1f86..3a8931 age=9mo2w5d    size=5.63MiB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

四、查询是否同步完成

  • 查看当前最新区块
# 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":"0xa352a4"}
  • 1
  • 2
  • 查看当前同步状态
# curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8545
{"jsonrpc":"2.0","id":1,"result":false}
  • 1
  • 2

注:结果为false为同步完成


以上,就是今天分享的全部内容了。

希望大家通过以上方式可以解决自己的实际需求,解决自己目前所遇到的问题。

如果在部署过程中有任何疑问,可以扫描下面的二维码,添加我的个人微信,备注:地区-职业方向-昵称,欢迎来撩,加入区块链技术交流群,与更多的区块链技术大佬学习交流。

在这里插入图片描述

原创不易,码字不易。 觉得这篇文章对你有点用的话,麻烦你为本文点个赞,留言或转发一下,因为这将是我输出更多优质文章的动力,感谢!

推荐阅读