以太坊私鏈的搭建和智慧合約的部署
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

首先要配置環境。。。各種下載就好啦n(≧▽≦)n


  • 準備工作

1.安裝curl、git

apt-get update
apt-get install git
apt-get install curl

2.安裝go,配置go的環境變數

sudo apt-get install golang
mkdir -p ~/go; echo "export GOPATH=$HOME/go" >> ~/.bashrc
echo "export PATH=$PATH:$HOME/go/bin:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc

驗證go

go --v
go version

3.node.js、nmp

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
apt-get install nodejs

驗證是否安裝成功

node -v
npm -v

4.安裝ethereum

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

5.安裝solc編輯器

  sudo add-apt-repository ppa:ethereum/ethereum-qt
sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install cpp-ethereum

6.安裝Truffle 4.0和TestRPC
truffle依賴環境為:NodeJS 5.0 (所以按照其中一個參考部落格安裝的時候不小心安裝成了4.0…結果truffle啟動的時候一直找不到,簡直醉了T T)

npm install -g [email protected]
npm install -g ethereumjs-testrpc
//檢查一下版本
truffle version
  • 開始搭建私鏈 ~(@^_^@)~
    1.建立創世區塊(要先建立一個目錄喔,我是在root下建立了一個chain)
cd /root
mkdir chain
cd chain
vi genesis.json

genesis.json

{
"config": {
"chainId": 10,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"coinbase"   : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData"  : "",
"gasLimit"   : "0x8000000",
"nonce"      : "0x0000000000000042",
"mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp"  : "0x00",
"alloc": {}
}

創世區塊一定要有”config”{}項啊,不然就會挖礦不成功。本人就之前用的那個創世區塊尼瑪就挖不成礦,miner.start()開始後,percentage達到99後epoche變為1,Generating DAG in progress epoch=1類似這種:

INFO [11-23|12:29:22] Generating DAG in progress epoch=1 percentage=1 elapsed=44.984s 

但是沒有出現Successfully sealed new block等資訊,查閱了很多資料,還爬到外網上面查,根本就沒人遇到像我一樣智障的問題,只有查到這麼一條回答:

就說是記憶體不足比較慢,看了一下提問者的截圖,人家花了一天才挖到一個礦。。。我就也等了一天結果卵也沒有。。。

2.初始化創世區塊

>geth init ./genesis.json --datadir "/root/chain"

這裡會提示你沒有預設的賬號~我們下面再建立。

3.這裡我們用RPC方式執行Geth

geth \
--identity "mshk.top etherum" \
--rpcaddr 0.0.0.0 \
--rpc \
--rpcport 8545 \
--maxpeers 2 \
--rpcapi "db,eth,net,web3,debug" \
--networkid 100 \
--datadir "/root/chain" \
--nodiscover

各引數說明如下:

identity :區塊鏈的標示,隨便填寫,用於標示目前網路的名字

init :指定創世塊檔案的位置,並建立初始塊

datadir :設定當前區塊鏈網路資料存放的位置

port:網路監聽埠,預設是8080

rpc:啟動rpc通訊,可以進行智慧合約的部署和除錯。它在geth中通常被預設啟用。

rpcapi: 設定允許連線的rpc的客戶端,一般為db,eth,net,web3

networkid: 設定當前區塊鏈的網路ID,用於區分不同的網路,是一個數字

console:啟動命令列模式,可以在Geth中執行命令

maxpeers: 網路節點的最大數量,預設是25

dev :開發者模式,帶除錯模式的專有網路

nodiscover:私有鏈地址,不會被網上看到

rpc方式啟動geth以後,會一直停止在那裡,沒有辦法在geth中進行任何輸入,然後別關掉,一會這裡面會看到挖礦的日誌。瀏覽一下我們剛才建立區塊鏈資料的資料夾,會發現有一個geth.ipc檔案。

cd /root/chain
ll
//可以看到有個geth.ipc檔案
//進入geth控制檯
geth attach ipc://root/chain/geth.ipc

4.在geth中可以新建賬號,挖礦等等操作。。

常見一個賬戶,並解鎖使用者一段時間(單位是秒),然後啟動挖礦

> web3.personal.newAccount("sunyio")
//會返回hash後的密碼
> personal.unlockAccount(eth.accounts[0], "sunyio", 15000)
true
> miner.start(1)
null
//日誌檔案可以在之前沒關那個終端中看到,然後停止挖礦,看看挖了多少幣
> miner.stop()
true
> acc0 = web3.eth.accounts[0]
"0xc90747b99362c41fa89d2e7dea1b5b8d9567b741"
> web3.eth.getBalance(acc0)
415000000000000000000

挖到礦很可愛,有小鋤頭的樣子O(∩_∩)O哈哈~
這裡寫圖片描述

我寫不動了。。。先這樣吧~~~改天再寫n(≧▽≦)n

相關文章

程式語言 最新文章