Ubuntu 以太坊搭建私有鏈

一 環(huán)境以及軟件版本:

1)VMware Workstation 12 Pro

2)Ubuntu 16.04 desktop

3)以太坊geth go語言客戶端(Version: 1.8.2-unstable)

4)go語言版本 1.9.4(geth 需要1.7或以上的版本)

二 以太坊geth客戶端安裝:

1)安裝git apt-get install git

2)安裝go環(huán)境:

? ?1.解壓tar -zxf go1.9.4.linux-amd64.tar.gz -C /usr/local

? ?2./etc/profile文件中添加環(huán)境變量?export PATH=$PATH:/usr/local/go/bin

? ?3.重新加載一下 source /etc/profile

2)git clone https://github.com/ethereum/go-ethereum?

3)cd go-ethereum &&?make geth //執(zhí)行安裝

三 開始創(chuàng)建以太坊私有鏈

1)首先創(chuàng)建一個私有鏈目錄以及配置文件:

 genesis.json:

{ "config":

{ "chainId": 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 },

"coinbase" : "0x0000000000000000000000000000000000000000",

"difficulty" : "0x20000",

"extraData" : "",

"gasLimit" : "0x2fefd8",

"nonce" : "0x0000000000000042",

"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",

"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",

"timestamp" : "0x00",

"alloc" : {},

}

參數(shù)說明:

參數(shù)名稱? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?參數(shù)描述

mixhash? ? ? ? ? ?與nonce配合用于挖礦,由上一個區(qū)塊的一部分生成的hash。注意他和nonce的設(shè)置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節(jié)所描述的條件。

nonce? ? ? ? ? ? ? ?nonce就是一個64位隨機數(shù),用于挖礦,注意他和mixhash的設(shè)置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節(jié)所描述的條件。

difficulty? ? ? ? ? ? 設(shè)置當(dāng)前區(qū)塊的難度,如果難度過大,cpu挖礦就很難,這里設(shè)置較小難度alloc用來預(yù)置賬號以及賬號的以太幣數(shù)量,因為私有鏈挖礦比較容易,所以我們不需要預(yù)置有幣的賬號,需要的時候自己創(chuàng)建即可以。

coinbase? ? ? ? ? ?礦工的賬號,隨便填

timestamp? ? ? ? ?設(shè)置創(chuàng)世塊的時間戳

parentHash? ? ? ?上一個區(qū)塊的hash值,因為是創(chuàng)世塊,所以這個值是0

extraData? ? ? ? ? 附加信息,隨便填,可以填你的個性信息

gasLimit? ? ? ? ? ? ?該值設(shè)置對GAS的消耗總量限制,用來限制區(qū)塊能包含的交易信息總和,因為我們是私有鏈,所以填最大。

2)geth init ./genesis.json --datadir "./chain" //創(chuàng)世區(qū)塊初始化, chain目錄是保存區(qū)塊鏈網(wǎng)絡(luò)數(shù)據(jù)存放的位置

當(dāng)執(zhí)行完初始化后,在當(dāng)前的chain目錄下回生成兩個目錄:

geth中保存的是區(qū)塊鏈的相關(guān)數(shù)據(jù)

keystore中保存的是該鏈條中的用戶信息

3)啟用私有鏈:/eth/go-ethereum/build/bin/geth --datadir "./chain" --nodiscover console 2 >> eth_output.log

參數(shù)說明: datadir 區(qū)塊數(shù)據(jù)存放位置 nodiscover 私有鏈地址不會被網(wǎng)絡(luò)上看到 console啟用命令行模式

命令行

4)查看賬戶:(默認是沒有賬戶,圖片里是后建的)

查看賬戶

5)創(chuàng)建賬戶:(圖片括號中的test是密碼,這個方法返回的結(jié)果是賬戶地址)

創(chuàng)建賬戶

6)查看礦工賬戶以及設(shè)置礦工賬號(如沒有設(shè)置礦工賬號,系統(tǒng)默認設(shè)置eth.accounts中的第一個賬戶)

設(shè)置礦工賬戶

7)采礦以及查看區(qū)塊數(shù)和賬戶中幣的數(shù)量

采礦
采礦返回的結(jié)果

8)交易:eth.sendTransaction({from:eth.coinbase, to:eth.accounts[1], value:web3.toWei(3,"ether")});

從礦工賬號轉(zhuǎn)賬3個以太幣到第二個賬戶,返回結(jié)果是賬戶被鎖,需要解鎖。

ps:以太坊的一個保護機制,每隔一段時間賬戶就會自動鎖定,這個時候任何以太幣在賬戶之間的轉(zhuǎn)換都會被拒絕,除非把該賬戶解鎖.

賬戶被鎖

賬戶解鎖:

personal.unlockAccount 解鎖轉(zhuǎn)賬的賬號

重新使用轉(zhuǎn)賬命令,轉(zhuǎn)賬需要礦工挖礦才能轉(zhuǎn)賬成功,可以通過txpool.status來驗證,如看到pending:1,pending表示已提交但還未被處理的交易;

最后一條命令就是表示轉(zhuǎn)賬成功了,賬戶下有3個以太幣。

go下載地址https://studygolang.com/dl

geth下載地址:https://github.com/ethereum/go-ethereum

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容