前言
單節(jié)點(diǎn)私鏈搭建請(qǐng)參考 劍有偏峰 的文章:
比特股環(huán)境搭建
編譯比特股網(wǎng)頁錢包
搭建比特股的水龍頭注冊(cè)服務(wù)
本文同時(shí)在個(gè)人博客發(fā)布:Bitshares 私鏈部署witness節(jié)點(diǎn)瀑志,轉(zhuǎn)載請(qǐng)注明出處讶舰。
多節(jié)點(diǎn)部署
通過之前的文章透且,部署了單節(jié)點(diǎn)的 Bitshares 區(qū)塊鏈瑞驱,接下去模擬真實(shí)場(chǎng)景陨仅,應(yīng)該是有很多區(qū)塊鏈節(jié)點(diǎn)才能實(shí)現(xiàn)去中心化高可用的架構(gòu)俭厚。
在另一臺(tái)機(jī)器上同樣編譯 Bitshares-core 账月,將原來的genesis.json復(fù)制到本機(jī)的 bitshares-core/programs/witness_node 目錄下蟆沫,執(zhí)行
./witness_node -d test_net --seed-nodes "[]" --genesis-json "genesis.json"
會(huì)初始化目錄 test_net
然后
ctrl-c
退出程序,編輯 test_net/config.ini蛾洛,修改如下幾項(xiàng)配置
p2p-endpoint = 0.0.0.0:9090
seed-nodes = ["192.168.23.248:9090"]
rpc-endpoint = 0.0.0.0:8090
enable-stale-production = true
其中 seed-nodes 填寫之前啟動(dòng)的區(qū)塊鏈節(jié)點(diǎn)的 ip 和 p2p-endpoint 端口
再次啟動(dòng)witness程序
./witness_node -d test_net
這樣就成功部署了另一個(gè)區(qū)塊鏈節(jié)點(diǎn)养铸,但是由于沒有witness權(quán)限,所以不會(huì)出塊轧膘,只會(huì)同步區(qū)塊信息钞螟。
從github下載下來的代碼啟動(dòng)私鏈,默認(rèn)的 witness 是 init0~inti10谎碍。
成為 witness
這里默認(rèn)讀者已經(jīng)會(huì)使用 cli_wallet .
啟動(dòng) cli_wallet 鳞滨,執(zhí)行:
suggest_brain_key
獲得新賬戶信息
{
"brain_priv_key": "LYSSA JUBILEE GIDDIFY KEMPITE INULASE SOBBER GROVEL ENCLAVE T SAHME MYXA GLIDE OVERALL SYNC GROWLER THRILL",
"wif_priv_key": "5Jiie6zMJWAJ6P8QmivSVjfbPyWa9uKNtwtFXQC3TBoGZDnKXwN",
"pub_key": "BTS7Zpu3gZmVAGAXgGbD4CzJBwP9uFWtwN5V83TnJQsF9eZ6CnSMx"
}
如果之前沒有import nathan 用戶,執(zhí)行:
import_key nathan 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
nathan 如果看過之前帖子應(yīng)該知道是什么蟆淀。
通過生成的 pub_key 注冊(cè)用戶 joshua(任意名稱)
register_account joshua "BTS7Zpu3gZmVAGAXgGbD4CzJBwP9uFWtwN5V83TnJQsF9eZ6CnSMx" "BTS7Zpu3gZmVAGAXgGbD4CzJBwP9uFWtwN5V83TnJQsF9eZ6CnSMx" nathan nathan 50 true
從nathan賬戶轉(zhuǎn)一部分BTS到新建的用戶
transfer nathan joshua 2000000000 BTS "here is some cash" true
導(dǎo)入用戶的私鑰到cli錢包拯啦,私鑰是剛才生成內(nèi)容的 wif_priv_key 字段
import_key joshua 5Jiie6zMJWAJ6P8QmivSVjfbPyWa9uKNtwtFXQC3TBoGZDnKXwN
升級(jí)用戶成為終身成員
upgrade_account joshua true
創(chuàng)建witness用戶
create_witness joshua "" true
為新建的witness用戶投票澡匪,
vote_for_witness joshua joshua true true
獲取witness公私鑰
get_witness joshua
得到結(jié)果:
{
"id": "1.6.12",
"witness_account": "1.2.18",
"last_aslot": 52765,
"signing_key": "BTS6UyKzfSim5anCFKZsWB8HPtBSwt8yUthiFCE6oaTXo9Qf6z85e",
"pay_vb": "1.13.9",
"vote_id": "1:22",
"total_votes": "898790081908868",
"url": "",
"total_missed": 13,
"last_confirmed_block_num": 15402
}
witness的公鑰就是"signing_key"字段,記錄下 witness_account 褒链,后面配置有用唁情,再執(zhí)行
dump_private_keys
獲取目前錢包中存儲(chǔ)的私鑰
[[
"BTS78CuY47Vds2nfw2t88ckjTaggPkw16tLhcmg4ReVx1WPr1zRL5",
"5JDh3XmHK8CDaQSxQZHh5PUV3zwzG68uVcrTfmg9yQ9idNisYnE"
],[
"BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
],[
"BTS7Zpu3gZmVAGAXgGbD4CzJBwP9uFWtwN5V83TnJQsF9eZ6CnSMx",
"5Jiie6zMJWAJ6P8QmivSVjfbPyWa9uKNtwtFXQC3TBoGZDnKXwN"
],[
"BTS6UyKzfSim5anCFKZsWB8HPtBSwt8yUthiFCE6oaTXo9Qf6z85e",
"5JM1AsnRJDGDa8x7NR3GtNDhQzzNi6VEs9XmXyuDhLEnJDUwnS8"
]
]
根據(jù)"signing_key"獲取對(duì)應(yīng)的私鑰,就是:
["BTS6UyKzfSim5anCFKZsWB8HPtBSwt8yUthiFCE6oaTXo9Qf6z85e","5JM1AsnRJDGDa8x7NR3GtNDhQzzNi6VEs9XmXyuDhLEnJDUwnS8"]
記錄好這個(gè)公私鑰對(duì)甫匹,接下去修改test_net/config.ini
# ID of witness controlled by this node (e.g. "1.6.5", quotes are required, may specify multiple times)
witness-id = "1.6.2"
witness-id = "1.6.3"
witness-id = "1.6.12"
# Tuple of [PublicKey, WIF private key] (may specify multiple times)
private-key = ["BTS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]
private-key = ["BTS6UyKzfSim5anCFKZsWB8HPtBSwt8yUthiFCE6oaTXo9Qf6z85e","5JM1AsnRJDGDa8x7NR3GtNDhQzzNi6VEs9XmXyuDhLEnJDUwnS8"]
增加新建的witness-id和對(duì)應(yīng)的公私鑰荠瘪,重啟witness重需
./witness_node -d test_net
這一部分就完成了
不過因?yàn)槟J(rèn)的更新witness的時(shí)間比較長,24小時(shí)赛惩,所以要等24小時(shí)才能看到j(luò)oshua成為witness哀墓,如果想快一點(diǎn),需要重頭開始做喷兼,在執(zhí)行
./witness_node --create-genesis-json "genesis.json"
之后篮绰,編輯genesis.json,修改下面這個(gè)參數(shù)為600季惯,這樣10分鐘就會(huì)更新witness
"maintenance_interval": 600,