1. 程式人生 > >以太坊開發環境搭建

以太坊開發環境搭建

適合 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機器上建立
  • 甚至一臺機器可以建立多個節點,在一臺機器上實現多節點的私有網絡。

缺點

  • 因為不是全球化的,只有在私有網絡內的節點才能查看智能合約的執行、調用等。

搭建私有網絡

  1. 建立目錄和 genesis.json
    • 創建一個目錄,例如tmpPrivate
    • 創建文件genesis.json, 並填入如下內容
    { "nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x0", "gasLimit": "0x80000000", "difficulty": "0x1", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { } }
  2. 執行命令,創建創世區塊

    geth --datadir "./" init genesis.json

    執行之後當前目錄下面會新增出兩個文件夾gethkeystore

    • geth中保存的是區塊鏈的相關數據
    • keystore中保存的是該鏈條中的用戶信息
  3. 創建自己的私有鏈條
  • 執行一條最簡單的geth命令,來創建自己的私有鏈條
    geth --datadir "./" --nodiscover console 2>>geth.log
  1. 在自己的私有鏈條上創建用戶
  • 輸入命令 eth.accounts

    可以看到當前該區塊鏈中共有幾個賬號,以及每個賬號的公鑰地址
  • 創建一個新用戶,密碼是xxx personal.newAccount("xxx")
  1. 輸出區塊鏈的Log
  • 執行如下命令

    geth --datadir "./" --nodiscover console 2>>geth.log

    進入命令行模式,其中參數
    • --datadir 代表文件夾地址
    • --nodiscover 代表該鏈條不希望被其他節點發現,
    • console >> geth.log 代表將控制臺輸出到文件geth.log中去
  • 打開另一個終端,找到geth.log的所在目錄,執行命令tail -f geth.log 從而持續的輸出以太坊的日誌

  1. 開始挖礦
  • 執行命令miner.start(), 開始在我們的區塊鏈上進行挖礦

註意點:

1. 挖礦挖到的ether幣會默認保存在第一個賬戶中,即eth.acccounts[0]中。

2. 挖礦是執行智能合約的基礎。如果停止挖礦的話,不僅以太幣會停止生成,所有智能合約的調用也會不起作用。

3. 如果真的要停止挖礦,可以執行命令miner.stop()來停止挖礦

4. 按上面的命令,應該是可以實現以太坊挖礦的。如果不行的話,有可能就是之前有存在的鏈,此時應該刪除之前的數據。在Mac下即刪除~/.ethash文件夾和裏面的文件即可。
  1. 挖礦啟動後,查看主賬戶的以太幣數量

acc0 = eth.accounts[0]

eth.getBalance(acc0)

結果只要不為0,那就說明挖礦成功!

以太坊開發環境搭建