[BD-4229] Accuracy of vote weights

Vote Tables

There are several tables that contain vote weights.

eosio > producers

total_votes

  • Total votes (proxied and direct) for the producer

Data validation task:

Confirm total_votes values are correct. I would like to do this by looking at the individual balances for all voters in the voters table. Do NOT use the eosio > voters > last_vote_weight values as we are not certain if those are accurate. This needs to account for proxied votes, etc.

Output should be a table with:

  • producer account

  • total_votes value from state table

  • Calculated total votes (from raw token balances of voters and proxies)

Example:

{ "id": 0, "owner": "dacobcm2lnnc", "fio_address": "bp@thedac", "addresshash": "0x44ddade5cd4acba595ea2a42c23414b2", "total_votes": "351415064593433088.00000000000000000", "producer_public_key": "FIO8UxsfvX6QpjukrFqbaUMtT7WfeiXZRE26F4ATAwYjwZacUACNw", "is_active": 1, "url": "https://eosdac.io", "unpaid_blocks": 0, "last_claim_time": "2022-12-05T18:04:17.000", "last_bpclaim": 1670263457, "location": 10 }

eosio > voters

last_vote_weight

  • The amount of unlocked FIO in the account

proxied_vote_weight

  • The total vote weight delegated to this voter as a proxy (they may or may not be registered as a proxy).

Example:

{ "id": 0, "fioaddress": "", "addresshash": "0x00000000000000000000000000000000", "owner": "t21zeqsjq5cb", "proxy": "", "producers": [ "dacobcm2lnnc", "jnmwi5vu3hle", "lion4uxxfbqo", "t21zeqsjq5cb", "wrcjejslfplp" ], "last_vote_weight": "200510623467412.00000000000000000", "proxied_vote_weight": "0.00000000000000000", "is_proxy": 0, "is_auto_proxy": 0, "reserved2": 0, "reserved3": "0 " }

eosio > global

total_voted_fio

  • The amount of unlocked FIO that has been proxied or voted

total_producer_vote_weight

  • The sum of all producer votes. Because users can vote for more than one producer, this value can be above the 1,000,000,000 total token threshold

Example:

[ { "max_block_net_usage": 1048576, "target_block_net_usage_pct": 1000, "max_transaction_net_usage": 524288, "base_per_transaction_net_usage": 12, "net_usage_leeway": 500, "context_free_discount_net_usage_num": 20, "context_free_discount_net_usage_den": 100, "max_block_cpu_usage": 200000, "target_block_cpu_usage_pct": 2000, "max_transaction_cpu_usage": 150000, "min_transaction_cpu_usage": 100, "max_transaction_lifetime": 3600, "deferred_trx_expiration_window": 600, "max_transaction_delay": 3888000, "max_inline_action_size": 4096, "max_inline_action_depth": 4, "max_authority_depth": 6, "last_producer_schedule_update": "2022-12-05T18:24:24.500", "last_pervote_bucket_fill": "2020-04-02T14:44:44.500", "pervote_bucket": 0, "perblock_bucket": 0, "total_unpaid_blocks": 0, "total_voted_fio": -2252240166286294016, "thresh_voted_fio_time": "2020-04-02T14:44:44.000", "last_producer_schedule_size": 21, "total_producer_vote_weight": "9834825251230883840.00000000000000000", "last_name_close": "2000-01-01T00:00:00.000", "last_fee_update": "2020-06-11T09:30:18.500" } ]

eosio > global2

total_producer_votepay_share

  • Not sure what this is?

Example:

fio.treasury > voteshares

votes

  • Not sure what this is?

Example: