方偉的博客
          j2ee技術(shù)、網(wǎng)絡(luò)、web等,同名的人真多,我的QQ是20025404
          posts - 21,comments - 14,trackbacks - 0

          隨筆分類(27)

          最新隨筆

          搜索

          •  

          最新評論

          1.服務(wù)器

          需要1T SSD(建議NVMe)硬盤,最好是裸硬盤,不可以用機械盤,否則會永遠無法同步完成。

          2.帶寬

          建議國外服務(wù)器,100M非cn2線路即可

          3.操作系統(tǒng)

          建議centos7/8,或ubuntu,這里均以centos為例

          4.準備環(huán)境:

          yum update -y

          yum install screen iftop iotop -y

          4.1.安裝golang

          yum install golang -y

          或編譯安裝


          *注意:如果使用的 Go 版本是 1.13 及以上 (推薦),如果不設(shè)置以下命令編譯ETH源碼時可能會出錯
          go env -w GO111MODULE=on
          go env -w GOPROXY=https://goproxy.io,direct
           

          5.創(chuàng)建一個screen

          screen -S eth

          *注意1:最后退出時用ctrl+ad(順序按a和d字母即可),不要用exit或ctrl+d退出會話。

          *注意2:退出會話后,可以用screen -x eth重新連接到會話。

          6.安裝eth客戶端

          #這里我的數(shù)據(jù)目錄,可以根據(jù)需要自行更改

          mkdir -p /data/eth/data

          #下載最新版本并編譯

          cd /root
          wget -O go-ethereum-1.10.12.tar.gz https://github.com/ethereum/go-ethereum/archive/refs/tags/v1.10.12.tar.gz
          tar -xvf go-ethereum-1.10.12.tar.gz
          cd /root/go-ethereum-1.10.12
          make all

          7.檢查安裝是否成功

          /root/go-ethereum-1.10.12/build/bin/geth version


          8.設(shè)置防火墻
          firewall-cmd --permanent --zone=public --add-port=30303/tcp
          firewall-cmd --permanent --zone=public --add-port=8545/tcp
          firewall-cmd --reload
          不懂防火墻配置的,可以先禁用防火墻,關(guān)于firewalld的使用技巧,之后會單獨寫一篇教程

           

          9.啟動節(jié)點

          ulimit -n 65535

          /root/go-ethereum-1.10.12/build/bin/geth --datadir /data/eth/data --syncmode "fast" --cache=2048 --maxpeers 200 --http --http.addr=0.0.0.0 --http.port=8545 --http.api "web3,eth,debug,personal,net,admin" --http.corsdomain "*" --allow-insecure-unlock
           

          *然后按ctrl+ad回到主會話即可


          10.測試驗證

          curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://127.0.0.1:8545

          (如果已經(jīng)追上最新高度,result會返回false,這樣以后就不用受infura調(diào)用頻率的限制了)

          curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://127.0.0.1:8545

          (節(jié)點未同步完成會返回0)

          11.停止節(jié)點

          方式1:(建議,畢竟停止后還要啟動不是)

          screen -r eth

          按ctrl+c,等待一會即可看到節(jié)點停止

           

          12.接口文檔參考

          RPC接口文檔,如:

          以太坊JSON RPC手冊 / eth_call - 匯智網(wǎng)


          其它參考:

          ETH鏈github地址:https://github.com/ethereum/go-ethereum

          主網(wǎng)瀏覽器:https://etherscan.io


          13.注意事項

          *同步到最高區(qū)塊所需時間:

          需要看網(wǎng)絡(luò)帶寬和磁盤io性能,用NVMe的硬盤,讀寫1000到2000左右,100M的國外非cn2帶寬,從0開始同步,大概需要半天到一天。

          *如果2、3天還沒有追上,或者最后100個塊始終追不上,極有可能是服務(wù)器磁盤io存在瓶頸,再次強調(diào),不可以用機械盤,不建議用虛擬機(磁盤不能做虛擬化),否則io速度不夠,就永遠無法同步完成,因為最后還有一步需要很高的IO速度才可以完成。

          *硬盤最好1T空間,目前實際會占用584G左右。

          posted on 2021-11-14 23:36 方偉的博客 閱讀(2421) 評論(0)  編輯  收藏 所屬分類: 區(qū)塊鏈
          主站蜘蛛池模板: 丹阳市| 穆棱市| 东丰县| 蓝田县| 西宁市| 梅河口市| 炉霍县| 昌图县| 贵南县| 平舆县| 台东县| 安福县| 鹤壁市| 碌曲县| 奎屯市| 来安县| 绍兴市| 孙吴县| 本溪市| 天峻县| 汨罗市| 聊城市| 桦川县| 丹凤县| 祁门县| 叶城县| 澄城县| 新余市| 隆昌县| 辉县市| 昌都县| 彰武县| 临朐县| 汽车| 南汇区| 德兴市| 来宾市| 阜平县| 六安市| 当涂县| 大冶市|