1. 程式人生 > >以太坊教程-搭建以太坊私鏈挖礦

以太坊教程-搭建以太坊私鏈挖礦

安裝客戶端

安裝Gth,即Go語言實現的以太坊客戶端 (go-ethereum)。

brew tap ethereum/ethereum
brew install ethereum

配置初始狀態

新建ethdev目錄

mkdir ethdev
cd ethdev

配置私鏈網路的初始狀態,新建 genesist.json

{  
    "config": {  
          "chainId": 22,  
          "homesteadBlock": 0,  
          "eip155Block": 0,  
          "eip158Block": 0  
      },  
    "alloc"      : {},  
    "coinbase"   : "0x0000000000000000000000000000000000000000",  
    "difficulty" : "0x20000",  
    "extraData"  : "",  
    "gasLimit"   : "0x2fefd8",  
    "nonce"      : "0x0000000000000042",  
    "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",  
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",  
    "timestamp"  : "0x00"  
  } 

chainId 制定了獨立的區塊鏈網路的ID,不同網路的節點無法互相連線。配置檔案還對當前挖礦難度 difficulty,區塊gas消耗限制 gasLimit進行了配置。

創世區塊

geth --datadir "~/ethdev" init ethdev/genesis.json

此時當前geths目錄下面會新增出兩個資料夾geth和keystore
geth中儲存的是區塊鏈的相關資料
keystore中儲存的是該鏈條中的使用者資訊

以太坊客戶端啟動:

geth  --datadir   ./   console  

登入成功以後可以檢視帳戶資訊,當前有哪些帳戶

> eth.accounts

["0xd15463b5ca866e1102b7bcb7ea72dda4203dbc74"]

建立賬戶

我本地建立已經建立了兩個帳戶

再建立一個:

> personal.newAccount('123')
"0x49d2b94b9da2b7f224b5b6b00aa77692dcad31fc"

以上通過personal.newAccount 傳入密碼引數即可建立一個新帳戶並返回新的帳戶地址;

在keystore裡可以看到有新建好的賬戶檔案
image.png
這個檔案要儲存好,不要洩露給其他人。

在以太坊客戶端 可以把某個帳戶賦值給一個變數

 > user1=eth.accounts[0]
"0xd15463b5ca866e1102b7bcb7ea72dda4203dbc74"

然後可以檢視當前帳戶的餘額:

> eth.getBalance(user1)
0
> eth.blockNumber
0

可以檢視當前user1的餘額為0,預設也是0個區塊,因為還沒有啟動礦挖礦

啟動挖礦

> miner.start()
true

在上面打開發檔案監控介面就會看到 挖礦建塊兒情況:

再 切回以太坊挖制臺,檢視使用者餘額:

> eth.getBalance(user1)

1.25890625e+21
> eth.getBalance(user2)
0

已經看到 帳戶1,已經有餘額了,帳戶2 還是0,因為挖礦的獎勵進入第一個帳戶中。

現在停止挖礦:

> miner.stop()
true

已經停止成功,另外日誌介面也停止輸出

再 檢視一下當前的區塊高度:

> eth.blockNumber

288

現在帳戶2中沒有餘額,我們從帳戶1轉發幾個以太幣到 帳戶2中:

> eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})

account is locked

    at web3.js:3119:20

    at web3.js:6023:15

    at web3.js:4995:36

    at <anonymous>:1:1

由於預設帳戶是鎖定的,首要解鎖帳戶,然後再 轉帳,先檢視 下下當前帳戶,再解鎖:

> eth.accounts

["0x73e8655a84a37685d98891b7a9333a7423e12cb3", "0xa9d6dfff13c1050f19a8ffc2811c68842797d01c", "0xe30cecc37776895389b94033ac65eb3b98294659"]

> personal.unlockAccount('0x73e8655a84a37685d98891b7a9333a7423e12cb3','11111111')

true

上面已經提示解鎖成功,然後繼續轉帳:

> eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})

"0x8f164a1296b618bdd64fcc007f6d39ce022b57e257beefeb76288cdef220ad80"

> eth.getBalance(user2)

0

上面已經提示轉帳成功了,但是user2帳戶餘額依然是0,是因為沒有礦工來挖礦處理,我們啟動一個礦工,並在另一個終端檢視日誌

日誌已經顯示開始挖礦併發交易進行了處理在,區塊293中,

> miner.start()

true
> miner.stop()

true
> eth.getBalance(user2)

3000000000000000000

我們再 次檢視餘額的時候user2已經 有三個以太幣了,這樣一個轉帳的交易就完成 了;

快速搭建以太坊以太坊私鏈指令碼

掃描下方二維碼,關注微信公眾號:H5開講啦,獲取更多學習資料。

qr.jpg