CLI 钱包操作(七):为矿工投票

为矿工投票

为了保证网络不断运行并对其发展产生影响,您可以投票选择一些矿工,被选中的矿工负责创建新的区块,验证交易,
将有效交易信息记录于新生成的区块中,并且向区块链添加新生成的区块。每24小时会进行一轮矿工投票,您的每一票都很重要。并且得票最高的前33名矿工会加入挖矿程序。

请继续阅读以下内容,获取有关投票过程的完整信息。若想使用快速导航,请跳转至以下链接: 展示所有矿工列表 获取个别矿工的信息 并为特定的矿工投票

获取矿工列表

假设您是第一次为矿工投票。请使用以下方法,获取投票对象的信息,获取矿工候选人列表。

方法介绍:

list_miners - 此指令可展示所有在区块链中注册的矿工列表。列表包括所有矿工账户的名称,以及通过账户名称排序出的矿工ID。无论是否参与投票的矿工,都在此列表中展示。通过起始位置(lowerbound)和有限的参数浏览列表。若想找回所有的矿工账户,把起始位置设置为空命令行"",之后的每一次迭代,传输最后一位矿工的名称,返回值为下一个矿工列表(list_miners)访问的起始位置。

map<string,miner_id_type> list_miners(string lowerbound, uint32_t limit);

参数:

  • lowerbound - 返回的第一位矿工的名称。如果以此命名的矿工不存在,那么列表会从起始位置(lowerbound)之后的那位矿工开始。
  • limit - 返回矿工最大值(最大值:1000)

返回值:

  • 矿工名称与id相匹配的矿工列表。

举例说明:

list_miners "" 11

回应:

[[
    "init0",
    "1.4.1"
  ],[
    "init1",
    "1.4.2"
  ],[
    "init10",
    "1.4.11"
  ],[
    "init2",
    "1.4.3"
  ],[
    "init3",
    "1.4.4"
  ],[
    "init4",
    "1.4.5"
  ],[
    "init5",
    "1.4.6"
  ],[
    "init6",
    "1.4.7"
  ],[
    "init7",
    "1.4.8"
  ],[
    "init8",
    "1.4.9"
  ],[
    "init9",
    "1.4.10"
  ]
]

矿工列表的API开发者文档

获取矿工信息

通过调用 get_miner
,您会获得特定矿工的具体信息。上一步获得的列表会为您提供此方法的输入信息,便于您查看所选矿工。

另外还可以通过Slack #mining的讨论话题来了解矿工信息。

方法介绍:
get_miner - 关于所给矿工的返回信息。

miner_object get_miner(string owner_account);

参数:

  • owner_account - 矿工账户所有者名称或id,或者矿工id。

举例说明:

get_miner init1

回应:

{
  "id": "1.4.2",
  "miner_account": "1.2.5",
  "last_aslot": 3027140,
  "signing_key": "DCT8NC1kNjEeqRp8SnEPQWtpeCLoJRuquH5jHtE78NNTthSi6t2uX",
  "pay_vb": "1.9.0",
  "vote_id": "0:1",
  "total_votes": "110114045499584",
  "url": "",
  "total_missed": 191805,
  "last_confirmed_block_num": 834559,
  "vote_ranking": 0
}

请注意,miner_account 等同于 account_id

获得矿工的API开发者文档

为矿工投票

为矿工投票是帮助改善网络的方式之一。他们负责验证交易的有效性,以及基于交易信息创造新的区块。您选票的分量取决于您当前余额的数量。另外,您无法投票反对某个特定的矿工,您只能为特定矿工投票或者不为任何人投票。

方法介绍:

vote_for_miner - 为某一个矿工投票。一个账户可以发布一个赞同的矿工列表。此方法可用于从此列表中添加或移除矿工。计算投票时,每个账户的选票会根据账户拥有的核心资产份额来衡量。

signed_transaction vote_for_miner(string voting_account,
                                  string miner,
                                  bool approve,
                                  bool broadcast = false);

参数:

  • voting_account - 使用资产份额投票的账户名称或id。
  • miner - 矿工的账户名称或id。
  • approve - 如果您支持某位矿工而为他投票,则输入true,若想移除对某位矿工的选票,则输入false。
  • broadcast - 如果您希望广播交易,则显示 true 。

为矿工投票的API开发者档案

展示特定矿工所获得的选票

CLI钱包可以提供您为特定矿工所投选票的列表,从而起到审核投票过程的作用。另外,钱包还可以提供您投过以及没投过选票的积极矿工列表。

方法介绍:
search_miner_voting - 通过与搜索项相匹配的账户获取矿工投票信息。

vector<miner_voting_info> search_miner_voting(string account_id,
                                              string term,
                                              bool only_my_votes,
                                              string order,
                                              string id,
                                              uint32_t count);

参数:

  • account_id - 某账户名称
  • term - 某搜索项 - 矿工名称
  • only_my_votes - 如果选定仅通过本人账户所投的选票,输入true
  • order - 有效选项为名称(如果您不知道名称,也可以提供链接)或选票
  • id - 开启搜索的内容对象id
  • count - 所抓取的最大内容数量(不可超过1000)

返回值:

  • 所发现的内容

示例1:

search_miner_voting accountname "" true "" "" 100

回应1:

[{
    "id": "1.4.1",
    "name": "init0",
    "url": "",
    "total_votes": "6126399992",
    "voted": true
  },{
    "id": "1.4.11",
    "name": "init10",
    "url": "",
    "total_votes": "6126399992",
    "voted": true
  }
]

示例2:

search_miner_voting accountname "" false "" "" 100

回应2:

[{
    "id": "1.4.1",
    "name": "init0",
    "url": "",
    "total_votes": "6126399992",
    "voted": true
  },{
    "id": "1.4.2",
    "name": "init1",
    "url": "",
    "total_votes": 0,
    "voted": false
  },{
    "id": "1.4.11",
    "name": "init10",
    "url": "",
    "total_votes": "6126399992",
    "voted": true
  },{
    "id": "1.4.3",
    "name": "init2",
    "url": "",
    "total_votes": 0,
    "voted": false
  },{
    "id": "1.4.4",
    "name": "init3",
    "url": "",
    "total_votes": 0,
    "voted": false
  },{
    "id": "1.4.5",
    "name": "init4",
    "url": "",
    "total_votes": 0,
    "voted": false
  },{
    "id": "1.4.6",
    "name": "init5",
    "url": "",
    "total_votes": 0,
    "voted": false
  },{
    "id": "1.4.7",
    "name": "init6",
    "url": "",
    "total_votes": 0,
    "voted": false
  },{
    "id": "1.4.8",
    "name": "init7",
    "url": "",
    "total_votes": 0,
    "voted": false
  },{
    "id": "1.4.9",
    "name": "init8",
    "url": "",
    "total_votes": 0,
    "voted": false
  },{
    "id": "1.4.10",
    "name": "init9",
    "url": "",
    "total_votes": 0,
    "voted": false
  }
]
上一篇:lotus v0.4.0 testnet 测试


下一篇:计算机网络(四)—— 网络层(6):路由选择协议