v0.2.16 仪表板维护者的费用检查
谁支付费用
主机节点使用热密钥签名,并将冷账户设为 fee_granter。链从冷账户中扣除费用,但不超过冷到热的费用授权额度。
两个数字都必须足够大。可用金额是其中较小的那个。
| 数字 | 其含义 | 查询 |
|---|---|---|
| 费用授权额度 | 热密钥可向冷账户收取的上限。这不是余额。 | GET /cosmos/feegrant/v1beta1/allowance/{cold}/{warm} |
| 冷账户可支出余额 | 冷账户实际可支出的代币 | GET /cosmos/bank/v1beta1/spendable_balances/{cold} |
10 GNK 授权但可支出 GNK 为 0 时无法支付费用。受限制的代币不能支付费用。当节点将冷账户设为 fee_granter 时,热密钥上的余额也不能支付费用。显示热密钥余额以便发现错误转账,但不要将其计入可用金额。
链上代币符号为 ngonka。显示为 amount / 1_000_000_000。
银行转账、授权授予和费用授权撤销/授予按每单位气体 1 ngonka 收费。治理投票不收费。
检查对象
检查当前纪元组的成员。他们提交已付费的消息 MsgPoCV2StoreCommit 和 MsgSubmitHardwareDiff。注册参与者若不在该组内,则不会按计划提交这些消息。
GET /productscience/inference/inference/current_epoch_group_data
将每个 epoch_group_data.validation_weights[].member_address 作为冷账户。
查找支付的热密钥
GET /cosmos/authz/v1beta1/grants/granter/{cold}
翻页 pagination.limit 和 pagination.key 直到 pagination.next_key 为空。
一个支付的热密钥是其授权 authorization.msg 满足以下任一条件的受授方:
/inference.inference.MsgPoCV2StoreCommit/inference.inference.MsgSubmitHardwareDiff
MsgClaimRewards 不足。该消息免费,冷账户通常有额外的仅限申领授权,但这些不是节点用于提交 StoreCommit 或 HardwareDiff 的密钥。
读取授权额度
GET /cosmos/feegrant/v1beta1/allowance/{cold}/{warm}
{cold} 是授权方,{warm} 是受授方。缺失的授权返回为 fee-grant not found。
对于 BasicAllowance:
spend_limit是ngonka中剩余的上限。随着费用扣除而减少。spend_limit为空表示无上限。expiration必须在未来。应与当前区块时间比较,而非仪表板服务器的时钟时间。
可用费用金额:
usable = min(cold spendable ngonka, remaining allowance)
当授权额度无上限时,仅使用冷账户可支出余额。
同时列出冷账户发出的所有授权:
GET /cosmos/feegrant/v1beta1/issued/{cold}
如果此列表中的受授方与 StoreCommit 或 HardwareDiff 密钥不同,则节点可能使用了一个无授权额度的密钥。应判断持有这两条消息授权的密钥。
读取余额
GET /cosmos/bank/v1beta1/spendable_balances/{address}
GET /cosmos/bank/v1beta1/balances/{address}
GET /productscience/inference/streamvesting/total_vesting/{address}
对冷账户和每个支付的热密钥均运行以下三项。
| 字段 | 可视为可支付 |
|---|---|
冷 spendable_balances 用于 ngonka |
是。这是费用来源。 |
冷 balances |
仅显示。当银行模块中无锁定时,可能与可支出金额一致。 |
冷 total_vesting |
否。奖励会在这里等待解锁。主机可以显示数百万的GNK锁仓,但仍拥有0可花费金额。 |
温 spendable_balances |
否。显示它。如果冷可花费金额不足而该金额非零,则说明代币位于温密钥上,节点将不会使用它们。 |
需要标记什么
当以下任一条件为真时,标记主机:
- 没有授权的受让人拥有StoreCommit或HardwareDiff权限。
- 该受让人没有从冷到温的feegrant,或授权已过期。
- 剩余授权额度低于一个周期的费用。
- 冷可花费余额低于一个周期的费用。
在同一行显示冷可花费、冷锁仓、温可花费和剩余授权额度。不要将它们合并为一个“余额”数字。
当前主机的一个典型周期费用远低于1 GNK。当冷账户实际持有可花费代币时,10 GNK的默认授权额度是足够的上限。链上出现的故障模式是:存在有效的10 GNK授权,但冷可花费和温可花费均为0,而锁仓中持有奖励。