上文講到怎么搭建以太坊私有鏈以及初始化、啟動,本文記錄下創建賬戶與多節點挖礦的過程
一、創建賬戶
##查看目前所有賬戶,返回為空“[]”,表示目前沒有任何賬戶 eth.accounts ##創建賬戶,會要求輸入以及確認密碼 personal.newAccount() ##或者直接通過此命令創建賬戶,123456即密碼 personal.newAccount('123456')

可能有人會疑問,以太坊的賬戶不都是公私鑰么,創建賬戶時輸入的密碼是做什么的。確實每個賬戶都由一公私鑰組成的,上面生成的賬戶地址是由公鑰衍生而來,取公鑰的最后20個字節,公私鑰都在keystore的json文件里面,而里面最關鍵的私鑰就是用我們創建賬戶時輸入的密碼加密生成的。
上面的操作可以看到生成了兩個賬戶,在上文中說過的data目錄中會出現keystore目錄,里面即為我們剛才創建的兩個賬戶,文件名即為賬戶地址

二、挖礦
創建完賬戶,每個賬戶里面都沒有eth,所以需要開啟挖礦
##查看賬戶余額,結果理所當然為0 eth.getBalance(eth.accounts[0]) 0 ##查看挖礦賬戶,默認挖到的eth是存在eth.coinbase賬戶中的,也就是第一個賬戶 eth.coinbase "0x229ea411d368c97b008c7bc19b01fdd813163701" ##如果想要把挖到的礦存入其他賬戶,可以使用以下命令,我自己還是默認的第一個賬戶 miner.setEtherbase(eth.accounts[1]) true ##使用miner.start()命令開啟挖礦 miner.start()
我這邊執行完miner.start()后是直接返回的null,這里我查了下,有的說是沒有執行miner.setEtherbase(eth.accounts[0])設置賬戶,正常默認就是第一個賬戶,而且我執行了這個也還是null。也還有人說是節點誤報,miner.start()命令已經執行成功,只不過節點返回null。我試了下eth.blockNumber查看區塊高度,確實是增加了,說明我的符合這種情況,開啟挖礦時,通過tail -f geth.log命令查看上文中的日志文件,能看到正在挖礦的

隨后查看第一個賬戶余額
eth.getBalance('0x229ea411d368c97b008c7bc19b01fdd813163701') 828000000000000000000
發現了好多零,此時不能被這個數字嚇到,這里默認顯示的以 wei 為單位的,而 1 ether = 10^18 wei,所以我們轉換一下單位
web3.fromWei(eth.getBalance(eth.accounts[0]),'ether') 828
其實就是828個ether
至於上面的返回null的問題,很多人說是geth版本更新后 --dev模式下新增了參數問題,需要在啟動時在后面添加–dev.period 1 具體的我就沒試了,反正是為了自己測試用賬戶有幣就行了
結束挖礦使用miner.stop()
如果想挖到一個區塊后自動停止挖礦可以這樣:miner.start(1);admin.sleepBlocks(1);miner.stop();
三、轉賬
轉賬前要先解鎖賬戶
personal.unlockAccount(eth.accounts[0]) Unlock account 0x229ea411d368c97b008c7bc19b01fdd813163701
轉8個ether給賬戶2
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(8,'ether')})
"0xaa93ea1ed3ba359090af15ea678b93493f0c5c4310d7ef6b9c3ca80a27b82088"
但是此時賬戶2里面還是沒有ether的
eth.getBalance(eth.accounts[1]) 0
因為轉賬還沒被確認,需要開啟挖礦等待確認
##通過查看txpool來驗證
txpool.status { pending: 1, queued: 0 }
其中有一條pending的交易,pending表示已提交但還未被處理的交易
##開啟挖礦 miner.start() ##幾秒后停止挖礦 miner.stop() ##查看賬戶2余額 eth.getBalance(eth.accounts[1]) 8000000000000000000
如果有學習計划的童鞋,可以加我QQ一起交流:

