1. 程式人生 > >ubuntu16.04搭建以太坊私有鏈並在私有鏈中進行挖礦及轉賬

ubuntu16.04搭建以太坊私有鏈並在私有鏈中進行挖礦及轉賬

1.前言
以太坊作為區塊鏈技術應用的龍頭,需要對該專案深入的學習,才好在工作中更好的使用區塊鏈來解決實際的問題。

不管是以太坊,還是CAM區塊鏈,在學習的時候都習慣的要先了解這些系統的執行流程以及系統功能,那麼搭建私有鏈是一個很好的方式,可以在私有鏈上進行任意的操作,轉賬、挖礦、部署合約,比如給自己發個幾億的以太坊。

2.搭建私有鏈所需的依賴環境
作業系統:ubuntu16.04,開虛擬機器的話要至少4G,否則會影響測試挖礦時的速度

軟體:geth客戶端 版本:1.8.1-stable-1e67410e

3.安裝geth客戶端
【Ctrl+Alt+T】開啟終端,依次輸入以下命令

sudo apt-get update

sudo apt-get install software-properties-common

sudo add-apt-repository -y ppa:ethereum/ethereum

sudo add-apt-repository -y ppa:ethereum/ethereum-dev

sudo apt-get update


sudo apt-get install ethereum

安裝完成後,輸入geth -h,如果有列出資訊則說明安裝成功,可檢視列出資訊,方便後續的操作

4.建立創世塊
作為區塊鏈, 鏈子總要有個頭,所以需要建立一個創世塊作為頭部,才好往下新增,創世檔名稱命名為genesis.json,內容如下,為json格式

{
    "config": {
      "chainId": 20,
      "homesteadBlock": 0,
      "eip155Block": 0,
      "eip158Block": 0
  },
  "alloc": {
    "bc9a3ece02d7cb31cf63dfdfc48db0b82770d014": {
      "balance": "1000000000000000000000000000000"
    },
    "457e7d69fd3ac576aa744228e6b3319cde768473": {
      "balance": "2000000000000000000000000000000"
    },
    "926ef6011f7c852d30a01c7a4aaa5cbc460588fc": {
      "balance": "3000000000000000000000000000000"
    }
  },

  "nonce": "0x0000000000000056",
  "difficulty": "0x020000",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
  "gasLimit": "0x4c4b40"

}

檔案內容欄位說明如下

其中gasLimit應填的比較大,否則在接下去測試轉賬時會提示錯誤,提示超出gasLimit

alloc為為預置賬號充值以太幣,這些一般是在ico階段參與的使用者,可以在創世塊中為這些初期支援使用者分發以太幣

開啟終端,cd到搭建一個資料夾中,我的是/home/wjl/eth,在其中建立一個data資料夾,作為第一個私鏈節點儲存資料的資料夾。

拷貝genesis.json到/home/wjl/eth 資料夾下,方便命令列操作

在終端輸入【geth --datadir data --networkid 20140628 --rpc --rpccorsdomain "*" init ./genesis.json】

需要說明的是,

--networkid 20140628,為私鏈id,可以任意修改為自己的id,以太坊主網id為1,後續要搭建私鏈下的其他節點,networkid必須相同

--datadir data 中data是資料夾的名稱,私鏈資料會儲存在這個資料夾內,當要在同一計算機中建立其他私鏈節點時,可建立另外的資料夾,例如data2,然後通過--datadir data2區分不同的私鏈節點,如果未設定--datadir,則會讀取以太坊主網的資料,預設位置在/root/.ethereum中。

出現如上圖資訊,說明創世塊建立完成。

5.開啟geth私鏈客戶端
開啟終端,輸入【geth --datadir data --networkid 20140628 --rpc --rpccorsdomain "*" --nodiscover --port 16333 --rpcport 8546 console】

即可開啟geth客戶端,需要說明的是,需設定埠

--port 16333 系統預設是30303

--rpcport 8546 系統預設是8545

如果啟用第二個測試節點,port以及rpcport應與第一個節點不同

進入控制檯,開啟節點成功。

6.建立賬戶
在控制檯中輸入personal.newAccount("123") ,注意“123”就是密碼了,請自行更改為其他的字串。

為什麼要建立賬戶?

因為接下去要挖礦,沒有賬戶是挖不了礦的,因為挖礦成功後,系統會獎勵5個ETH,需要有賬戶接受獎勵。

7.挖礦
終端中輸入eth.coinbase

檢視礦工的賬戶,其實就是上一步建立的賬戶。

7.1開始挖礦
終端輸入miner.start(1)

第一次挖礦的時候需要初始化挖礦執行緒,需要等待挺長時間的。

說明挖礦成功。

7.2停止挖礦
在控制檯輸入命令miner.stop(),停止挖礦。

8.檢視區塊高度及區塊內容
輸入,eth.blockNumber查詢區塊數量,eth.getBlock(47)查詢對應區塊的內容。

9.轉賬
9.1建立第二個賬戶
在控制檯中輸入personal.newAccount("123") ,注意“123”就是密碼了,請自行更改為其他的字串。

9.2查詢賬戶餘額
以太坊挖礦預設是第一個賬戶,因此只有第一個賬戶有餘額,輸入

web3.fromWei(web3.eth.getBalance(web3.eth.accounts[0]),"ether")//查詢第一個賬戶餘額

web3.fromWei(web3.eth.getBalance(web3.eth.accounts[1]),"ether")//查詢第二個賬戶餘額

可以看到第一個賬戶餘額是240eth,這是挖礦所得,第二個賬戶餘額為0eth。

備註eth單位解釋:

kwei (1000 Wei)
mwei (1000 KWei)
gwei (1000 mwei)
szabo (1000 gwei)
finney (1000 szabo)
ether (1000 finney)
也就是說ether =wei * 10^18,也就是說精度可以達到18位。

wei轉ether

> web3.fromWei(10000000000000000,"ether")
"0.01"
ether轉wei

> web3.toWei(1)
"1000000000000000000"
9.3第一個賬戶轉賬給第二個賬戶
在geth的console中輸入web3.eth.sendTransaction({from:web3.eth.accounts[0] , to: web3.eth.accounts[1],value: web3.toWei(1, "ether")})

會提示需要密碼或者解鎖,那麼我們需要解鎖第一個賬戶,因為是用一個賬戶轉出ether的,輸入personal.unlockAccount(web3.eth.accounts[0])

說明解鎖成功,我們再進行轉賬web3.eth.sendTransaction({from:web3.eth.accounts[0] , to: web3.eth.accounts[1],value: web3.toWei(1, "ether")})

說明轉賬已經提交成功,但是交易並未完成,還需要礦工挖礦提交新的區塊,在區塊中加入這次轉賬交易,提交新的區塊全網的節點(按百分比算,具體還沒細看原始碼)確認完成後,交易才正式生效。

輸入miner.start(1) 開始挖礦

等待挖礦完成

然後輸入miner.stop()停止挖礦,只是為了不讓螢幕一直重新整理,方便截圖

輸入

web3.fromWei(web3.eth.getBalance(web3.eth.accounts[0]),"ether")//查詢第一個賬戶餘額

web3.fromWei(web3.eth.getBalance(web3.eth.accounts[1]),"ether")//查詢第二個賬戶餘額

說明轉賬成功

附錄

--------------------- 
作者:戰爭迷霧 
來源:CSDN 
原文:https://blog.csdn.net/w88193363/article/details/79402074 
版權宣告:本文為博主原創文章,轉載請附上博文連結!