以太坊詳細入門教程
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”:
私有鏈節點的加入:
新建節點 node2,使用預設埠 “30303”
進入node2 的console:
檢視node2的enode
在私有鏈的控制檯新增node2
檢視節點列表,從中可以看到私有鏈中增加了另一個節點的Address
2.對getBlock中所得區塊的各個欄位進行解釋
獲取Block 4的資訊:
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中
使用 tail -f output.log
實時檢視日誌資訊
資料分析:
挖礦:
- 找到重要的鏈,末尾區塊號為58
- 進行挖礦,當前區塊號為65
- 成功挖到66號區塊,進行廣播
- 66號區塊打包成功
exit 步驟:
- 關閉 網路通訊
- 將cache狀態寫入磁碟
- 停止區塊鏈管理
- 停止以太坊協議
- 交易池停止接收交易請求
- 關閉資料庫
4.編寫簡單的智慧合約,在remix下進行除錯,並部署在鏈上進行呼叫
編寫一個wallet 程式,可以通過該程式收入,花費和檢視wallet裡面的餘額
無編譯錯誤後進行部署:
使用Web3 provider 連線本地私有鏈
出現連線不成功的區塊,解決方案是 在命令列新增 引數
--rpccorsdomain "*"
geth --datadir data/ --port "30300" --rpc --rpcport 8545 --rpccorsdomain "*" console
此處參考: Remix無法連線私有鏈問題解決方案
點選Deploy 鍵進行部署:
部署不成功,需要對賬戶解鎖
解鎖賬戶
部署交易並啟動挖礦,使得交易被處理
若不進行挖礦,則會卡在creation of wallet pending 這個步驟
通過transaction hash 獲得交易資訊
呼叫智慧合約:
呼叫income(10)
,收入10,呼叫 get()
, 顯示如下:
呼叫spend(5)
,支出5,呼叫get()
,顯示如下:
5.對交易欄位進行解釋
status: 當前交易的狀態
transaction hash:交易雜湊值,可通過getTransaction 獲取交易資訊
from :交易發起方地址
to:交易接收方地址,即接收服務費,轉賬等
gas:交易估計需要消耗的gas
transaction cost:交易實際消耗的gas
hash:交易雜湊值
input:輸入值的雜湊
decoded input:輸入值的雜湊解碼
decoded output:輸出
logs:日誌
values:轉賬金額