【區塊鏈】從0開始搭建基於以太坊的區塊鏈開發環境
Ethereum(以太坊)是一個使開發人員能夠建立和釋出下一代分散式應用的公共區塊鏈平臺。 通過其專用加密貨幣以太幣(Ether)提供去中心化的虛擬機器(稱為“以太虛擬機器”Ethereum Virtual Machine)來處理點對點合約。
本文從0開始搭建了以太坊的開發環境,猶如當年初學其他語言一樣,這是我們的第一個hellowork程式,在完成搭建後又進行了賬戶建立、挖礦、轉賬等測試。
環境搭建
本次的以太坊環境是用go語言開發,虛擬機器內部執行的是javascript. 可能有人不太理解,舉個例子,java虛擬機器本身就是用c開發的(windows平臺上),但是執行在虛擬機器之上執行的是java語言。
環境準備
一臺能聯網的Ubuntu64位機器(已經安裝git),如果是其他機器型別,請參考其他安裝教程,點我
開始安裝
兩種安裝方式,任意選擇一種(建議使用第一種):
第一種使用 Personal Package Archives 直接安裝,命令如下:
1234 | sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum |
第二種安裝方式,使用原始碼安裝,自己用go語言進行編譯,命令如下:
1.下載原始碼
1 | git clone https://github.com/ethereum/go-ethereum |
2.安裝go的執行環境,參考本文
3.繫結執行環境到go
1 | sudo apt-get install -y build-essential golang |
4.進入到原始碼目錄中,開始編譯原始碼
12 | cd go-ethereummake geth |
5.執行
1 | build/bin/geth |
初步探索
進入虛擬機器並輸出日誌
1 | get --dev console 2>> geth-log |
全域性變數
其中有一些是全域性變數,你可以認為是javascript的全域性變數,全域性變數擁有自己的方法和函式。
如下eth變數:
如下的的personal變數:
下面對使用者操作,對礦機的操作,轉賬操作,挖礦操作,實際都在運用這些全域性變數中的引數,然後穿上適當的方法。
賬戶操作
1.建立新賬戶
1 | personal.newAccount('123456') |
建立成功後,會展示建立成功的地址,其中上面的表示式中,中間傳入的123456為密碼
2.檢視一下系統有的使用者
1 | eth.accounts |
因為我之前有個使用者,所以在有兩個使用者
3.為使用者取一個別名,很顯然如果操作上面的字串地址是很不方面的,所以下面對字串使用者進行取別名,因為是js語言,所以可以直接使用,如下:
12 | user1 = eth.accounts[0]user2 = eth.accounts[1] |
4.對賬戶進行解鎖,為了安全起見,一般一個使用者在建立的時候都是出於鎖定的狀態,有日誌狀態可以看到,如下
對賬戶進行解鎖的命令
1 | personal.unlockAccount(user2,'123456') |
開始挖礦
開始之前我們檢查一下賬戶user1和user2的金額,你會發現兩者的金額都為0
12 | eth.getBalcance(user1)eth.getBalcance(user2) |
開始挖礦,命令如下:
1 | miner.start() |
停止挖礦命令:
1 | miner.stop() |
執行一會後你去檢視使用者的賬戶金額
發現第一個賬戶中已經含有金額。也就是說預設是挖到了第一個賬戶中。
轉賬測試
現在我們模擬從第一個賬戶像第二個賬戶轉賬的命令
1 | eth.sendTransaction({from:user1,to:user2,value:8}) |
需要說明的是轉賬後,賬戶2並沒有立即收到錢,而在是挖礦之後才收到的,主要原因是當前的交易還沒有併入到區塊鏈中,我們從日誌中可以獲取相關資訊
像地址0x0b52…寫的的交易0xab24..,在區塊8中才寫入,我們可以檢視區塊8進行驗證
總結
本文快速搭建了一個以太坊的環境,並進一步探索了賬戶操作,轉賬,挖礦等操作,其中主要參考了汪曉明老師的教程。
宣告
本文20%為翻譯組合,80%為原創