web3公測版本教程(一)-ETH公有鏈節點同步

ETH公有鏈節點同步

最近區塊鏈公司不少都會搞發糖果活動,通常都能吸引幾萬粉絲,這就來了一個需求,給人家發糖果。主流的geth,parity,甚至imtoken錢包只能輸入地址一筆筆交易,幾萬筆交易人工根本沒法完成,因而開始研究使用web3腳本羣發交易。java

在2017年7月25號,web3就已經發布web3v1.0.0-beta.9公測版本,但國內甚至國外大部分教程還停留在早期的版本,其中的坑不言而喻,只看這些文章是根本跑不通的,做者就是深受其害,最後參考官網文檔,github issue才最終完成。node

web3原理

經過RPC 調用與本地節點通訊。web3能夠與任何暴露了RPC接口的以太坊節點鏈接。python

web3種類

web3在github分爲web3.js,web3j,web3.py,分別對應node,java,python三門語言,要數node star人數最多,做者接下來教程也是web3.js。linux

web3.js使用前置條件

  1. 安裝node 最好使用v8.1,公測版web3使用大量異步操做,使用async等語法比較方便。
  2. 使用npm安裝web3,npm install web3 --save
  3. linux或者mac環境(window環境下web3一直報錯,錢包問題也很大)
  4. web3是與本地節點通訊(遠程其實也行),因此必須同步一個以太坊節點

前三點相對比較容易,接下來主要講同步一個以太坊節點。git

ETH公有鏈節點同步

目前來講搞一個可用的以太坊節點有三種辦法github

  1. 同步一個geth節點
  2. 同步一個parity節點
  3. 使用他人(包括節點服務商)同步的節點

第一次嘗試同步節點

首先使用geth錢包下載直接同步,結果400w塊左右後永遠到不了終點,如今回想cpu,內存,硬盤網絡都有問題,想同步簡直作夢。事後論壇尋找緣由,是由於國內節點少網絡環境差,解決方法發現國內有個星火節點的列表,教程你們能夠搜索下,也成功配置但效果並不明顯,就很少說這個。
失敗緣由:以太坊節點對內存,cpu,硬盤速度,網絡情況要求都比較高,星火節點也只有36個節點,不少還沒能同步到最新塊,因此你們有條件還要多多參與,攜手共建區塊鏈美好將來。web

第二次嘗試同步節點

接下來逛論壇發現錢包不僅有geth還有parity輕錢包據說國內效果不錯,換來臺i5處理器,8g內存,120g固態的電腦去同步,一天左右就同步成功了,但一直很不穩定,過一會節點就會被遠程節點拉開距離,沒法被web3使用。
失敗緣由:使用任務管理器看cpu常常到99%,配置還低,加上公司網絡也不穩定。還有parity在windows環境下可能運行也不是很穩定。npm

第三次嘗試同步節點

發糖果日期漸漸到來,因爲不肯定節點是放在本地仍是服務器好,服務器放國內仍是國外好,geth仍是parity,衝冠一怒得砸錢,因而在阿里雲上配置了兩臺服務器,配置同爲8g 4核 500ssd 百兆帶寬是剛需,因爲以前經驗還選擇了高計算型,一臺在華東部署parity節點,另外一臺部署geth節點在硅谷。結果都完成了華東的parity用了2天半,美國的geth用了一天半。windows

所用命令:

geth --fast --cache=2048 --rpc --rpcapi personal,web3,eth,net
--ws --wsorigins "*"

--fast 使用快速同步模式
--cache= 增大內存使用
--rpc --rpcapi personal,web3,eth,net
開啓rpc接口和personal等操做api,後邊rpcapi必定要寫這也是遇到的一個坑,若是沒有後期能使用基礎web3函數,但不能使用personal等API
--ws --wsorigins "*" 容許全部人使用ws鏈接api

parity 官方提供了一個配置生成器,因爲最後沒有在parity上開發,好用配置項目能夠自行添加

問題:

linux服務器geth,parity命令後如何退出ssh繼續執行,退出自動殺死執行的進程,使用nohup不掛斷的運行命令,同時log輸出到output.log,修改命令以下。

nohup geth --fast --cache=2048 --rpc --rpcapi personal,web3,eth,net --ws --wsorigins "*" >> output.log 2>&1 & //將返回進程碼
tail -f output.log //查看實時查看日誌
kill processNum //關閉geth殺死進程

同步節點結論

  1. 目前來講parity和geth都是能夠同步成功
  2. 節點徹底能夠放在國外,同步速度會很快,使用ssh鏈接執行web3腳本就好有特殊需求國內阿里雲也能夠同步成功。
  3. 配置至少4核 8g 300G固態
  4. geth使用fast模式,parity使用warp模式,都是快速同步,徹底能夠用於web3開發。這兩個模式默認也是開啓的爲了保險才加上參數。
  5. 同步時候總會有一些錯誤,訣竅就是死等,geth同步完成後還會去重頭處理1000w多的數據不要驚慌等。geth偶爾會丟失異步失敗一些節點只要進程不停就死等。parity後期會很慢由於後邊區塊交易多也不要驚慌死等。
相關文章
相關標籤/搜索