本文章是在windows7下以太坊的私鏈搭建實現,私鏈主要是開發做測試而搭建的一個在本地的環境, 該產生的賬號,數據都只是本地的數據。
要下載的兩個客戶端
1.geth ( 發音guess)
geth的全稱是go-ethereum,是一個以太坊客戶端,用go語言編寫,應該是目前最常用的客戶端。當然以太坊客戶端還有用C++,Ruby,Python,Java等其他多種語言編寫的,不同類型的客戶端是爲了滿足不同的需求場景。
2.Ethereum Wallet 錢包
Ethereum Wallet客戶端對應的是Mist項目,現在此客戶端大多都稱爲Ethereum Wallet,也有稱作Mist客戶端的,知道它們兩個指的是通一個客戶端即可。此客戶端使用JavaScript進行開發,支持windows、linux和OSX三類操作系統,是一個圖形化操作界面的客戶端。介紹到這裏,大家可能就明白了,如果你想通過API來調用以太坊的接口,選擇此方式是行不通的。Ethereum Wallet客戶端主要是爲用戶提供可視化操作的客戶端,下載安裝之後通過相應的圖形化界面即可進行創建賬戶、轉賬、查詢餘額等操作
一. 使用Geth
下載64位或32位Geth安裝程序,然後進行安裝。
安裝完畢後打開該安裝的目錄d:\blockchain,有geth.exe的目錄,(注意,文件路徑中不能出現中文。也可以安裝在其他目錄,不要放在c盤,後期運行的時候,因爲系統對c盤的保護,會有一些訪問權限的問題。)
然後在該文件夾下創建創世塊的初始化文件genesis.json
內容如下
"config": {
"chainId": 16,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {
"0x83fd95f8e41f6afedd08dd6ae11db607a7a3c60c": {"balance": "666666666"},
"0x0000000000000000000000000000000000000002": {"balance": "222222222"}
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
解釋一下各個參數的作用:
mixhash | 與nonce配合用於挖礦,由上一個區塊的一部分生成的hash。注意他和nonce的設置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。. |
nonce | nonce就是一個64位隨機數,用於挖礦,注意他和mixhash的設置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。 |
difficulty | 設置當前區塊的難度,如果難度過大,cpu挖礦就很難,這裏設置較小難度 |
alloc | 用來預置賬號以及賬號的以太幣數量,因爲私有鏈挖礦比較容易,所以我們不需要預置有幣的賬號,需要的時候自己創建即可以。 |
coinbase | 礦工的賬號,隨便填 |
timestamp | 設置創世塊的時間戳 |
parentHash | 上一個區塊的hash值,因爲是創世塊,所以這個值是0 |
extraData | 附加信息,隨便填,可以填你的個性信息 |
gasLimit | 該值設置對GAS的消耗總量限制,用來限制區塊能包含的交易信息總和,因爲我們是私有鏈,所以填最大。 |
win鍵 + r 進入cmd命令行
鍵入 d: 是命令行進入d盤
鍵入 cd blockchain 進入d盤的blockchain目錄
鍵入 geth –datadir “%cd%\chain” init genesis.json 將創世塊信息初始化
初始化成功後, 進去D盤blockchain目錄查看是否有生成文件夾。
之後就可以啓動geth的私鏈 (下面是啓動私鏈的命令)
geth.exe --datadir “%cd%\chain” --syncmode=fast --rpc --rpcaddr 10.0.0.76 -rpcport 9335 --rpccorsdomain '"*"' --rpcapi "personal,db,eth,net,web3" --networkid 95518 console console
datadir 這是你私鏈的地址 這裏就是D盤blockchain下面
targetgaslimit –每個區塊能承載gas上限,這裏可以暫時理解爲容量
rpc –啓動rpc通信,可以進行智能合約的部署和調試
rpcaddr –rpc接口的地址
rpcport –rpc接口的端口號
port –網絡監聽端口,用於節點之間通信
rpcapi –設置rpc的範圍,暫時開啓eth,web3,personal足夠
networkid –設置當前區塊鏈的網絡ID,是一個數字,可以隨便寫(儘可能大於10)
mine 允許挖礦
minerthreads 挖礦啓動的線程數量,默認是4個。
console –啓動命令行模式*
當啓動後 就可以進行操一系列的業務,列如 查詢餘額,轉賬等。
我這裏就舉例幾個業務創建賬號,和查詢餘額,以及挖礦
1.創建賬號命令
personal.newAccount("輸入密碼")
這個時候我們可以看到除了第一個賬戶0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f
之外,還新增了另一個賬戶0xb8b12a801b610176935a15321f77b48dd5c0c448
, 此時輸入eth.accounts, 就可以很輕鬆的看到有兩個賬戶的公鑰地址。
2.餘額查詢
eth.getBalance("輸入賬號")
3.挖礦
miner.start()
輸入即可挖礦, 如果未指定賬號挖到的默認值向第一個賬號。
二 .使用Ethereum Wallet 錢包
打開Ethereum Wallet 錢包 默認會先連本地的geth數據私有鏈, 當啓動了geth私有鏈的時候打開錢包應該會在右上角顯示私有網絡PRIVATE-NET
之後啓動進入錢包主頁面
如下
這個就是對geth 的可視化操作,默認是鏈接公鏈,同步公鏈需要挺長的時間。