簡體   English   中英

以太坊還可以用於構建私有區塊鏈網絡嗎?

[英]Can Ethereum also be used for building private blockchain networks?

我想建立一個私有區塊鏈網絡,我在某處讀到Hyperledger最適合私有區塊鏈網絡。 但是我已經了解Solidity,因此我想使用以太坊。 因此,如果我可以在Ehtereum上構建成熟的私有區塊鏈網絡,或者我必須進入Hyperledger,有人可以回答我嗎? 如果涉及到某些步驟,請也告知。 提前致謝。

是的,您可以建立專用的以太坊網絡。 我在下面顯示了2節點以太坊專用網絡的步驟。

以下是步驟

步驟0:

安裝和設置geth(即,確保將其添加到path環境變量中)

第1步:

您需要創建一個創世紀文件,其中包含有關難度,氣體限制等的信息。創世文件(genesis.json)的示例如下所示

{
  "config": {
    "chainId": 2018,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
  },

  "alloc"      : {},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x400",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

第2步:

使用以下命令設置節點

geth --datadir data1 (or ./path/to/data/directory give the location where you want to store the data) init genesis.json

第三步:

現在我們已經從步驟2中設置了節點,讓我們使用以下命令啟動節點

geth --datadir data1 (path to the data directory you have given in **Step 2**) --nodiscover --networkid 123456 (give something that is unique and not either of 0,1, 2 or 3 as these are already predefined networks in ethereum) console

擁有--nodiscover標志非常重要,這樣該節點就不會對公眾開放。

**第四步: **

如果您想了解有關節點的詳細信息(到步驟3命令,現在您應該已經進入以太坊節點外殼),請輸入此命令,您將獲得剛剛設置的節點的所有詳細信息。

$ admin.nodeInfo

步驟5:

$ personal.newAccount()//這將創建一個新的以太坊賬戶,但默認情況下將被鎖定。 從該帳戶發送交易時,請確保按此密碼輸入密碼。

讓我們設置另一個節點(節點2)並連接到節點1。

**步驟6:**

注意:在本例中,我們將對節點1和節點2使用同一台計算機。

讓我們使用以下命令在節點2中啟動geth

$ geth --datadir data2 init genesis.json

步驟7:

讓我們使用以下命令啟動在步驟6中設置的節點

$ geth --datadir blkchain2 --nodiscover --networkid 1234 --port 60606 console

注意:我們必須在此處指定端口,因為默認端口已被節點1占用。

步驟8:

通過步驟7,您應該位於以太坊節點控制台中。 運行以下命令以了解剛剛開始運行的節點2的詳細信息。

> admin.nodeInfo

步驟9:

讓我們使用以下命令在節點2中創建一個新帳戶

> personal.newAccount()

步驟10:

現在連接兩個節點。

當我們較早在node1和node2中都運行命令admin.nodeInfo時,我們看到名為enode的鍵,其格式如下。

enode://ENODE@IP:PORT

如果您想知道如何創建enode,請查看benjamin的令人敬畏的回復

復制這兩個enode地址,並分別在節點1和節點2控制台上運行以下命令。

> admin.addPeer("enode of node1"); // run in console of node 1
> admin.addPeer("enode of node2"); // run in console of node 2

現在,這兩個節點都是專用網絡的一部分,您可以彼此交互。

步驟11:

作為驗證,讓我們在節點1上進行挖掘,並查看其在節點2上的體現。

轉到節點1的控制台並運行以下命令

> miner.start(1)

上面的命令會很冗長,因為您應該觀察到的一個重要字段是blockheight(或塊編號)。

現在,轉到節點2並運行以下命令,以查看所開采的塊現在顯示在節點2中。

eth.getBlockNumber

現在,您應該看到在節點1中挖掘的塊已成功傳播到節點2。

因此,我們現在就此結束。

有任何問題隨時問我。

PS 1:對於不同版本的Web3,您使用的某些命令可能會有所不同,但在較高級別上,這些內容應該基本保持不變。

PS 2:如果要連接在計算機1中運行的節點1和在計算機2中運行的節點2,則只需運行相同的節點。 但是,也許您需要正確驗證節點1的enode。此外,您可能需要調整防火牆以允許雙向事務流。

你當然可以。 如果您正在尋找一種簡單快速的方法來引導私有以太坊網絡,建議您使用雲模板解決方案,例如Microsoft Azure的以太坊授權證明聯盟

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM