一、創建網絡的“創世”狀態
1、進入./go-ethereum/genesis,將配置寫入genesis.json文件
{
"config": {
"chainId": 15
},
"difficulty": "2000",
"gasLimit": "2100000",
"alloc": {
"08a58f09194e403d02a1928a7bf78646cfc260b0": {
"balance": "300000"
},
"87366ef81db496edd0ea2055ca605e8686eec1e6": {
"balance": "400000"
}
}
}
參數名 | 描 述 |
---|---|
chainId | 指定了獨立的區塊鏈網絡 ID。網絡 ID 在連接到其他節點的時候會用到,以太坊公網的網絡 ID 是 1,爲了不與公有鏈網絡衝突,運行私有鏈節點的時候要指定自己的網絡 ID。不同 ID 網絡的節點無法相互連接 |
homesteadBlock | 當設置爲0表示使用homestead發佈該鏈 |
nonce | nonce就是一個64位隨機數,用於挖礦,注意它和mixhash的設置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件 |
mixhash | 與nonce配合用於挖礦,由上一個區塊的一部分生成的hash。注意它和nonce的設置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件 |
difficulty | 設置設置當前區塊的難度,越大挖礦就越難 |
alloc | 用來預置賬號以及賬號的以太幣數量,因爲私有鏈挖礦比較容易,所以我們也可以不需要預置有幣的賬號,需要的時候自己創建即可以 |
coinbase | 礦工賬號,可以隨便寫 |
timestamp | 設置創世塊的時間戳 |
parentHash | 上一個區塊的hash,創世區塊的該項參數就爲0 |
extraData | 附加信息,可以隨便寫 |
gasLimit | 該值設置對GAS的消耗總量限制,用來限制區塊能包含的交易信息總和。我們創建的是私有鏈,可以填最大 |
2、將geth設置爲壞境變量,同時初始化創世區塊
geth --datadir "./" init genesis.json
當創建完成之後,可生成geth和keystore兩個文件夾,
geth目錄用於保存我們所建私有鏈的區塊數據
keystore目錄用於保存用戶的賬戶數據
3、在當前目錄下運行geth,可以啓動這條私鏈,將networkid設置爲與創世塊配置裏chainId一致
geth --datadir "./" --networkid 15
二、交互式啓動節點
1、需要對節點的啓動採用控制檯的模式啓動
geth --datadir "./" --networkid 15 console
列舉幾個常用對象
web3 最大的對象
eth 環境對象
admin 用於權限配置
personal 用於賬戶配置
txpool 交易池查看
miner 礦工信息查看
2、部分常用api的使用
//獲取賬戶剩餘金額
eth.getBalance("0xD63d4A435......350BEaED2b614B4C052")
//將金額轉換爲以太
web3.fromWei(eth.getBalance("0xD63d4A435......350BEaED2b614B4C052"))
//以太坊的高度數
eth.blockNumber
//獲取一個新的賬戶
personal.newAccount()
//以太坊的賬戶數目
eth.accounts
//發送交易
eth.sendTransaction({from:"0xD63d4A4350f9................2b614B4C052",to:eth.accounts[0],value:10000})
//解鎖交易
personal.unlockAccount(eth.accounts[0])
//挖礦開始
miner.start(1)
//挖礦結束
miner.stop()
三、和metamask個人錢包掛載
1、使用geth的rpc命令啓動,將日誌記錄到相同目錄的output.log下
geth --datadir "./" --networkid 15 --rpc console>output.log
2、設置metamask的記錄
3*、採用dev模式登錄以太坊
geth --datadir "./" --dev console>output.log