一、使用pow共识创建链
- 将node1、node2和node3节点data/config/xuper.json文件中内容替换如下:
{
"version" : "1",
"predistribution": [
{}
],
"maxblocksize" : "128",
"award" : "1000000",
"decimals" : "8",
"award_decay": {
"height_gap": 31536000,
"ratio": 0.5
},
"genesis_consensus": {
"name": "pow",
"config": {
"defaultTarget": "19",
"adjustHeightGap": "10",
"expectedPeriod": "15",
"maxTarget": "22"
}
}
}
- node1、node2和node3节点分别创建链并启动节点:
./xchain-cli createChain
nohup ./xchain &
二、发起提案
- 准备一个tdpos共识的配置文件proposal.json:
{
"module": "proposal",
"method": "Propose",
"args" : {
"min_vote_percent": 51, # 最小投票比例
"stop_vote_height": 300 # 停止投票高度
},
"trigger": {
"height": 310, # 触发高度
"module": "consensus",
"method": "update_consensus",
"args" : {
"name": "tdpos",
"config": {
"proposer_num":"3",
"period":"3000",
"term_gap":"60000",
"alternate_interval": "3000",
"term_interval": "6000",
"block_num":"10",
"vote_unit_price":"1",
"init_proposer": {
"1": ["Wv4sF8AkHq6PkpTA7nDme3qVdoux9eRML",
"ZXBL5EpW2rjDa2fGUa1gegGysdtLYKkZn",
"RdTJvH4k6CFkJqoUL2wWYz51pmDT8dQZ4"]
}
}
}
}
}
- 发起一笔提案交易
在提案节点下,执行给自己转账的操作,并在 --desc 参数里传入提案proposal.json
./xchain-cli transfer --to `cat data/keys/address` --desc ./proposal.json --amount 100
- 查询交易:
./xchain-cli tx query 0575c7ebc2376d82a108f8249bdb2622e2b6d9b7828fc3408ff0cb149e887e24
blockid不为空,说明交易已经上链:
三、投票
- 可以对已经发起的提案进行投票:
--amount
后面是要投票的金额 。
--frozen
后面是要冻结的高度,冻结高度要大于停止投票高度,否则是无效投票。
./xchain-cli vote --amount 84000000 --frozen 350 0575c7ebc2376d82a108f8249bdb2622e2b6d9b7828fc3408ff0cb149e887e24
- 再次投票,当账户内未被冻结的金额不够时会投票失败:
- 查看节点被冻结的资产总量:
./xchain-cli account balance -Z
- 查看全链的资产总量:
./xchain-cli status | grep -i utxoTotal
- 当提案还未触发时,查询tdpos的信息查询不到:
./xchain-cli tdpos status
- 等到生效高度到达,提案触发后,就可以查询到tdpos的信息,说明共识已经切换: