以太坊私鏈搭建

Window上安裝ubuntu系統搭建私有鏈操做步驟
 
 

modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0html

 
前提是 geth 已經安裝,能夠參考上一節內容講解
Step 1: 創建目錄和genesis.json
在命令行模式建立一個目錄,例如geths ,這裏geths目錄命名任意。
命令:mkdir geths
而後在ubuntu目錄下會出現一個geths文件夾。
繼續進入到該文件夾目錄下,建立一個文件,genesis.json, 文件名也能夠任意。
genesis.json 文件內容:
(注意版本太早的複製進去,運行會出錯,能夠適當更改內容)
[html] view plain copy
 
  1.    {  
  2.   "config": {  
  3.         "chainId": 666,  
  4.         "homesteadBlock": 0,  
  5.         "eip155Block": 0,  
  6.         "eip158Block": 0  
  7.     },  
  8.   "alloc"      : {},  
  9.   "coinbase"   : "0x0000000000000000000000000000000000000000",  
  10.   "difficulty" : "0x20000",  
  11.   "extraData"  : "",  
  12.   "gasLimit"   : "0x2fefd8",  
  13.   "nonce"      : "0x0000000000000042",  
  14.   "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",  
  15.   "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",  
  16.   "timestamp"  : "0x00"  
  17. }  
Step 2: 執行命令,建立創世區塊
切換回命令行,執行命令,製造創世區塊
進入到geths 目錄下,執行命令
geth --datadir "./" init genesis.json
此時當前geths目錄下面會新增出兩個文件夾geth和keystore
geth中保存的是區塊鏈的相關數據
keystore中保存的是該鏈條中的用戶信息
Step 3:建立本身的私有鏈條
geth --datadir "./" --nodiscover console 2>>geth.log
注意這裏輸出打印日誌到log文件中
Step 4:在本身的私有鏈條上建立用戶
輸入命令eth.accounts, 咱們會發現返回值爲[],這是由於此時雖然以太坊的私有鏈已經被創造出來,但尚未任何帳戶。
輸入命令personal.newAccount("xxx"),該命令將創造一個新的用戶,該用戶的密碼是xxx. 固然用戶也能夠將xxx 改成123,或者123456,或者任意密碼
再次輸入命令 eth.accounts, 咱們會發現一個新的用戶被建立了出來,這就表明咱們已經建立了一個帳戶,重personal.newAccount() & eth.accounts 咱們能夠建立若干個帳戶出來
 
Step 5: 最重要的一步來了,開始挖礦
在命令行中執行命令 miner.start(), 開始在咱們的區塊鏈上進行挖礦
一直等到100%。這個以太坊私有鏈就會正式啓動,並持續不斷的生成出以太坊來。
注意點:
1. 挖礦挖到的ether幣會默認保在第一個帳戶中,即eth.acccounts[0]中。
2. 挖礦是執行智能合約的基礎。若是中止挖礦的話,不只以太幣會中止生成,全部智能合約的調用也會不起做用。
3. 若是真的要中止挖礦,能夠執行命令miner.stop()來中止挖礦
4. 按上面的命令,應該是能夠實現以太坊挖礦的。若是不行的話,有可能就是以前有存在的鏈,此時應該刪除以前的數據。即刪除~/.ethash文件夾和裏面的文件便可。
5. 一般有人出現miner.start()返回null,,而且沒有信息刷屏,就停留在null,, 緣由回到step 3 你將輸出結果打印到日誌log,因此沒法顯示,exit 退出, 從新運行geth --datadir "./" --nodiscover console 便可。
 
Step6: 挖礦啓動後,查看主帳戶的以太幣數量
acc0 = eth.accounts[0]
eth.getBalance(acc0)
結果只要不爲0,那就說明挖礦成功!
 
退出挖礦:miner.stop()
退出當前geth ,執行:exit
從新運行geth, 直接進入到step 3, 不須要執行前兩步了。
 

(4)建立一個新帳戶git

personal.newAccount(‘密碼')github

 

(5)帳戶賦值給某一個變量web

user1 = persnal.account[0]json

 

(6)上面提到過日誌文件,咱們再重開一個終端,咱們使用如下命令打開日誌:ubuntu

tail -f  log.log函數

(7)在geth控制檯中啓動挖礦:學習

miner.start()區塊鏈

 

(8)中止挖礦ui

miner.stop()

 

(9)查看帳戶的帳戶餘額

eth.getBalance(user1)

 

(10)

user1向user2轉移以太幣

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

 

(11)解鎖帳戶後

eth.unlockAccount(user1,"123")

 

 

 

2)下面咱們來實現下在geth中編譯一個智能合約

 

[plain]  view plain  copy
 
  1. contract test {  
  2.     function multiply(uint a) returns(uint d) {  
  3.         return a * 7;   
  4.     }   
  5. }  
在geth中執行以下:

 

source = "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"

而後編譯該合約:

contract = eth.compile.solidity(source).test

編譯後的結果以下:

code:就是合約編譯後的字節碼文件,在以太坊虛擬機EVM上運行的就是這個字節碼;

abiDefinition:其實就是合約的二進制接口,可用來外部調用;

其餘的一些參數也都是能夠見名知意了。

 

而後就要獲取合約的abi(其實該真正要用的abi能夠經過https://ethereum.github.io/browser-solidity這個在線編譯器得到):

abi=[{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"payable":false,"type":"function"}]

 

而後是訪問abi接口:

MyContract=eth.contract(abi)

 

 

而後得到合約的實例:

myContract=MyContract.new({from:user1,data:contract.code})

若是提示你沒有解鎖的話,只要解鎖便可。

 

調用函數傳遞參數

函數作了乘以7的操做,輸出符合預期。合約執行成功。

 

      以上就是對geth最基本的運用,咱們會在之後的開發中學習geth更爲深刻的功能。

相關文章
相關標籤/搜索