區塊鏈開發學習第二章:以太坊私有鏈創建賬戶與挖礦、轉賬


上文講到怎么搭建以太坊私有鏈以及初始化、啟動,本文記錄下創建賬戶與多節點挖礦的過程

一、創建賬戶

##查看目前所有賬戶,返回為空“[]”,表示目前沒有任何賬戶
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一起交流:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM