天天看點

Geth安裝和使用

一、簡介

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目錄則儲存賬戶資訊。指令執行結果如下:

Geth安裝和使用

目錄如下:password中存儲的是兩個測試賬戶的密碼和private_blockchain_start.sh用于啟動geth用戶端,可以暫時不用管

Geth安裝和使用
Geth安裝和使用

3.  啟動節點連接配接私有測試網絡,指令行下輸入:

geth --datadir data --networkid 123 --nodiscover console

--networkid 123參數表示區塊鍊網絡ID辨別,--nodiscover參數表示節點私有,console參數表示進入geth控制台。

連接配接測試網進入控制台,此時我們已經進入geth測試網的互動式控制台,視窗也顯示「Welcome to the Geth JavaScript console」成功提示!

Geth安裝和使用

4. Geth使用

在以太坊網絡中,賬戶是其重要的組成部分,下面我們以查詢鍊上賬戶清單開始常用的指令功能。

  • 查詢賬戶清單      輸入指令:eth.accounts     輸出結果:[]

含義:意思是無賬戶位址,因為我們什麼也沒做,是以當然是不會憑空出現賬戶了。

  • 建立新賬戶         輸入指令:personal.newAccount("123")    輸出結果:
Geth安裝和使用

含義:表明賬戶建立成功,傳回賬戶位址,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。
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中存儲的是兩個測試賬戶的密碼,内容如下:

Geth安裝和使用

在指令行中運作腳本,會自動開啟git bash,啟動geth用戶端,可以輸入eth.accounts測試檢視兩個以太坊賬戶

Geth安裝和使用
Geth安裝和使用