一、簡介
Geth是Go Ethereum開源項目的簡稱,它是使用Go語言編寫且實現了Ethereum協議的客戶端軟件,也是目前用戶最多,使用最廣泛的客戶端。通過Geth客戶端與以太坊網絡進行連接和交互可以實現賬戶管理、合約部署、挖礦等眾多有趣且實用的功能。
ganache也是客戶端,兩個都可以用來協助開發DAPP
下載地址:https://geth.ethereum.org/downloads/ 下載后安裝即可
二、使用
1. 在某個磁盤創建一個數據存儲目錄如D:\testGeth,新建創世區塊描述文件genesis.json,內容如下:
{
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x8000000",
"alloc": {},
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}
genesis.json是創世區塊配置文件,通過此配置讓我們很容易挖礦以方便測試,具體每個字段的含義可暫時忽略!
2. 在命令行窗口進入到D:\testGeth目錄下,執行創世區塊的初始化,命令如下:
geth --datadir data init genesis.json
此時在testGeth目錄下會生成data目錄,data目錄又包含geth和keystore目錄,geth目錄存儲區塊數據,keystore目錄則保存賬戶信息。命令執行結果如下:
目錄如下:password中存儲的是兩個測試賬戶的密碼和private_blockchain_start.sh用於啟動geth客戶端,可以暫時不用管
3. 啟動節點連接私有測試網絡,命令行下輸入:
geth --datadir data --networkid 123 --nodiscover console
--networkid 123參數表示區塊鏈網絡ID標識,--nodiscover參數表示節點私有,console參數表示進入geth控制台。
連接測試網進入控制台,此時我們已經進入geth測試網的交互式控制台,窗口也顯示「Welcome to the Geth JavaScript console」成功提示!
4. Geth使用
在以太坊網絡中,賬戶是其重要的組成部分,下面我們以查詢鏈上賬戶列表開始常用的指令功能。
- 查詢賬戶列表 輸入指令:eth.accounts 輸出結果:[]
含義:意思是無賬戶地址,因為我們什么也沒做,所以當然是不會憑空出現賬戶了。
- 創建新賬戶 輸入指令:personal.newAccount("123") 輸出結果:
含義:表明賬戶新建成功,返回賬戶地址,123為賬戶密碼。此時我們再次查詢賬戶列表會發現已有剛創建的地址了。
- 查詢賬戶余額 輸入指令:eth.getBalance(eth.accounts[0]) 輸出結果:0
含義:表明這個賬戶的余額是0。
- 啟動或停止挖礦 輸入指令:miner.start();admin.sleepBlocks(1);miner.stop()
輸入指令: eth.getBalance(eth.accounts[0])
輸出結果:5000000000000000000
含義:這三條指令意思是啟動挖礦程序,當挖到1個區塊時停止挖礦,挖礦所得默認進入第一個賬戶里。耐心等待成功挖出1個塊,此時我們的節點就是礦工節點!再次查詢賬戶余額,輸出5的18方wei。
- 創建一個新賬戶,這樣就有兩個賬戶,我們把第一個賬戶的5個ETH,轉2個ETH到新賬戶。
前提條件:解鎖賬戶一
輸入指令: eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(2,"ether")})
含義:在發起交易前先解鎖第一個賬戶,使用eth.sendTransaction指令發起交易,結果返回交易哈希存根,此時我們這筆交易並沒有生效,可以使用txpool.status指令查看交易池的情況pedding為1表明這筆交易還款打包進區塊。因為打包區塊是由礦工做的工作,所以我們啟動礦工。耐心等待一會再次查看第一個賬戶余額顯示8000000000000000000,而第二個賬戶顯示2000000000000000000,說明我們的轉賬交易成功啦!為什么第一個賬戶是8個ETH呢?這是因為礦工節點又挖出5個ETH了,加上之前的3個剛好正確!
- 查看區塊信息 輸入指令:eth.getBlock(2) 輸出結果:第二個區塊信息
- 查看交易信息
輸入指令:eth.getTransaction("0x9216e836a292a90d85684015c01144600a80024424ba9585199aaea05a0a3ea4")
輸出結果:該筆交易詳情
5. 腳本啟動geth客戶端
- 我們使用以下命令啟動 geth:geth --datadir data --rpc 打開另一個命令行界面,啟動Mist或以太坊錢包,能看到之前創建的兩個賬戶用 “--rpc” 參數讓 geth 接受 RPC 連接,這是很有必要的,這樣 truffle 才可以連接到geth。
進行兩次挖礦后,賬戶1余額變成10以太幣
- 可以編寫腳本,存儲成文件private_blockchain_start.sh,內容如下,以后直接執行.sh即可開啟geth console
geth --rpc --rpcaddr="0.0.0.0" --rpccorsdomain="*" --unlock '0,1' --password password --nodiscover --maxpeers '5' --networkid '123' --datadir 'data' console
password中存儲的是兩個測試賬戶的密碼,內容如下:
在命令行中運行腳本,會自動開啟git bash,啟動geth客戶端,可以輸入eth.accounts測試查看兩個以太坊賬戶