天天看點

以太坊區塊鍊學習之搭建私鍊

初學者了解以太坊,最好的辦法之一就是先搭建一條私鍊,在上面建立賬戶,部署合約,并試着與之互動。當完成了這一系列步驟後,對在以太坊上進行應用開發,就是順理成章的事情了。

開發需要

geth用戶端,本篇是基于MacOS10.12的作業系統,建議使用Mac或者裝有unbuntu的電腦進行開發,其實如果要長期學習區塊鍊的話,不建議使用Windows。

第一步

建立一個genesis.json檔案,内容如下:

[plain] view plain copy

  1. {  
  2.   "config": {  
  3.         "chainId": 10,  
  4.         "homesteadBlock": 0,  
  5.         "eip155Block": 0,  
  6.         "eip158Block": 0  
  7.     },  
  8.   "coinbase"   : "0x0000000000000000000000000000000000000000",  
  9.   "difficulty" : "0x2000",  
  10.   "extraData"  : "",  
  11.   "gasLimit"   : "0x8000000",  
  12.   "nonce"      : "0x0000000000000042",  
  13.   "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",  
  14.   "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",  
  15.   "timestamp"  : "0x00",  
  16.   "alloc": {}  
  17. }  

如果你是初次接觸區塊鍊,不必對檔案中的内容感到困惑,更不用被他們吓到,當你完成了私鍊的搭建,并在其上完成了建立賬戶、挖礦、部署合約以及與之互動的工作後,再回過頭看這份JSON檔案,你就會明白其中許多鍵值對的含義了。在後續的部落格中,我會進行解釋。

第二步

打開終端,建立一個目錄,把JSON檔案放入該目錄

  1. mkdir privateNet  
  2. mv 你的genesis.json privateNet/  
  3. cd privateNet  

第三步

建立創世區塊。

  1. geth --datadir "./" init genesis.json  

--datadir "./"指定私鍊資料存放的檔案夾位置,init初始化genesis.json,建立創世區塊。如果執行成功,在終端大緻會是這個樣子

同時,檢視你指定的存放私鍊資料的檔案夾,會多出兩檔案夾geth、keystore。這兩個檔案夾是幹什麼用的呢?geth檔案夾下用來存放私鍊的相關資料,keystore檔案夾下存放的是該鍊的使用者資訊。在圍繞私鍊的一系列動作完成後,你會有所了解。

第四步

建立私鍊

  1. geth --datadir "./"  console 2>>geth.log  

console 2>>geth.log 将私鍊的日志列印到geth.log中,在你的存放私鍊的檔案夾裡你會找到該檔案,另開一個終端,來到geth.log所在目錄,執行指令:

  1. tail -f geth.log  

你将在這個終端中實時的看到私鍊的狀況。

至此,私鍊已經搭建完成。當然,我們應該體驗一把辛苦搭建的私鍊

建立賬戶

回到之前建立私鍊的那個終端,可以看到,此時的終端處于待輸入狀态,輸入

  1. eth.accounts  

将會傳回[],此時的私鍊還沒有賬戶,輸入

  1. personal.newAccount("password")  

回車後會傳回一串hash,傳回的hash代表建立賬戶的位址,這條指令中的password代表該賬戶的密碼,可以随意指定。這是再輸入eth.accounts将會傳回剛剛建立的賬戶的位址,根據傳回值我們可以知道,賬戶以數組形式存在,是以我們輸入eth.accounts[0],也會傳回剛剛建立賬戶的位址。

查詢賬戶餘額

輸入

  1. eth.getBalance(eth.accounts[0])  

傳回值為賬戶餘額,此時賬戶餘額為0。

挖礦

聽到挖礦,第一反應肯定是,挖币賺錢,沒錯,接下來我們也要挖出我們的“以太币”,來“賺錢”了!輸入:

  1. miner.start(1)  

傳回值會為true或者null,這都沒什麼影響,檢視另一個終端,會看到有塊正在生産。指令中的參數1代表隻用目前機器的一塊處理器進行挖礦,如果不輸入參數,預設是“全力挖礦”,這樣電腦會很容易發熱。

在geth終端再次輸入

會傳回一長串數字,這些數字就是你在過去幾秒或者幾分鐘内挖出的币,如果這是真的以太币,那你在過去幾秒已經賺取了不菲的财富了!你可能會疑惑,為什麼幾秒鐘的功夫就能夠得到這麼多币呢?這是因為你産生了足夠多的區塊。那為什麼産生區塊的速度這麼快呢?這是因為,在最開始我們的genesis.json檔案中,有一項叫做

  1. "difficulty" : "0x2000"  

這一項用來控制我們挖礦的難度,我們設定的難度“偏低”,大家可以改變它的值,重新搭建私鍊試試。

至此,你已經掌握了私鍊的搭建以及建立賬戶、檢視餘額、挖礦的工作了,下一篇部落格将講述如何在這個私鍊上部署合約并與之互動。

當然,别忘了停止挖礦:輸入指令:

  1. miner.stop()  

傳回true,挖礦停止。

原文釋出時間為:2018年02月06日

本文作者:FlyingApe

本文來源:

CSDN

,如需轉載請聯系原作者。

繼續閱讀