建立一個全新的預先分配資金和對等節點的測試網絡。
在本系列的第1部分中,在安裝以太坊geth客戶端,創建一個帳戶并運行一些簡單的命令之前,我們探討了以太坊的基礎知識 - 這不僅僅是一種加密貨幣,它為智能合約提供了一個分散的平臺。
在這篇文章中,我們將創建一個私人區塊鏈,并用它來更詳細地探索以太坊。由于我們將從一個全新的區塊鏈開始,我們可以完全同步這一點,并且不需要配置節點來使用光同步模式。
停止主網同步
如果您遵循第1部分的規定,并將節點配置為使用mainnet并以輕同步模式運行,則可以通過以下方式停止并啟動:
$sudosystemctlstopgeth@pi.service $sudosystemctldisablegeth@pi.service創建一個新帳戶
我們需要為我們的新區塊鏈網絡提供一個名稱,就本示例而言,我們將使用“的DesignSpark”。默認情況下,以太坊將數據存儲在名為“.ethereum”的主目錄的子目錄中,即Linux / BSD上的隱藏目錄。為了將我們私人區塊鏈的數據分開,我們將使用“.designspark”。
我們開始創建一個新帳戶:
$geth--datadir.designsparkaccountnew并記下該帳戶的地址,因為如果我們想為其預先分配任何資金,我們在初始化新網絡時都需要這些。
一開始,只有 block 0
鏈中必須有第一個鏈接,區塊鏈也沒有區別,需要創建一個將由參與網絡的初始節點集使用的創建區塊。這是通過JSON文件配置的,作為例子,我們使用的內容如下。
{ "config":{ "chainId":555, "homesteadBlock":0, "eip155Block":0, "eip158Block":0 }, "difficulty":"20", "gasLimit":"2100000", "alloc":{ "1fd4027fe390abaa49e5afde7896ff1e5ecacabf": {"balance":"20000000000000000000"} }}'chainId'是標識網絡的數值,可以在這里找到公共網絡正在使用的列表。我們需要為我們的私人DesignSpark網絡選擇一個數字,出于某種原因555看起來是一個不錯的選擇 - 您可以使用不同的選項的數字。
那么其他參數是什么?
-
homesteadBlock. Homestead是一個以太坊版本,對于我們的連鎖店,這個設置為0。
-
eip155Block.我們的連鎖對于EIP155來說不會硬叉性的,所以這個設置為0。
-
eip158Block.我們的連鎖對于EIP158來說并不是硬叉性的,所以這個設定為0。
-
difficulty. 這設定了采礦難度,在我們的情況下,我們希望這個比較低。
-
GasLimit.這是每塊Gas成本的限制。
-
alloc. 這是我們可以預先分配資金到賬戶的地方。
以太坊改進建議 (EIPs) 描述了以太坊平臺的標準,并可能發布新的標準以解決缺陷。隨著網絡的增長,它可能會在某個時候分叉以允許電子信息產品被合并。這并不是我們的專用網絡所關心的問題,但有關EIP155在哪里用mainnet實現的細節以及它的作用,請參閱Spurious Dragon.
Gas是用來衡量一個動作或一組動作執行多少工作量的單位。從而允許成本附加到執行智能合約 - 包含代碼功能并位于區塊鏈上,能夠與其他合同進行交互,制定決策,存儲數據,并將乙醚發送給其他合作伙伴的對象。更多關于這個在未來的帖子。
Alloc 允許我們將資金預先分配給一個或多個賬戶。這里資金已經分配到我們之前創建的賬戶的地址。
將我們的配置文件保存到designspark.json后,我們現在可以使用以下方式初始化網絡:
$geth--datadir.designsparkinitdesignspark.json
就這樣,我們已經寫出了我們的起源塊,現在有了我們新網絡的開始。如果后續節點以相同方式初始化,則它們也可以成為成員。
啟動第一個節點
要使用的JavaScript控制臺啟動第一個節點,我們輸入:
$geth--identitychainpi--rpc--rpcport8080--rpccorsdomain"*"--datadir.designspark--port30303--nodiscover--rpcapi"db,eth,net,web3"--networkid555console所有參數是什么意思?
-
indentity. 這設置以太坊節點標識。
-
rpc*. 各種RPC設置配置可用的API以及誰有權訪問它們。
-
datadir. 我們顯然需要像以前一樣使用相同的數據目錄。
-
nodiscover. 這意味著我們的節點不可發現。
-
networkid. 這需要在初始化期間配置相同的數字ID。
一旦我們進入控制臺,我們可以使用eth.accounts列出可用的帳戶,并使用eth.getBalance檢查余額。
>eth.accounts>primary=eth.accounts[0]>balance=web3.fromWei(eth.getBalance(primary),“ether”);
請注意,返回的數字如何比我們通過designspark.json預先分配的小得多?這是因為Ether中的平衡被返回了,而在初始化過程中,這個分配實際上是在一個名為Wei的更小的單位。.
創建第二個節點
一個只有一個節點的區塊鏈網絡沒有多大用處,所以我們將創建另一個節點。這個建議使用一臺內存稍多的計算機,例如運行Debian / Ubuntu的筆記本電腦或臺式機,因為如果我們希望在某個時候運行礦工,這可能是需要的。
回顧一下,涉及的步驟是:
-
安裝GETH。
-
像上面那樣運行命令來創建一個新帳戶。
-
初始化使用相同的JSON配置文件。
-
像以前一樣啟動節點,但是這次使用不同的身份!
一旦我們完成了這個操作,節點已經啟動并放入的JavaScript控制臺,我們可以再次通過以下方式檢查新帳戶及其余額:
>eth.accounts>primary=eth.accounts[0]>balance=web3.fromWei(eth.getBalance(primary),“ether”);
這次我們應該看到我們的余額為0,因為我們沒有預先分配任何資金到賬戶。
連接同伴
由于我們不希望我們的節點是可發現的,因此我們使用--nodiscover選項啟動它們,這意味著我們需要一些將它們配置為對等的方式。我們可以通過創建一個名為靜態nodes.json的文件來實現這一點,該文件位于datadir中,在我們的例子中是?/ .designspark。
首先,我們需要通過在每個系統上的JavaScript控制臺輸入來獲取每個節點的enode URL:
>admin.nodeInfo.enode然后,我們使用此信息填充靜態nodes.json文件,如下所示:
["enode://01f5ecc7c232f7571175bffc71c4e1608e1308e2ce7fd6ed3ae17d5e97e2d5253dcaa854286f99991d671788127f7902fa56d20875eabae49665a515da105047@10.100.1.196:30303","enode://5156218119a3697389a34bf0a19ceca49d9f3d06948836b8cc6c206c9f7b7081e64537eeb0f9c059561736a8e7cb6ebbe438028dd949d0f69f4cab642c11d46c@10.100.1.229:30303"]請注意,[::]如何被節點IP地址替換,并省略了?discport = 0后綴。
一旦在兩個節點上創建了這個文件,我們可以通過CTRL-d退出GETH,然后重新啟動控制臺之后如果我們在第一個節點上輸入:
>admin.peers我們應該看到第二個節點的細節。
在第二個節點上重復此操作,我們應該看到第一個節點的信息。
因此,現在我們擁有自己的私人區塊鏈網絡,其中包含兩個節點,每個節點都配有一個賬戶,其中一個配有預先分配的資金。
在本系列的第3部分中,我們將繼續與網絡進行交易 - 轉移資金,執行智能合約和挖掘以太網。
-
樹莓派
+關注
關注
117文章
1709瀏覽量
105716 -
區塊鏈
+關注
關注
111文章
15562瀏覽量
106244
發布評論請先 登錄
相關推薦
評論