1. 程式人生 > >【區塊鏈】從0開始搭建基於以太坊的區塊鏈開發環境

【區塊鏈】從0開始搭建基於以太坊的區塊鏈開發環境

Ethereum(以太坊)是一個使開發人員能夠建立和釋出下一代分散式應用的公共區塊鏈平臺。 通過其專用加密貨幣以太幣(Ether)提供去中心化的虛擬機器(稱為“以太虛擬機器”Ethereum Virtual Machine)來處理點對點合約。

本文從0開始搭建了以太坊的開發環境,猶如當年初學其他語言一樣,這是我們的第一個hellowork程式,在完成搭建後又進行了賬戶建立、挖礦、轉賬等測試。

圖片名稱

環境搭建

本次的以太坊環境是用go語言開發,虛擬機器內部執行的是javascript. 可能有人不太理解,舉個例子,java虛擬機器本身就是用c開發的(windows平臺上),但是執行在虛擬機器之上執行的是java語言。

環境準備

一臺能聯網的Ubuntu64位機器(已經安裝git),如果是其他機器型別,請參考其他安裝教程,點我

開始安裝

兩種安裝方式,任意選擇一種(建議使用第一種):

第一種使用 Personal Package Archives 直接安裝,命令如下:

1234sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum

第二種安裝方式,使用原始碼安裝,自己用go語言進行編譯,命令如下:

1.下載原始碼

1git clone https://github.com/ethereum/go-ethereum

2.安裝go的執行環境,參考本文
3.繫結執行環境到go

1sudo apt-get install -y build-essential golang

4.進入到原始碼目錄中,開始編譯原始碼

12cd go-ethereummake geth

5.執行

1build/bin/geth

初步探索

進入虛擬機器並輸出日誌

1get --dev console 2>> geth-log

主介面:
圖片名稱

日誌介面:
圖片名稱

全域性變數

其中有一些是全域性變數,你可以認為是javascript的全域性變數,全域性變數擁有自己的方法和函式。
如下eth變數:

圖片名稱

如下的的personal變數:

圖片名稱

下面對使用者操作,對礦機的操作,轉賬操作,挖礦操作,實際都在運用這些全域性變數中的引數,然後穿上適當的方法。

賬戶操作

1.建立新賬戶

1personal.newAccount('123456')

建立成功後,會展示建立成功的地址,其中上面的表示式中,中間傳入的123456為密碼

2.檢視一下系統有的使用者

1eth.accounts

圖片名稱

因為我之前有個使用者,所以在有兩個使用者

3.為使用者取一個別名,很顯然如果操作上面的字串地址是很不方面的,所以下面對字串使用者進行取別名,因為是js語言,所以可以直接使用,如下:

12user1 = eth.accounts[0]user2 = eth.accounts[1]

如果你在檢視user1.則如下,已經成功賦值
圖片名稱

4.對賬戶進行解鎖,為了安全起見,一般一個使用者在建立的時候都是出於鎖定的狀態,有日誌狀態可以看到,如下

ehcoo

對賬戶進行解鎖的命令

1personal.unlockAccount(user2,'123456')

開始挖礦

挖礦的過程,主要是對miner這個全域性變數進行操作
ehcoo

開始之前我們檢查一下賬戶user1和user2的金額,你會發現兩者的金額都為0

12eth.getBalcance(user1)eth.getBalcance(user2)

開始挖礦,命令如下:

1miner.start()

停止挖礦命令:

1miner.stop()

開始挖礦後臺輸出挖礦日誌:
ehcoo

執行一會後你去檢視使用者的賬戶金額

ehcoo

發現第一個賬戶中已經含有金額。也就是說預設是挖到了第一個賬戶中。

轉賬測試

現在我們模擬從第一個賬戶像第二個賬戶轉賬的命令

1eth.sendTransaction({from:user1,to:user2,value:8})

ehcoo

需要說明的是轉賬後,賬戶2並沒有立即收到錢,而在是挖礦之後才收到的,主要原因是當前的交易還沒有併入到區塊鏈中,我們從日誌中可以獲取相關資訊

ehcoo

像地址0x0b52…寫的的交易0xab24..,在區塊8中才寫入,我們可以檢視區塊8進行驗證

ehcoo

總結

本文快速搭建了一個以太坊的環境,並進一步探索了賬戶操作,轉賬,挖礦等操作,其中主要參考了汪曉明老師的教程。

宣告

本文20%為翻譯組合,80%為原創

引用