Author Topic: 4.0 投票机制变化  (Read 30892 times)

0 Members and 1 Guest are viewing this topic.

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
一件不是好事的好事?……虽然很硬……


Quote
4.1 不持有“永久锁仓状态”仓位的帐号,投票权重为零

这个的意思是,只要有一个永久锁仓上链了,没有永久锁仓位的账号投票权为零,那180天的呢?如果都为零了,这中间岂不是有很大的空档期?

这个规则太硬了,后期能优化一下话可能就好多了……
180 天的,可以销毁(永久锁) 1 个 BTS 意思意思。
BitShares committee member: abit
BitShares witness: in.abit

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
目前锁仓相关操作可以通过 cli_wallet 命令行完成。

1. 锁仓

op code: 57

参数
fee 手续费,固定 50 BTS (如果用其他资产支付请自行计算)
account 账号,格式 1.2.x
target_type 目标类型(决定锁多久), 1 表示锁 180 天, 2 表示锁 360 天, 3 表示锁 720 天, 4 表示永久锁仓
amount 金额和币种,币种只能是 BTS 也就是 1.3.0

注:因为 BTS 是 5 位小数,所有金额需要乘以 10 万。

比如:

abit 锁 10 万 BTS ,锁两年:

sign_transaction {"operations":[[ 57,{ "fee":{"amount":"5000000","asset_id":"1.3.0"}, "account": "1.2.12376", "target_type": 3, "amount": { "amount": "10000000000", "asset_id": "1.3.0" }} ]]} true

abit 锁 1000 BTS ,永久锁仓:

sign_transaction {"operations":[[ 57,{ "fee":{"amount":"5000000","asset_id":"1.3.0"}, "account": "1.2.12376", "target_type": 4, "amount": { "amount": "100000000", "asset_id": "1.3.0" } } ]]} true


2. 检查锁仓操作结果

可以用 get_account_history 命令查看帐户操作历史,比如
Code: [Select]
get_account_history abit 10

结果示例
Code: [Select]
50136317 2020-07-30T15:19:27 ticket_create_operation abit fee: 50 BTS   result: 1.18.3
50136106 2020-07-30T15:08:21 ticket_create_operation abit fee: 50 BTS   result: 1.18.0

格式为:块号 时间 操作 帐号 手续费 结果

结果里 1.18.x 就是仓位 ID ,可以通过 get_object 命令查看

Code: [Select]
>>> get_object 1.18.0
[{
    "id": "1.18.0",
    "account": "1.2.12376",
    "target_type": "lock_720_days",
    "amount": {
      "amount": "10000000000",
      "asset_id": "1.3.0"
    },
    "current_type": "liquid",
    "status": "charging",
    "value": "10000000000",
    "next_auto_update_time": "2020-08-14T15:08:18",
    "next_type_downgrade_time": "1969-12-31T23:59:59"
  }
]

结果说明:
id 仓位 ID
account 帐号
target_type 仓位目标类型, liquid 未成功锁仓或者已解锁待释放, lock_xxx_days 锁仓xxx天, lock_forever 永久锁仓
amount 仓位金额和币种
current_type 仓位当前类型,因为升降级的关系,和目标类型可能不同
status 状态,charging 升级中, stable 稳定, withdrawing 降级中
value 仓位价值,也就是实际投票权(永久锁仓时仓位价值的算法不同)
next_auto_update_time 下次仓位自动更新时间,是用于连续升降级的辅助字段
next_type_downgrade_time 下次降级时间,用于降级或者解锁的辅助字段


3. 修改仓位(解锁/升级/降级/取消升降级/拆分)

op code: 58

参数
fee 手续费,固定 50 BTS (如果用其他资产支付请自行计算)
ticket 要修改的仓位 ID ,格式 1.18.x
account 账号,格式 1.2.x
target_type 目标类型(决定锁多久), 0 表示解锁, 1 表示锁 180 天, 2 表示锁 360 天, 3 表示锁 720 天, 4 表示永久锁仓
amount_for_new_target 可选参数,新目标的金额和币种。如果不设置这个参数,表示修改整个仓位;如果设置了这个参数,并且金额小于原仓位金额,则是拆分仓位。币种只能是 BTS 也就是 1.3.0 。

注:因为 BTS 是 5 位小数,所有金额需要乘以 10 万。

比如:

abit 将 1.18.0 这个仓位调整为锁一年:

sign_transaction {"operations":[[ 58,{ "fee":{"amount":"5000000","asset_id":"1.3.0"}, "ticket":"1.18.0", "account": "1.2.12376", "target_type": 2 } ]]} true

abit 将 1.18.3 这个仓位中拆分 100 BTS 解锁:

sign_transaction {"operations":[[ 58,{ "fee":{"amount":"5000000","asset_id":"1.3.0"}, "ticket":"1.18.3", "account": "1.2.12376", "target_type": 0, "amount_for_new_target": {"amount":"10000000","asset_id":"1.3.0"} } ]]} true

操作结果仍然可以通过 get_account_history 命令和 get_object 命令查看

结果里,
updated_objects 表示发生变化的仓位 ID
new_objects 表示拆分出的新仓位 ID


4. 相关信息

4.1 帐户统计信息里新加了几个字段来记录按帐号汇总的仓位信息

Code: [Select]
>>> get_object 2.6.12376
[{
    ...
    "total_core_inactive": 0,
    "total_core_pob": 0,
    "total_core_pol": "10100000000",
    "total_pob_value": 0,
    "total_pol_value": "10100000000",
    ...
  }
]

其中,
total_core_inactive 已永久锁定2年或以上、投票权重为零的仓位总金额
total_core_pob 已永久锁定2年以内的、投票权重为正的仓位总金额
total_core_pol 非永久锁定的仓位总金额
total_pob_value 永久锁定2年以内的仓位总价值
total_pol_value 非永久锁定的仓位总价值


4.2 动态全局信息里增加两个字段记录链上永久锁定的仓位汇总信息

Code: [Select]
>>> get_object 2.1.0
[{
    ...
    "total_pob": 0,
    "total_inactive": 0,
    ...
  }
]

其中,
total_pob 已永久锁定2年以内的、投票权重为正的仓位总金额
total_inactive 已永久锁定2年或以上、投票权重为零的仓位总金额


5. 批量查询 API (待开发)

* 查询指定帐户的所有锁仓仓位
* 查询指定类型的所有锁仓仓位
BitShares committee member: abit
BitShares witness: in.abit

Offline R

  • Hero Member
  • *****
  • Posts: 1004
    • View Profile
Why didn't you support BSIP 22 if you want vote decay? https://github.com/bitshares/bsips/blob/master/bsip-0022.md

Offline binggo

  • Hero Member
  • *****
  • Posts: 2374
  • 世间太多瘪犊子
    • View Profile
一件不是好事的好事?……虽然很硬……


Quote
4.1 不持有“永久锁仓状态”仓位的帐号,投票权重为零

这个的意思是,只要有一个永久锁仓上链了,没有永久锁仓位的账号投票权为零,那180天的呢?如果都为零了,这中间岂不是有很大的空档期?

这个规则太硬了,后期能优化一下话可能就好多了……
« Last Edit: July 30, 2020, 06:24:05 pm by binggo »

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
1. 投票权重衰减机制 (vote decay)

新注册的账户,投票权重为零,主动投票后,票才开始生效。

每次主动更新投票后,投票权重更新为 100% ,第360天衰减 12.5% ,然后每过 45 天衰减总权重的 12.5% ,到第 675 天投票完全失效。

代理投票的,代理人和被代理人投票权重按【乘数关系】叠加生效。


2. 理事会选举一票一投机制

如果一个投票人投了多个理事会成员,则每个理事得票数 = 投票人总票数 / 投票人投的理事会成员数量


3. 锁仓投票机制

参考 https://bitsharestalk.org/index.php?topic=32357.0

新增一个锁仓操作 ticket_create_operation 和一个修改锁仓的操作 ticket_update_operation ,可指定锁仓帐号、时间和金额。

锁仓和修改操作手续费固定为 50 BTS ,理事会不可修改。

锁仓时间有几个选项: 180 天, 360 天, 720 天,永久
其中,
锁仓 180/360/720 天,则锁仓的 BTS 获得 2/4/8 倍投票权重
永久锁仓,则这部分 BTS 失去投票权,但帐户剩余的等量 BTS 获得 8 倍权重加成
推论:一个帐户最多可以获得 32 倍权重。

永久锁仓获得的权重加成,每 180 天衰减 2 倍, 720 天后失效。

锁仓导致的投票权重变化,采用升级/降级机制。
发起锁仓交易后,投盘人并不是马上获得对应倍数的投票权重,而是逐渐升级到指定的锁仓级别。
升级:每升一级需要 15 天。
如果 15 天内取消升级,资金从取消时间开始继续锁 7 天。
降级:即时生效,资金按之前指定的锁仓时间释放。

每个帐户可以有多个锁仓仓位,各仓位的时间、金额各自独立。
锁仓仓位可以拆分,不能合并。

锁仓仓位升级到“永久锁仓状态”前可随时修改;
锁仓仓位升级到“永久锁仓状态”后不可修改。


4. 永久锁仓生效后的投票规则

当链上出现第一个“永久锁仓状态”的锁仓仓位后,如下投票规则生效:

4.1 不持有“永久锁仓状态”仓位的帐号,投票权重为零
4.2 抵押的 BTS 和挂单的 BTS 不再有投票权


更新:如何通过 cli_wallet 命令行进行锁仓相关操作,请往下翻页查看。

更新2: BitShares Mobile (BTS++) 手机钱包 v6.2 已经加入锁仓功能
« Last Edit: August 02, 2020, 03:00:55 pm by abit »
BitShares committee member: abit
BitShares witness: in.abit