以太坊開發環境搭建
阿新 • • 發佈:2018-05-09
適合 extra limit class ref acc difficult 發現 就是
Geth安裝
全稱 Go Ethereum, 官網地址:https://github.com/ethereum/go-ethereum/wiki/geth
安裝指令:
brew tap ethereum/ethereum
brew install ethereum
版本檢測:
geth version
以太坊生產網絡/測試網絡/私有網絡
測試網絡
是官方提供的, 專供用來開發、調試和測試。- 因為網絡是官方提供的,因此對於以太坊技術的底層實現、Geth的各種參數接口、整個以太坊的技術真實性能的理解就會弱很多。
- 從開發的角度來說,一個更好的選擇是Private Network,可以從技術的底層去深入理解以太坊。
私有網絡
以太坊的私有網絡
,顧名思義就是由用戶自己通過Geth創建的私有網絡,是一個非常適合開發、調試和測試的網絡。
優點
- 方便開發者深入理解以太坊的技術底層
- 因為節點相對較少,速度較快
- 用戶可以隨時創建,隨時銷毀,隨時重建一個以太坊網絡
- 隨意的增加節點數目,或者刪除節點,
- 既可以在服務器上建立,也可以在自己的windows或者Mac機器上建立
- 甚至一臺機器可以建立多個節點,在一臺機器上實現多節點的私有網絡。
缺點
- 因為不是全球化的,只有在私有網絡內的節點才能查看智能合約的執行、調用等。
搭建私有網絡
- 建立目錄和
genesis.json
- 創建一個目錄,例如tmpPrivate
- 創建文件genesis.json, 並填入如下內容
{ "nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x0", "gasLimit": "0x80000000", "difficulty": "0x1", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { } }
執行命令,創建創世區塊
geth --datadir "./" init genesis.json
執行之後當前目錄下面會新增出兩個文件夾
geth
和keystore
- geth中保存的是區塊鏈的相關數據
- keystore中保存的是該鏈條中的用戶信息
- 創建自己的私有鏈條
- 執行一條最簡單的geth命令,來創建自己的私有鏈條
geth --datadir "./" --nodiscover console 2>>geth.log
- 在自己的私有鏈條上創建用戶
輸入命令
可以看到當前該區塊鏈中共有幾個賬號,以及每個賬號的公鑰地址eth.accounts
- 創建一個新用戶,密碼是xxx
personal.newAccount("xxx")
- 輸出區塊鏈的Log
執行如下命令
進入命令行模式,其中參數geth --datadir "./" --nodiscover console 2>>geth.log
--datadir
代表文件夾地址--nodiscover
代表該鏈條不希望被其他節點發現,console >> geth.log
代表將控制臺輸出到文件geth.log中去
打開另一個終端,找到
geth.log
的所在目錄,執行命令tail -f geth.log
從而持續的輸出以太坊的日誌
- 開始挖礦
- 執行命令
miner.start()
, 開始在我們的區塊鏈上進行挖礦
註意點:
1. 挖礦挖到的ether幣會默認保存在第一個賬戶中,即eth.acccounts[0]中。
2. 挖礦是執行智能合約的基礎。如果停止挖礦的話,不僅以太幣會停止生成,所有智能合約的調用也會不起作用。
3. 如果真的要停止挖礦,可以執行命令miner.stop()來停止挖礦
4. 按上面的命令,應該是可以實現以太坊挖礦的。如果不行的話,有可能就是之前有存在的鏈,此時應該刪除之前的數據。在Mac下即刪除~/.ethash文件夾和裏面的文件即可。
- 挖礦啟動後,查看主賬戶的以太幣數量
acc0 = eth.accounts[0]
eth.getBalance(acc0)
結果只要不為0,那就說明挖礦成功!
以太坊開發環境搭建