一 環(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位隨機(jī)數(shù)仁连,用于挖礦限府,注意他和mixhash的設(shè)置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節(jié)所描述的條件。
difficulty? ? ? ? ? ? 設(shè)置當(dāng)前區(qū)塊的難度惑申,如果難度過大岩睁,cpu挖礦就很難,這里設(shè)置較小難度alloc用來預(yù)置賬號以及賬號的以太幣數(shù)量燥狰,因?yàn)樗接墟溚诘V比較容易棘脐,所以我們不需要預(yù)置有幣的賬號,需要的時候自己創(chuàng)建即可以龙致。
coinbase? ? ? ? ? ?礦工的賬號蛀缝,隨便填
timestamp? ? ? ? ?設(shè)置創(chuàng)世塊的時間戳
parentHash? ? ? ?上一個區(qū)塊的hash值,因?yàn)槭莿?chuàng)世塊目代,所以這個值是0
extraData? ? ? ? ? 附加信息屈梁,隨便填,可以填你的個性信息
gasLimit? ? ? ? ? ? ?該值設(shè)置對GAS的消耗總量限制榛了,用來限制區(qū)塊能包含的交易信息總和在讶,因?yàn)槲覀兪撬接墟湥蕴钭畲蟆?/p>
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)查看賬戶:(默認(rèn)是沒有賬戶,圖片里是后建的)
5)創(chuàng)建賬戶:(圖片括號中的test是密碼战坤,這個方法返回的結(jié)果是賬戶地址)
6)查看礦工賬戶以及設(shè)置礦工賬號(如沒有設(shè)置礦工賬號曙强,系統(tǒng)默認(rèn)設(shè)置eth.accounts中的第一個賬戶)
7)采礦以及查看區(qū)塊數(shù)和賬戶中幣的數(shù)量
8)交易:eth.sendTransaction({from:eth.coinbase, to:eth.accounts[1], value:web3.toWei(3,"ether")});
從礦工賬號轉(zhuǎn)賬3個以太幣到第二個賬戶,返回結(jié)果是賬戶被鎖途茫,需要解鎖碟嘴。
ps:以太坊的一個保護(hù)機(jī)制,每隔一段時間賬戶就會自動鎖定慈省,這個時候任何以太幣在賬戶之間的轉(zhuǎn)換都會被拒絕臀防,除非把該賬戶解鎖.
賬戶解鎖:
personal.unlockAccount 解鎖轉(zhuǎn)賬的賬號
重新使用轉(zhuǎn)賬命令,轉(zhuǎn)賬需要礦工挖礦才能轉(zhuǎn)賬成功边败,可以通過txpool.status來驗(yàn)證,如看到pending:1袱衷,pending表示已提交但還未被處理的交易;
最后一條命令就是表示轉(zhuǎn)賬成功了,賬戶下有3個以太幣笑窜。