1. 程式人生 > >Truechain運用docker映象搭建TrueChain測試私有環境

Truechain運用docker映象搭建TrueChain測試私有環境

安裝docker

Mac參考https://blog.csdn.net/jiang_xinxing/article/details/58025417

1.2Docker命令

docker --version
docker-compose --version
docker-machine --version
docker ps  檢視web伺服器容器的詳細資訊
docker run hello-world 測試安裝的docker是否正常
docker run -d -p 80:80 --name webserver nginx 執行nginx,然後訪問localhost

nginx web伺服器在你停止或者移除容器之前會持續執行著

docker start webserver  啟動伺服器
docker stop webserver  停止web伺服器
docker ps -a  檢視終止狀態的容器
docker rm -f webserver 移除正在執行的容器
docker list 列出本地映象
docker rmi後加ID號和映象名字 如:docker rmi ngix  移除一個長期不需要的映象

啟動docker

service docker start

pull初鏈映象

docker pull registry.cn-hangzhou.aliyuncs.com/truechain_space/truechain_image:latest

更改映象tag為etrue

docker tag registry.cn-hangzhou.aliyuncs.com/truechain_space/truechain_image etrue

建立genesis.json檔案

1.建立truechain目錄 mkdir truechain 2.進入目錄 cd truechain 3.建立genesis.json檔案 touch genesis.json sudo vi genesis.json 檔案內容是:

{
"config": {
   "chainId": 10,
   "homesteadBlock": 0,
   "eip155Block": 0,
   "eip158Block": 0
 },
 "alloc":{
   "0x7c357530174275dd30e46319b89f71186256e4f7" : { "balance" : 90000000000000000000000},
   "0x4cf807958b9f6d9fd9331397d7a89a079ef43288" : { "balance" : 90000000000000000000000},
   "0x04d2252a3e0ca7c2aa81247ca33060855a34a808" : { "balance" : 90000000000000000000000},
   "0x05712ff78d08eaf3e0f1797aaf4421d9b24f8679" : { "balance" : 90000000000000000000000},
   "0x764727f61dd0717a48236842435e9aefab6723c3" : { "balance" : 90000000000000000000000},
   "0x764986534dba541d5061e04b9c561abe3f671178" : { "balance" : 90000000000000000000000},
   "0x0fd0bbff2e5b3ddb4f030ff35eb0fe06658646cf" : { "balance" : 90000000000000000000000},
   "0x40b3a743ba285a20eaeee770d37c093276166568" : { "balance" : 90000000000000000000000},
   "0x9d3c4a33d3bcbd2245a1bebd8e989b696e561eae" : { "balance" : 90000000000000000000000},
   "0x35c9d83c3de709bbd2cb4a8a42b89e0317abe6d4" : { "balance" : 90000000000000000000000}
 },

 "committee":[
   {
     "address": "0x76ea2f3a002431fede1141b660dbb75c26ba6d97",
     "publickey": "0x04044308742b61976de7344edb8662d6d10be1c477dd46e8e4c433c1288442a79183480894107299ff7b0706490f1fb9c9b7c9e62ae62d57bd84a1e469460d8ac1"
   }
 ]
,
 "coinbase"   : "0x0000000000000000000000000000000000000000",
 "difficulty" : "0x100",
"extraData"  : "",
 "gasLimit"   : "0x5400000",
 "nonce"      : "0x0000000000000042",
 "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
 "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
 "timestamp"  : "0x00"
}

簡單介紹一下這個genesis.json

chainId 鏈的ID alloc 系統自帶的兩個地址及餘額 coinbase 礦工工號 difficulty 挖礦難度 extraData 擴充套件欄位 gasLimit 交易手續費 nonce 隨機字串,用於挖礦 mixhash 配合nonce進行挖礦 parentHash 上一個區塊的雜湊 timestamp 區塊生成的時間

建立創世區塊

1.在truechain目錄下執行下面命令

docker run -v $PWD:/truechain-engineering-code -v $PWD/data:/truechain-engineering-code/data -it etrue  --datadir /truechain-engineering-code/data init /truechain-engineering-code/genesis.json

啟動節點

docker attach ba86d98b919b 1.進入truechain目錄下,啟動單節點測試網路

docker run -v $PWD:/truechain-engineering-code -it etrue --singlenode --datadir /truechain-engineering-code/data --bftkeyhex "c1581e25937d9ab91421a3e1a2667c85b0397c75a195e643109938e987acecfc" --election --bftip "172.21.0.5" --bftport 10080 --port 30303 --networkid 10 --rpc --rpcaddr 127.0.0.1 --rpcport 8545 --rpcapi "db,etrue,net,web3,personal,admin,miner" --verbosity 1 console

2.解析命令

1)-singlenode --bftkeyhex “xxx” 單節點啟動網路,引數是節點私鑰,該私鑰和genesis檔案裡的公鑰是一對. 2)–election --bftip “172.26.246.28” --bftport 10080 本節點參與委員會選舉,配置自己的ip和埠。但單節點執行環境,本身就是委員會節點,所以這條命令可以不用。

使用測試網路

3.建立賬戶:personal.newAccount() publickey=04044308742b61976de7344edb8662d6d10be1c477dd46e8e4c433c1288442a79183480894107299ff7b0706490f1fb9c9b7c9e62ae62d57bd84a1e469460d8ac1 ip=172.21.0.5

0x9869b72d3a27b438b5d7f56d959f581c3ca69082 0x1f726f9b4d8324c2a39858136d3019239cb4e1fb

1.查詢賬戶: etrue.accounts

2.查詢賬戶餘額: etrue.getBalance(“0x1f726f9b4d8324c2a39858136d3019239cb4e1fb”) etrue.getBalance(“0x9869b72d3a27b438b5d7f56d959f581c3ca69082”)

4.轉賬數額位和true單位轉換:amount = web3.toWei(5000,‘ether’)

5.賬戶解鎖:personal.unlockAccount(etrue.accounts[0])或 personal.unlockAccount(“0x1f726f9b4d8324c2a39858136d3019239cb4e1fb”)

6.轉賬交易:etrue.sendTransaction({from:“0x9869b72d3a27b438b5d7f56d959f581c3ca69082”,to:“0x1f726f9b4d8324c2a39858136d3019239cb4e1fb”,value:1})

7.查詢挖礦的coinbase地址:etrue.coinbase

8.啟動挖礦,括號內可以新增數字,表示開啟幾個執行緒:miner.start()

9.停止挖礦:miner.stop()

10.etrue.getTransactionReceipt(“0xf659bf31ee2cc57a0a68417b284c11d0ba23d2376dc236c49af6e8164f04781e”)

在這裡插入圖片描述