以太坊代幣開發生產網路 測試網路 私有網路

2021-08-10 15:54:10 字數 3333 閱讀 7175

要理解以太坊代幣 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 網路及鄰居節點發現機制 涉及到會話層的關鍵 原始檔類 類描述主...