go-ethereum 搭建本地測試私有鏈
阿新 • • 發佈:2019-01-24
1. 初始化私有鏈
1.1 創世區塊配置檔案
在絕對路徑 /home/vagrant/ 下建立 genesis.json(檔名可換成其他,下面進行操作時,檔名保持一致即可)檔案,內容為:
{
"config": {
"chainId": 0,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000" ,
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
注意:Windows 系統下,需要注意檔案編碼為 UTF-8,LF 格式換行。
引數簡介:
引數 | 描述 |
---|---|
alloc | 用來預置賬號以及賬號的以太幣數量,因為私有鏈挖礦簡單,所以不需要預置有幣的賬號,需要的時候可以自己建立 |
coinbase | 礦工的賬號,隨便填 |
difficulty | 設定當前區塊的難度,值越大,難度越大,越難挖礦,私有鏈可將該值設定小點,容易挖礦 |
extraData | 附加資訊,隨便填 |
gasLimit | GAS 的消耗總量限制,用來限制區塊能包含的交易資訊總和,最大值:0x0000ffff |
nonce | 一個 64 位隨機數,用於挖礦,注意它和 mixhash 的設定需要滿足以太坊的 Yellow paper,4.3.4. Block Header Validity,(44) 章節所描述的條件 |
mixhash | 與 nonce 配合用於挖礦,由於上一個區塊的一部分生成的 hash |
parentHash | 上一個區塊的 hash 值,只有創世塊的該值為 0,因為創世塊是第一個區塊 |
timestamp | 設定創世塊的時間戳 |
1.2 寫入創世區塊
在絕對路徑 /home/vagrant/ 下執行下面命令進行初始化:
geth --datadir /home/vagrant/data0 init genesis.json
引數簡介:
引數 | 描述 |
---|---|
datadir | 指定資料目錄,不同節點指定不同目錄,注意所指目錄許可權 |
init | 初始化命令,這裡指定 genesis.json 為配置檔案 |
2. 啟動一個私有鏈節點
執行下面命令進行私有鏈節點的啟動,開發方式登入:
geth --identity "private ethereum" --rpc --rpccorsdomain "*" --datadir "/home/vagrant/data0/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 95518 console --dev
引數簡介:
引數 | 描述 |
---|---|
identity | 區塊鏈的標識,用於標識目前網路的名字 |
rpc | 啟動 RPC 通訊,可以進行智慧合約的部署和測試 |
rpccorsdomain | 逗號分隔的域列表,用來接受交叉源請求(瀏覽器強制執行) |
datadir | 設定當前區塊鏈網路資料存放的位置 |
port | 網路監聽埠 |
rpcapi | 設定允許連線的 RPC 的客戶端,一般為 db, eth,net,web3 |
networkid | 設定當前區塊鏈的網路 ID,用於區分不同的網路 |
console | 啟動命令列模式,方便執行命令 |
執行後臺服務需要去掉 console,否則會自動停止:
nohup geth --identity "private etherum" --rpc --rpccorsdomain "*" --datadir "/home/vagrant/data0/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 95518 --dev &
會在 /home/vagrant/data0/chain 目錄生成 geth.ipc 檔案,可以通過執行下面命令連線 geth:
geth attach ipc:/home/vagrant/data0/chain/geth.ipc
參考 get attach 可以通過下面幾種方式進行連線:
geth attach ipc:/some/costom/path
geth attach http://192.168.1.1:8545
geth attach ws://192.168.1.1:8545
3. console 下的操作
3.1 使用者
3.1.1 使用者列表
eth.accounts
3.1.2 新增使用者
personal.newAccount('密碼')
3.1.3 解鎖使用者
personal.unlockAccount('使用者值', '對應密碼')
補充示例:
user1=eth.accounts[0]
user2=eth.accounts[1]
personal.unlockAccount(user1, '123456')
3.1.4 傳送交易
eth.sendTransaction({from:user1, to:user2, value:web3.toWei(3,"ether")})
補充說明:交易之前,需要解鎖使用者 user1,交易之後,需要執行挖礦操作讓交易有效。
3.1.5 檢視餘額
eth.getBalance(user1)
3.2 挖礦
3.2.1 開始
miner.start()
3.2.2 結束
miner.stop()
3.2.3 檢視區塊數量
eth.blockNumber
3.2.4 獲取區塊資訊
eth.getBlock(1)
3.3 節點
3.3.1 獲取節點資訊
admin.nodeInfo
admin.nodeInfo.enode
admin.nodeInfo.id
admin.nodeInfo.ports.listener