CentOS7搭建以太坊私有鏈

 一、 環境準備:Win10 64位安裝 VM VirtualBox,操做系統版本:javascript

CentOS-7-x86_64-Everything-1611.iso(7.71G)。html

切換root帳號,方便安裝程序前端

二、 安裝Golang 1.9以上版本,yum安裝的能夠是1.8.3,因此要手動下載安裝java

國內鏡像:https://studygolang.com/dllinux

#cd /usr
#wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz
# tar -C /root -xzf go1.10.1.linux-amd64.tar.gz
# cd /root; vi ~/.bashrc
export GOPATH=/root/Go
export GOROOT=/root/go
export PATH=$PATH:$GOROOT/bin
# source ~/.bashrc
# go version
go version go1.10.1 linux/amd64

三、 安裝go版本的以太坊源碼git

#cd /usr
#git clone https://github.com/ethereum/go-ethereum
#cd go-ethereum
#make geth

四、 初始化一個創世區塊github

初始化創世區塊時,要先建立一個genesis.json文件,utf-8編碼,內容以下:golang

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

  

參數名稱web

參數描述json

mixhash

與nonce配合用於挖礦,由上一個區塊的一部分生成的hash。注意他和nonce的設置須要知足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。

nonce

nonce就是一個64位隨機數,用於挖礦,注意他和mixhash的設置須要知足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。

difficulty

設置當前區塊的難度,若是難度過大,cpu挖礦就很難,這裏設置較小難度

alloc

用來預置帳號以及帳號的以太幣數量,由於私有鏈挖礦比較容易,因此咱們不須要預置有幣的帳號,須要的時候本身建立便可以。

coinbase

礦工的帳號,隨便填

timestamp

設置創世塊的時間戳

parentHash

上一個區塊的hash值,由於是創世塊,因此這個值是0

extraData

附加信息,隨便填,能夠填你的個性信息

gasLimit

該值設置對GAS的消耗總量限制,用來限制區塊能包含的交易信息總和,由於咱們是私有鏈,因此填最大。

  

接下來,咱們使用geth init ./inti.json --datadir "./chain"命令,來進行創世區塊的初始化,當前區塊鏈網絡數據存放的位置會保存在chain目錄中:

#cd /usr/go-ethereum/bulid/bin
# ./geth  --datadir "./chain" init genesis.json

 

五、 啓用私有鏈

 

參數名稱

參數描述

datadir

設置當前區塊鏈網絡數據存放的位置

console

啓動命令行模式,能夠在Geth中執行命令

nodiscover

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

使用如下命令,啓用私有鏈:

./geth --datadir "./chain" --nodiscover console 2>>eth_output.log

./geth \
  --datadir "./chain" \
  --nodiscover \
  console 2>>eth_output.log    

 在當前目錄執行tail -f eth_output.log,能夠看到輸出日誌。 

後面章節中的命令,都是在啓動私有鏈後的Geth javascript console中操做 

六、 賬戶的添加和查看

查看賬戶,能夠看到當前賬戶是空的

> web3.eth.accounts
[] 
 建立賬戶的方式有兩種,第一種建立賬戶時直接初始化密碼
> web3.personal.newAccount("123456")
"0x741d379e702f95ea8fdf96df9d8aa34e31b011e9"
"0xe0b0bf3b64e238814dede73eca9f16e51f386819" 

其中返回的0x741d379e702f95ea8fdf96df9d8aa34e31b011e9是賬戶,123456是賬戶的密碼

  
  第二種方法是先建立帳戶,而後輸入密碼

> web3.personal.newAccount()
Passphrase:
Repeat passphrase:
"0x3b0ec02b4193d14abdc9cc5b264b5e3f39624d70"

  這時咱們再查看賬戶,可以看到剛纔建立的兩個賬戶已經存在了

> web3.eth.accounts
["0xbe323cc4fde114269a9513a27d3e985f82b9e25d", "0x3b0ec02b4193d14abdc9cc5b264b5e3f39624d70"] 

七、 用到的命令彙總:

./geth --datadir "./chain" --nodiscover console 2>>eth_output.log
web3.eth.accounts
web3.personal.newAccount("123456") 
miner.start(
1) //辦公電腦挖礦較慢 // miner.start(1) 返回 null時,執行如下2語句: eth.coinbase miner.setEtherbase(eth.coinbase) miner.stop() web3.eth.getBalance("0x741d379e702f95ea8fdf96df9d8aa34e31b011e9") acc0 = web3.eth.accounts[0] acc1 = web3.eth.accounts[1] acc2 = web3.eth.accounts[2] web3.eth.getBalance(acc0) web3.fromWei(web3.eth.getBalance(acc0)) 

八、 Linux命令

查看當前端口:netstat –ntlp

殺死指定進程:kill -9 pid

查看日誌:tail -f eth_output.log

 

九、 參考教程:http://www.cnblogs.com/lion.net/p/7809862.html

相關文章
相關標籤/搜索