对于某些奖励地址,从 243 epoch 开始,cardano-cli 和 db-sync 显示不同数量的奖励。 例如,stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0
卡尔达诺-cli
$ cardano-cli query stake-address-info --cardano-mode --mainnet --allegra-era --address stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0
[
{
"address": "stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0",
"delegation": "pool14ku0z9rx9yx34zl00jtxtpyv6ehytfl8fewztavx7qvju7nrtr8",
"rewardAccountBalance": 13258955846
}
]
和数据库同步
# SELECT SUM(reward.amount)
# FROM stake_address
# LEFT JOIN reward ON reward.addr_id = stake_address.id
# WHERE stake_address.view = 'stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0';
sum
-------------
13222415370
(1 row)
差值为 36.540476 ₳ ,约等于投票奖励金额。
主网、cardano-cli 1.24.2、cardano-db-sync 7.1.0
看起来这些投票奖励现在在“金库”表中
# SELECT treasury.amount
# FROM stake_address
# LEFT JOIN treasury ON treasury.addr_id = stake_address.id
# WHERE stake_address.view = 'stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0';
amount
----------
36540476
(1 row)
看起来这些投票奖励现在在“金库”表中
~糟糕,这看起来是个错误。~显然不是。
我们需要以某种方式澄清(在架构和/或相关文档中)影响余额奖励帐户的事件表不止一个:
因此,人们编写查询来跟踪总余额将需要采取事件的联合。
MIR 证书已被用于各种高级目的(但目的当然不会发布在链上),包括:ITN 的奖励、获胜项目的国库支出、参与 Catalyst 的国库支出。
我认为问题的一部分是名为reward
可以合理地预期包含所有奖励,但实际上并非如此。 此表仅包含 Staking 奖励。 可能需要重命名此表以反映这一点。
这更令人困惑,因为withdrawal
表包含所有从奖励账户中提取的款项。
我一直试图想出我能找到的最简洁的方法。
首先我们创建一个视图:
# create view reward_payment_view as
select addr_id, amount, 'treasury' as source
from treasury union select addr_id, amount, 'reward_epoch_' || epoch_no as source from reward ;
我们可以查询此视图为:
# select stake_address.view, reward_payment_view.amount, reward_payment_view.source
from reward_payment_view inner join stake_address on reward_payment_view.addr_id = stake_address.id
where stake_address.view = 'stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0' ;
view | amount | source
-------------------------------------------------------------+------------+------------------
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 36540476 | treasury
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 373554942 | reward_epoch_226
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 381550960 | reward_epoch_222
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 394285344 | reward_epoch_225
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 394335813 | reward_epoch_223
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 437204214 | reward_epoch_236
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 442787046 | reward_epoch_233
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 450575175 | reward_epoch_238
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 463125272 | reward_epoch_228
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 481675128 | reward_epoch_224
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 495852458 | reward_epoch_227
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 571559879 | reward_epoch_234
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 599359585 | reward_epoch_232
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 612352961 | reward_epoch_237
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 658610556 | reward_epoch_231
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 1319746538 | reward_epoch_219
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 1342842199 | reward_epoch_218
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 1374758087 | reward_epoch_216
stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0 | 2428239213 | reward_epoch_220
(19 rows)
那是一个view
,我应该在船舶预定义的db-sync
?
@dmitrystas现在可以关闭了吗?
我觉得是,谢谢
最有用的评论
我认为问题的一部分是名为
reward
可以合理地预期包含所有奖励,但实际上并非如此。 此表仅包含 Staking 奖励。 可能需要重命名此表以反映这一点。这更令人困惑,因为
withdrawal
表包含所有从奖励账户中提取的款项。