要理解以太坊代幣 privatenetwork 先要理解以太坊代幣的兩種官方網路,目前以太坊代幣官方提供了兩種網路:
生產環境網路
測試網路 testnet
下面將分別簡單講解下這兩種網路。
以太坊代幣生產網路
以太坊代幣的生產網路顧名思義,也就是產生真正有價值的 的以太幣的網路。 目前生產網路目前已經生成了300萬以上的區塊,還在持續生成中。挖礦挖出來的每個以台幣在10美金以上。 生產環境下的以太坊代幣狀態時如此的(截圖自2017-02-17)
p1生產環境網路優點
全球化的,部署在internet環境上的,
智慧型合約的**,執行,區塊的呼叫,都可以清晰的檢視到。
部署在生產環境上的智慧型合約,全世界任何應用都可以呼叫
缺點:任何合約執行都會消耗真實的以太幣,也就是真實的現金。不適合開發、除錯和測試,
所有節點是全球化的,速度較慢
且對於部分商業應用來說,只需要一部分節點,例如分布式部署的10-20臺伺服器即可。而不需要遍布全球的網路。
以太坊代幣測試網路 testnet
以太坊代幣的測試網路也是官方提供的,顧名思義就是專供使用者來開發、除錯和測試的。 上面的合約執行不消耗真實的以太幣。也就是不花錢
所以如果開發簡單的智慧型合約的話,用測試網路也就足夠了,使用者可以把更多的精力集中在智慧型合約的編寫上。
但因為網路是官方提供的,因此對於以太坊代幣技術的底層實現、geth的各種引數介面、整個以太坊代幣的技術真實性能的理解就會弱很多。所以從開發的角度來說,乙個更好的選擇是private network,可以從技術的底層去深入理解以太坊代幣。
測試環境網路優點
合約執行不消耗真實貨幣
全球化的,部署在internet環境上的,
智慧型合約的**,執行,區塊的呼叫,都可以清晰的檢視到。
部署在測試環境上的智慧型合約,全世界任何應用都可以呼叫
缺點:所有節點是全球化的,速度較慢
測試網路不可能作為商業應用的實際落地環境
以太坊代幣私有網路 privatenetwork
以太坊代幣的私有網路,顧名思義就是由使用者自己通過geth建立的私有網路,是乙個非常適合開發、除錯和測試的網路
優點方便開發者深入理解以太坊代幣的技術底層
因為節點相對較少,速度較快
使用者可以隨時建立,隨時銷毀,隨時重建乙個以太坊代幣網路
隨意的增加節點數目,或者刪除節點,
既可以在伺服器上建立,也可以在自己的windows或者mac機器上建立,
甚至一台機器可以建立多個節點,在一台機器上實現多節點的私有網路。
缺點因為不是全球化的,只有在私有網路內的節點才能檢視智慧型合約的執行、呼叫等。
在本章中我們將實戰如何使用geth,如何搭建以太坊代幣的私有網路。
之前說過geth是三種實現以太坊代幣協議的工具之一,由於geth是官方推崇的以及個人精力有限,對於另外兩種工具的搭建私有網路,請參考網上資料。
下面的geth實戰,在macbook上實現,對於windows方面,比較類似。
step 1: 建立目錄和genesis.json
在命令列模式建立乙個目錄,例如tmpprivate
p2建立檔案genesis.json, 並填入如下內容。
}atom 是乙個由谷歌支援發布的文字編輯器, 乙個你可以自定義做任何事情的現代編輯器,後面涉及檔案和**演示會主要在atom上執行。
建立完成後,在atom中,本資料夾下應該只有乙個genesis.json
p3step 2: 執行命令,建立創世區塊
切換回命令列,執行命令,製造創世區塊
geth --datadir "./" init genesis.json
執行結果如下:
p4這時候可以注意一下,此時當前目錄下面會新增出兩個資料夾geth和keystore
geth中儲存的是區塊鏈的相關資料
keystore中儲存的是該鏈條中的使用者資訊
此時從atom中看到的目錄結構是這樣的:
p5step 3:建立自己的私有鏈條
執行一條最簡單的geth命令,來建立自己的私有鏈條
geth --datadir "./" --nodiscover console 2>>geth.log
geth的引數專案很多,有興趣的可以打geth –help 來獲得詳細資訊,我們也會在之後的章節中對關鍵引數項進行說明。
此時的命令列應該是這樣的:
p6step 4:在自己的私有鏈條上建立使用者
輸入命令eth.accounts, 我們會發現返回值為
這是因為此時雖然以太坊代幣的私有鏈已經被創造出來,但還沒有任何賬戶。
輸入命令personal.newaccount("***"), 該命令將創造乙個新的使用者,該使用者的密碼是***. 當然使用者也可以將*** 改為123,或者123456,或者任意密碼
再次輸入命令 eth.accounts, 我們會發現乙個新的使用者被建立了出來,這就代表我們已經建立了乙個賬戶,重複personal.newaccount() & eth.accounts 我們可以建立若干個賬戶出來
整個命令截圖如下:
p7step 5: 輸出區塊鏈的log
在step 3中,我們執行的**
geth --datadir "./" --nodiscover console 2>>geth.log
其中的** console 2>> geth.log 代表將控制台的一部分輸出,輸出到檔案geth.log上去。
開啟另乙個終端,找到geth.log的所在目錄,執行命令 tail -f geth.log 從而持續的輸出以太坊代幣的日誌
整個過程如下圖所示:
p8step 6: 最重要的一步來了,開始挖礦!
在命令列中執行命令 miner.start(), 開始在我們的區塊鏈上進行挖礦
p9此時geth.log的輸出應該是這樣的
p10一直等到100%。這個以太坊代幣私有鏈就會正式啟動,並持續不斷的生成出以太坊代幣來。
注意點:
1. 挖礦挖到的ether幣會預設保在第乙個賬戶中,即eth.acccounts[0]中。
2. 挖礦是執行智慧型合約的基礎。如果停止挖礦的話,不僅以太幣會停止生成,所有智慧型合約的呼叫也會不起作用。
3. 如果真的要停止挖礦,可以執行命令miner.stop()來停止挖礦
4. 按上面的命令,應該是可以實現以太坊代幣挖礦的。如果不行的話,有可能就是之前有存在的鏈,此時應該刪除之前的資料。在mac下即刪除~/.ethash資料夾和裡面的檔案即可
step 7: 最終當挖礦啟動的時候的日誌是這樣的
p11step 8: 挖礦啟動後,檢視主賬戶的以太幣數量
acc0 = eth.accounts[0]
eth.getbalance(acc0)
結果只要不為0,那就說明挖礦成功!
以太坊網路服務分析
目錄 1 網路分層 2 會話層 2.1 peer 介紹 2.2 peer 管理 3 表示層 rlp 編碼 4 應用層 eth 協議 1 網路分層 以太坊所有網路功能如下圖所示 所有網路功能建立在乙太網的傳輸層之上,tcp 及 udp 均有應用。2 會話層 會話層主要包括 peer 管理,nodeta...
以太坊 網路服務分析
目錄 1 網路分層 4 2 會話層 4 2.1 peer 介紹 5 2.2 peer 管理 5 2.2.1 peer 動態新增刪除流程 5 2.2.2 peer 握手機制 6 3 表示層 rlp 編碼 6 4 應用層 eth 協議 6 1 網路分層 以太坊所有網路功能如下圖所示 所有網路功能建立在乙...
以太坊網路服務分析
以太坊所有網路功能如下圖所示 所有網路功能建立在乙太網的傳輸層之上,tcp 及 udp 均有應用。會話層主要包括 peer 管理,nodetable 管理和 rpc 協議,本文著重介紹 peer 管理,nodetable 請參考 p2p 網路及鄰居節點發現機制 涉及到會話層的關鍵 原始檔類 類描述主...