二、區塊鏈學習-創建自已私鏈

教程簡介:

  • 本教程描述瞭如何搭建Ethereum私鏈用於在以太坊鏈上進行開發實驗。


創建私鏈的目的:

  • 搭建私鏈的目的是方便在鏈上做實驗。在日常區塊鏈開發中當然可以使用公網主鏈,但是這樣會造成不必要的金錢浪費。因爲在以太坊鏈上幹任何事都需要消耗gas。所以對於日常實驗性開發,一般都是在自己的私鏈上做實驗。

環境搭建:

一、創建創世配置文件:

首先需要創建一個“創世”json配置文件,此文件描述了創世區塊的一些參數。下面就是文件中的內容:

 {
       "coinbase": "0x0000000000000000000000000000000000000000",
       "config": {
              "homesteadBlock": 5
        },
       "difficulty": "0x20000",
       "extraData": "0x",
       "gasLimit": "0x2FEFD8",
       "mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
       "nonce": "0x0",
       "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
       "timestamp": "0x00",
       "alloc": {
              "dbdbdb2cbd23b783741e8d7fcf51e459b497e4a6":
              {
                  "balance":"100000000000000000000000000000"
              }
       }
    }

將上面這段代碼複製到一個文本文件裏並起名爲genesis.json

爲了不和主鏈的數據衝突,這裏建議建立自己的私鏈數據文件夾。在我的電腦上在E盤建了一個EthDBSpace作爲以太坊實驗工作區,並在裏面創建了一個PrivChain文件夾作爲我的第一個私鏈的數據存放文件夾.

這裏爲了方便管理將genesis.json放在了EthDBSpace文件夾下,打開Windows命令行

  • 鍵入如下命令

  

 geth --datadir "E:\EthDBSpace\PrivChain" init "E:\EthDBSpace\genesis.json"
    –datadir 選項用來指定我們私鏈的數據目錄。在我的電腦上是E:\EthDBSpace\PrivChain
    init 命令爲創世命令,後面緊跟着我們的創世配置文件路徑。

點擊回車後執行結果如下:

  • 創建賬戶:

爲了在私鏈上做實驗,我們還需要在私鏈上建立自己的賬戶

  • Windows命令行鍵入

  geth --datadir "E:\EthDBSpace\PrivChain" console

    我們由於已經創世成功所以第二次進入客戶端時我們不用再次指定genesis.json文件路徑,而是直接–datadir 指明私鏈數據路徑即可。
    console命令用來開啓geth的命令行。
  • 點擊回車後,客戶端會先經過一陣初始化。在命令提示符出現後,說明已經進入geth console

在geth命令行中鍵入:

personal.newAccount('Your Password')
personal.newAccount 函數用來創建賬戶,其中參數爲賬戶密碼

  • 點擊回車後會出現

賬戶創建成功後會在命令下方以綠色字符列明創建賬戶的地址,也即賬戶的公鑰

我們可以先查下賬戶餘額,在geth命令行中鍵入:

  my=eth.accounts[0]
  eth.getBalance(my)
my=eth.accounts[0],此句的目的是將我們剛創建的賬戶地址賦值給my變量。這樣可以簡化後續賬戶地址輸入。
其中eth.accounts記錄了本機上所有賬戶地址。由於我們第一次創建賬戶,所以目前電腦上只有一個賬戶。
所以這裏我們用eth.accounts[0]提取第一個賬戶地址。eth.getBalance函數用來獲得賬戶餘額,參數填入賬戶地址。
這裏的my變量記錄的就是第一個賬戶的地址。
執行結果如下:

可以看到此時賬戶裏沒錢。在以太坊上轉賬、發佈合約、執行合約都需要費錢。而錢來自挖礦,下面我們先挖礦賺些錢。

挖礦賺錢:

目前的以太坊使用POW(Proof of Work)共識機制來激勵人們去維護賬本記賬。此機制的核心是系統出一道題,讓全網有意記賬節點來求解,第一個求解出題目答案的節點會獲得新區塊的記賬權並獲得eth作爲獎勵。其中有意記賬的節點叫做礦工節點。下面我們在我們的私鏈上挖礦賺一些錢便於我們後續的轉賬實驗。

  • 繼續在geth命令行鍵入如下命令開始挖礦:
 miner.start()

點擊回車後會看見客戶端開始挖礦,命令行裏不斷顯示出塊進度


由於是私鏈,目前就一個節點在挖礦不存在競爭。所以開挖若干秒即可停止挖礦,挖得得錢已經可以進行後續實現。

鍵入如下命令停止挖礦

  miner.stop()

此時再次查看我們的賬戶餘額:

eth.getBalance(my)
會看到我們的餘額多了一大筆錢,顯示的餘額以以太坊貨幣單位wei來計算。關於wei到eth的換算表參見http://www.ethdocs.org/en/latest/ether.html

轉賬實驗:

下面我們嘗試下在我們自己創建的私鏈上進行轉賬
- 先創建第二賬戶,繼續在geth命令行鍵入如下命令

 personal.newAccount('123')
 other=eth.accounts[1]

將第二賬戶地址賦值給other變量,便於後續輸入

在轉賬前需要對轉出賬戶進行解鎖,繼續在geth命令行鍵入如下命令

 personal.unlockAccount(my)

由於目前是my賬戶中有錢,other賬戶沒錢,所以這裏解鎖我們的轉出賬戶my

回車後會提示輸入密碼,我這個賬戶的密碼爲123,輸入後回車即可解鎖

開始轉賬,在geth命令行鍵入

 eth.sendTransaction({from:my, to:other, value:10000})
其中from爲轉出賬戶,這裏我們輸入記錄了第一個賬戶地址的my變量
to爲轉入賬戶,這裏我們輸入記錄額第二個賬戶地址的other變量
value指定了轉出金額,單位爲wei,這裏我們轉出10000wei


鍵入後結果如下:



此時我們再次查看兩個賬戶的餘額

  eth.getBalance(my)
  eth.getBalance(other)

查詢餘額結果如下:

此時會發現一個奇怪現象,前面的轉賬請求已經提交,爲什麼兩個賬戶的餘額沒有發生任何變化?回想剛纔我們講到的,以太坊使用POW共識激勵礦工記賬,而由於我們創建的是私鏈目前只有我們一個節點,所以此時並沒有其它節點參與記賬。所以我們需要通過挖礦把這筆轉賬記錄到塊中。

繼續挖礦,在geth 控制檯中鍵入

 miner.start()

等待挖一會後停止挖礦

   miner.stop()

再次查詢,發現轉賬已到位

總結:

到此本節教程結束,此教程我主要介紹瞭如何搭建一個以太坊開發實驗環境,創建私鏈及在私鏈上挖礦轉賬。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章