1. 程式人生 > >以太坊詳細入門教程

以太坊詳細入門教程

1.以太坊的安裝、私有鏈創世區塊搭建、私有鏈節點的加入

安裝以太坊:

$	apt-get	install	software-properties-common
$	add-apt-repository	-y	ppa:ethereum/ethereum 
$	apt-get	update
$	apt-get	install	ethereum

若無法安裝,一般是網路問題,本文的解決方案是使用VPN:Baccloud

私有鏈創世區塊的搭建:

初始化創世區塊: 在這裡插入圖片描述 進入私有鏈的console,使用埠“30300”:

1541248734967

私有鏈節點的加入:

新建節點 node2,使用預設埠 “30303”

1541247638868

進入node2 的console:

1541247681239

檢視node2的enode

1541247938998

在私有鏈的控制檯新增node2

1541248206039

檢視節點列表,從中可以看到私有鏈中增加了另一個節點的Address

1541248405217

2.對getBlock中所得區塊的各個欄位進行解釋

獲取Block 4的資訊:

1541249337618

difficulty:挖到該區塊的難度係數

extraData:當前區塊的extra data

gasLimit: gas使用量上限

gasUsed: gas的實際使用量

hash: 區塊的雜湊值

logsBloom:布隆過濾器的日誌,ps布隆過濾器是一種基於Hash的高效查詢結構,能快速回答“某個元素是否在一個集合內”的問題

miner: 獲得該區塊獎勵的礦工

mixHash:一個Hash值,當與nonce組合時,證明此區塊已經執行了足夠的計算

nonce: 隨機數,用於挖礦

number:區塊號

parentHash: 父區塊的雜湊值

receiptsRoot: 包含此區塊所有交易的merkle樹的根節點Hash值

sha3Uncles: 叔區塊的雜湊值

size: 區塊的大小

stateRoot: 方便節點間狀態的互相驗證,保證在交易的每個區塊中所有節點的狀態是一致的

timestamp: 區塊打包時的時間戳

totalDifficulty:創世區塊到當前區塊的所有區塊難度總和

transactions: 交易資訊

transactionsRoot: 區塊交易字首樹的根

uncles:陣列,叔塊的雜湊值陣列

3.對日誌輸出進行解釋

將控制檯資訊寫入output.log中 1541253116109

使用 tail -f output.log 實時檢視日誌資訊

1541253314076

資料分析:

挖礦:

  1. 找到重要的鏈,末尾區塊號為58
  2. 進行挖礦,當前區塊號為65
  3. 成功挖到66號區塊,進行廣播
  4. 66號區塊打包成功

1541253689845

exit 步驟:

  1. 關閉 網路通訊
  2. 將cache狀態寫入磁碟
  3. 停止區塊鏈管理
  4. 停止以太坊協議
  5. 交易池停止接收交易請求
  6. 關閉資料庫

1541255646414

4.編寫簡單的智慧合約,在remix下進行除錯,並部署在鏈上進行呼叫

編寫一個wallet 程式,可以通過該程式收入,花費和檢視wallet裡面的餘額

1541261926327

無編譯錯誤後進行部署:

1541262006793

使用Web3 provider 連線本地私有鏈

出現連線不成功的區塊,解決方案是 在命令列新增 引數 --rpccorsdomain "*" geth --datadir data/ --port "30300" --rpc --rpcport 8545 --rpccorsdomain "*" console 此處參考: Remix無法連線私有鏈問題解決方案

點選Deploy 鍵進行部署:

1541262241111

部署不成功,需要對賬戶解鎖

1541260895092

解鎖賬戶

1541260852685

部署交易並啟動挖礦,使得交易被處理

若不進行挖礦,則會卡在creation of wallet pending 這個步驟

1541261151285

1541261733583

通過transaction hash 獲得交易資訊

1541261706440

呼叫智慧合約:

呼叫income(10),收入10,呼叫 get() , 顯示如下:

1541300017112

呼叫spend(5),支出5,呼叫get(),顯示如下:

1541300156443

5.對交易欄位進行解釋

1541300225043

status: 當前交易的狀態

transaction hash:交易雜湊值,可通過getTransaction 獲取交易資訊

from :交易發起方地址

to:交易接收方地址,即接收服務費,轉賬等

gas:交易估計需要消耗的gas

transaction cost:交易實際消耗的gas

hash:交易雜湊值

input:輸入值的雜湊

decoded input:輸入值的雜湊解碼

decoded output:輸出

logs:日誌

values:轉賬金額

叔塊的介紹