目前锁仓相关操作可以通过 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 命令查看帐户操作历史,比如
get_account_history abit 10
结果示例
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 命令查看
>>> 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 帐户统计信息里新加了几个字段来记录按帐号汇总的仓位信息
>>> 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 动态全局信息里增加两个字段记录链上永久锁定的仓位汇总信息
>>> get_object 2.1.0
[{
...
"total_pob": 0,
"total_inactive": 0,
...
}
]
其中,
total_pob 已永久锁定2年以内的、投票权重为正的仓位总金额
total_inactive 已永久锁定2年或以上、投票权重为零的仓位总金额
5. 批量查询 API (待开发)
* 查询指定帐户的所有锁仓仓位
* 查询指定类型的所有锁仓仓位