區塊鏈(2)CENTOS7上以太坊Ethereum搭建篇

本文目的是幫助對以太坊開發感興趣的同學,快速上手搭建搭建以太坊私有鏈。

首先介紹一下環境:

本次搭建的平臺是基于Windows下Vmware中安裝的CentOS7虛擬機,在虛擬機中完成所有操作。本文重點在以太坊私有鏈搭建,至于虛擬機的搭建,本文不再贅述。

操作系統:CentOS Linux release 7.2

一、什么是Ethereum(以太坊)

以太坊(英語:Ethereum)是一個開源的有智能合約功能的公共區塊鏈平臺。通過其專用加密貨幣以太幣(Ether)提供去中心化的虛擬機來處理點對點合約。截至2018年2月,以太幣是市值第二高的加密貨幣,僅次于比特幣。

以太坊的概念首次在2013至2014年間由程序員Vitalik Buterin,受比特幣啟發后提出,大意為“下一代加密貨幣與去中心化應用平臺”。所以很明顯,以太坊是比比特幣更先進的一代虛擬幣。如果說比特幣是區塊鏈的1.0時代,那么以太坊是區塊鏈的2.0時代。所以,建議大家從以太坊開始學習區塊鏈技術。

下面我們一起學習一下如何搭建以太坊私有鏈環境。

二、開始安裝Go語言

1.這里安裝的是go1.10版本,因為,低版本可能導致無法編譯后邊的以太坊安裝包。yum安裝的是1.9版本,所以要手動下載安裝

[root@hadoop111 ~]# wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz

#下載go安裝包1.10版本


2.解壓go安裝包

[root@hadoop111~]# tar -C /usr/local -xzf go1.10.linux-amd64.tar.gz


3.添加go環境變量

[root@hadoop111~]# echo 'export GOROOT=/usr/local/go' >> /etc/profile

[root@hadoop111 ~]# echo 'export PATH=$PATH:$GOROOT/bin'>> /etc/profile

[root@hadoop111 ~]# echo 'export GOPATH=/home/go' >>/etc/profile

[root@hadoop111 ~]# echo 'export PATH=$PATH:$GOPATH/bin'>> /etc/profile

4.刷新環境變量

[root@hadoop111 ~]# source /etc/profile

5.驗證go語言是否安裝成功

[root@hadoop111 ~]# go version

goversion go1.10 linux/amd64

三、安裝其它安裝以太坊需要的環境組件

安裝curlgit nodejsgcc-c++

[root@hadoop111 ~]# yum install-y curl gitnodejs gcc-c++

四、編譯安裝以太坊(這里采用的是源碼安裝方式)

1. 下載以太坊源碼

[root@hadoop111 ~]# cd/usr/local #創建目錄

[root@hadoop111 ~]# git clone https://github.com/ethereum/go-ethereum.git? ?#通過git下載以太坊源碼

正克隆到 'go-ethereum'...

remote: Counting objects: 70885,done.

remote: Total 70885 (delta 0),reused 0 (delta 0), pack-reused 70885

接收對象中: 100% (70885/70885),96.27 MiB | 174.00 KiB/s, done.

處理 delta 中: 100% (47083/47083), done.

2. 編譯

[root@hadoop111 ~]# cdgo-ethereum

[root@hadoop111 ~]# make all

3. 安裝cmake,智能合約需要使用

[root@hadoop111 ~]# cd ~

[root@hadoop111 ~]# wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz? #下載cmake安裝包

[root@hadoop111 ~]# tar xvfcmake-3.9.2.tar.gz #解壓

[root@hadoop111 ~]# cd cmake-3.9.2

[root@hadoop111 ~]# ./configure&& make && make install #編譯安裝

4. 檢查安裝結果

[root@hadoop111 ~]# systemctlis-enabled chronyd #時間同步服務

[root@hadoop111 ~]# cmake --version

cmake version 3.9.2

CMake suite maintained andsupported by Kitware (kitware.com/cmake).

[root@hadoop111 ~]# geth version


WARN [06-14|14:18:56] Sanitizingcache to Go's GC limits? provided=1024 updated=607

Geth

Version: 1.8.12-unstable

Git Commit:ea89f40f0dab7957aa1825b56be80e84d3b04b5c

Architecture: amd64

Protocol Versions: [63 62]

Network Id: 1

Go Version: go1.10

Operating System: linux

GOPATH=/home/go

GOROOT=/usr/local/go

五、使用以太坊私有鏈

1.初始化創世區塊

創建一個genesis.json文件

[root@hadoop111 ~]# cd /root

[root@hadoop111 ~]# mkdireth-test

[root@hadoop111 ~]# cd eth-test

[root@hadoop111 ~]# vigenesis.json

添加如下內容

{

"config":{

"chainId":20,

"homesteadBlock":0,

"eip155Block":0,

"eip158Block":0

},

"alloc":{},

"coinbase":"0x0000000000000000000000000000000000000000",

"difficulty":"0x200",

"extraData":"",

"gasLimit":"0x2fefd8",

"nonce":"0x0000000000000042",

"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",

"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",

"timestamp":"0x00"

}


2. 初始化節點

[root@hadoop111 ~]# geth--datadir "/root/eth-test/" init genesis.json#初始化創世區塊

執行完成后,將會出現類似以下信息,表示創世區塊初始化完成

啟動以太坊

[root@hadoop111 ~]# cd /usr/bin

[root@hadoop111 ~]# ./geth --rpc --rpccorsdomain "*" --datadir "/root/eth-test/" --rpcapi"db,net,eth,web3,personal,miner,debug,admin" --networkid 100000 console 2>>eth_output.log

注意:上面命令中–datadir后的”/root/eth-test/”要跟我們上一步的–datadir參數一致。命令執行完,自動進入geth的命令行則說明以太坊私有鏈安裝成功了。


3. 創建賬戶,挖礦

查看帳戶,可以看到當前帳戶是空的

[root@hadoop111 ~]#eth.accounts

創建兩個帳戶,并初始化密碼。注意密碼是用戶自定義的。

>personal.newAccount('123456')

"0x3e5b345a8b88fe181f75d6956c40c104de7b61ee"

>personal.newAccount('123456')

"0xc6b5ec8fff2696375c16c930a9fb7aec4a106b11"

再次查詢賬戶,發現有兩個了

> eth.accounts

["0x3e5b345a8b88fe181f75d6956c40c104de7b61ee","0xc6b5ec8fff2696375c16c930a9fb7aec4a106b11"]

為了操作方便,給賬戶起一個名字

> test1 = eth.accounts[0]

"0x3e5b345a8b88fe181f75d6956c40c104de7b61ee"

> test2 = eth.accounts[1]

"0xc6b5ec8fff2696375c16c930a9fb7aec4a106b11"

設置操作賬號

> miner.setEtherbase(test1) #如果不設置挖礦會默認保存到創建的第一個帳戶

true

開始挖礦

> miner.start()

null

#執行挖礦一段時間,然賬戶中有余額,第一次最好時間長一點,約3分鐘,避免挖不到,這塊如果用虛擬機的話,內存放大到至少2G,短時間內1G很難挖到


停止挖礦

> miner.stop()

true

查看賬戶

> eth.getBalance(test1)

65000000000000000000

4. 賬戶轉賬

轉賬前需要先解鎖賬戶,否則,會報錯Error: authentication needed:password or unlock

>personal.unlockAccount(test1,'123456')

true

轉賬時要注意,超過余額會報錯

> eth.sendTransaction({from:test1, to: test2, value: web3.toWei(1, 'ether')})

"0xe85d7e65919ce73c64958d07f29decece7cf7f6c1289d77c12e7c7eb5f631553"

查看賬戶,發現轉出賬戶余額并未減少,轉入賬戶也沒有增加,因為我們的交易還未成功寫進區塊,寫進區塊的方式是挖礦,我們再次開啟挖礦,挖礦成功后,再次查看余額,發現到賬:

>eth.getBalance(test2)

0

> miner.start(1)#執行挖礦讓交易執行,1表示使用一個cpuminer.stop()

null

過一會發現,已到賬

> eth.getBalance(test2)

1000000000000000000

此時,可以看出轉入賬戶,增加了1個以太幣。而轉出賬戶,由于再次挖礦而獲得獎勵,從而余額增加,所以,從轉出賬戶,不好判斷交易的真實數額。

到此為止,本節的內容就完成了。可見以太坊的環境和操作還是比較簡單的。


https://www.douban.com/note/679943478/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容