最近區塊鏈公司不少都會搞發糖果活動,通常都能吸引幾萬粉絲,這就來了一個需求,給人家發糖果。主流的geth,parity,甚至imtoken錢包只能輸入地址一筆筆交易,幾萬筆交易人工根本沒法完成,因而開始研究使用web3腳本羣發交易。java
在2017年7月25號,web3就已經發布web3v1.0.0-beta.9公測版本,但國內甚至國外大部分教程還停留在早期的版本,其中的坑不言而喻,只看這些文章是根本跑不通的,做者就是深受其害,最後參考官網文檔,github issue才最終完成。node
經過RPC 調用與本地節點通訊。web3能夠與任何暴露了RPC接口的以太坊節點鏈接。python
web3在github分爲web3.js,web3j,web3.py,分別對應node,java,python三門語言,要數node star人數最多,做者接下來教程也是web3.js。linux
前三點相對比較容易,接下來主要講同步一個以太坊節點。git
目前來講搞一個可用的以太坊節點有三種辦法github
首先使用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殺死進程