區塊鏈學堂(第三課):以太坊生產網路/測試網路/私人網路+Geth 搭建私人網路實戰

來源:互聯網
上載者:User

要理解以太坊 PrivateNetwork 先要理解以太坊的兩種官方網路,目前以太坊官方提供了兩種網路: 生產環境網路 測試網路 TestNet

下面將分別簡單講解下這兩種網路。 以太坊生產網路

以太坊的生產網路顧名思義,也就是產生真正有價值的 的以太幣的網路。 目前生產網路目前已經產生了300萬以上的區塊,還在持續產生中。挖礦挖出來的每個以台幣在10美金以上。 生產環境下的以太坊狀態時如此的(截圖自2017-02-17)

生產環境網路優點 全球化的,部署在Internet環境上的, 智能合約的代碼,執行,區塊的調用,都可以清晰的查看到。 部署在生產環境上的智能合約,全世界任何應用都可以調用

缺點: 任何合約執行都會消耗真實的以太幣,也就是真實的現金。不適合開發、調試和測試, 所有節點是全球化的,速度較慢 且對於部分商業應用來說,只需要一部分節點,例如分布式部署的10-20台伺服器即可。而不需要遍布全球的網路。

  以太坊測試網路 TestNet

 

以太坊的測試網路也是官方提供的,顧名思義就是專供使用者來開發、調試和測試的。 上面的合約執行不消耗真實的以太幣。也就是不花錢

所以如果開發簡單的智能合約的話,用測試網路也就足夠了,使用者可以把更多的精力集中在智能合約的編寫上。

但因為網路是官方提供的,因此對於以太坊技術的底層實現、Geth的各種參數介面、整個以太坊的技術真實效能的理解就會弱很多。所以從開發的角度來說,一個更好的選擇是Private Network,可以從技術的底層去深入理解以太坊。

測試環境網路優點 合約執行不消耗真實貨幣 全球化的,部署在Internet環境上的, 智能合約的代碼,執行,區塊的調用,都可以清晰的查看到。 部署在測試環境上的智能合約,全世界任何應用都可以調用

缺點: 所有節點是全球化的,速度較慢 測試網路不可能作為商業應用的實際落地環境

  以太坊私人網路 PrivateNetwork

 

以太坊的私人網路,顧名思義就是由使用者自己通過Geth建立的私人網路,是一個非常適合開發、調試和測試的網路

優點 方便開發人員深入理解以太坊的技術底層 因為節點相對較少,速度較快 使用者可以隨時建立,隨時銷毀,隨時重建一個以太坊網路 隨意的增加節點數目,或者刪除節點, 既可以在伺服器上建立,也可以在自己的windows或者Mac機器上建立, 甚至一台機器可以建立多個節點,在一台機器上實現多節點的私人網路。

缺點 因為不是全球化的,只有在私人網路內的節點才能查看智能合約的執行、調用等。 下一章講解:實戰搭建私人網路。

在本章中我們將實戰如何使用Geth,如何搭建以太坊的私人網路。

之前說過Geth是三種實現以太坊協議的工具之一,由於Geth是官方推崇的以及個人精力有限,對於另外兩種工具的搭建私人網路,請參考網上資料。
下面的Geth實戰,在MacBook上實現,對於Windows方面,比較類似。

  Step 1: 建立目錄和genesis.json

  在命令列模式建立一個目錄,例如tmpPrivate

建立檔案genesis.json, 並填入如下內容。

{  "nonce": "0x0000000000000042",  "timestamp": "0x0",  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",  "extraData": "0x0",  "gasLimit": "0x80000000",  "difficulty": "0x1",  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",  "coinbase": "0x3333333333333333333333333333333333333333",  "alloc": {     }}

使用者可以vim,也可以用其他編輯器如sublime等,個人推薦使用Atom
Atom 官網地址: https://atom.io/
Atom 是一個由Google支援發布的文字編輯器, 一個你可以自訂做任何事情的現代編輯器,後面涉及檔案和代碼示範會主要在Atom上執行。

建立完成後,在Atom中,本檔案夾下應該只有一個genesis.json

  Step 2: 執行命令,建立創世區塊

  切換回命令列,執行命令,製造創世區塊

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

執行結果如下:

這時候可以注意一下,此時目前的目錄下面會新增出兩個檔案夾geth和keystore geth中儲存的是區塊鏈的相關資料 keystore中儲存的是該鏈條中的使用者資訊

此時從Atom中看到的目錄結構是這樣的:

  Step 3:建立自己的私人鏈條

  執行一條最簡單的geth命令,來建立自己的私人鏈條

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

geth的參數項目很多,有興趣的可以打geth –help 來獲得詳細資料,我們也會在之後的章節中對關鍵參數項進行說明。 此時的命令列應該是這樣的:

  Step 4:在自己的私人鏈條上建立使用者

  輸入命令eth.accounts, 我們會發現傳回值為[]

這是因為此時雖然以太坊的私人鏈已經被創造出來,但還沒有任何賬戶。 輸入命令personal.newAccount("xxx"), 該命令將創造一個新的使用者,該使用者的密碼是xxx. 當然使用者也可以將xxx 改為123,或者123456,或者任意密碼 再次輸入命令 eth.accounts, 我們會發現一個新的使用者被建立了出來,這就代表我們已經建立了一個賬戶,重複personal.newAccount() & eth.accounts 我們可以建立若干個賬戶出來

整個命令截圖如下:

  Step 5: 輸出區塊鏈的Log

  在Step 3中,我們執行的代碼

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

其中的代碼 console 2>> geth.log 代表將控制台的一部分輸出,輸出到檔案geth.log上去。 開啟另一個終端,找到geth.log的所在目錄,執行命令 tail -f geth.log 從而持續的輸出以太坊的日誌

整個過程如下圖所示:

  Step 6: 最重要的一步來了,開始挖礦。

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

此時Geth.log的輸出應該是這樣的

一直等到100%。這個以太坊私人鏈就會正式啟動,並持續不斷的產生出以太坊來。 注意點: 1. 挖礦挖到的ether幣會預設保在第一個賬戶中,即eth.acccounts[0]中。 2. 挖礦是執行智能合約的基礎。如果停止挖礦的話,不僅以太幣會停止產生,所有智能合約的調用也會不起作用。 3. 如果真的要停止挖礦,可以執行命令miner.stop()來停止挖礦 4. 按上面的命令,應該是可以實現以太坊挖礦的。如果不行的話,有可能就是之前有存在的鏈,此時應該刪除之前的資料。在Mac下即刪除~/.ethash檔案夾和裡面的檔案即可 Step 7: 最終當挖礦啟動的時候的日誌是這樣的

Step 8: 挖礦啟動後,查看主賬戶的以太幣數量

acc0 = eth.accounts[0]eth.getBalance(acc0)

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

下一章,將講解geth中的若干概念,以及一些基本命令

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.