Ab der Epoche 243 zeigen cardano-cli und db-sync für einige Belohnungsadressen eine unterschiedliche Anzahl von Belohnungen. Zum Beispiel Stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0
cardano-cli
$ cardano-cli query stake-address-info --cardano-mode --mainnet --allegra-era --address stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0
[
{
"address": "stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0",
"delegation": "pool14ku0z9rx9yx34zl00jtxtpyv6ehytfl8fewztavx7qvju7nrtr8",
"rewardAccountBalance": 13258955846
}
]
und db-sync
# 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)
Die Differenz beträgt 36,540476 ₳ , was ungefähr dem Betrag der Stimmenprämie entspricht.
mainnet, cardano-cli 1.24.2, cardano-db-sync 7.1.0
Es sieht so aus, als ob diese Abstimmungsbelohnungen jetzt in der Tabelle "Treasury" sind
# 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)
Es sieht so aus, als ob diese Abstimmungsbelohnungen jetzt in der Tabelle "Treasury" sind
~Ups, das sieht nach einem Fehler aus.~ Offenbar nicht.
Wir müssen irgendwie klarstellen (im Schema und/oder in den zugehörigen Dokumenten), dass es mehr als eine Tabelle mit Ereignissen gibt, die sich auf die Saldo-Belohnungskonten auswirken:
Personen, die Abfragen schreiben, um den Gesamtsaldo zu verfolgen, müssen die Ereignisse zusammenfassen.
Die MIR-Zertifikate wurden für verschiedene hochrangige Zwecke verwendet (aber der Zweck wird natürlich nicht in der Kette veröffentlicht), darunter: die Belohnungen aufgrund des ITN, Auszahlungen aus dem Treasury für gewonnene Projekte, Auszahlungen aus dem Treasury für die Teilnahme an Catalyst.
Ich denke, ein Teil des Problems ist, dass man vernünftigerweise erwarten kann, dass eine Tabelle namens reward
alle Belohnungen enthält, aber das ist tatsächlich nicht der Fall. Diese Tabelle enthält nur Staking-Belohnungen. Es kann wünschenswert sein, diese Tabelle umzubenennen, um dies widerzuspiegeln.
Dies wird dadurch noch verwirrender, dass die Tabelle withdrawal
alle Auszahlungen vom Prämienkonto enthält.
Ich habe versucht, den saubersten Ansatz dafür zu finden, den ich finden kann.
Zuerst erstellen wir eine Ansicht:
# 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 ;
dann können wir diese Ansicht wie folgt abfragen:
# 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)
Ist das ein view
, das ich vordefiniert in db-sync
versenden soll?
@dmitrystas Kann das jetzt geschlossen werden?
Ich denke schon, danke
Hilfreichster Kommentar
Ich denke, ein Teil des Problems ist, dass man vernünftigerweise erwarten kann, dass eine Tabelle namens
reward
alle Belohnungen enthält, aber das ist tatsächlich nicht der Fall. Diese Tabelle enthält nur Staking-Belohnungen. Es kann wünschenswert sein, diese Tabelle umzubenennen, um dies widerzuspiegeln.Dies wird dadurch noch verwirrender, dass die Tabelle
withdrawal
alle Auszahlungen vom Prämienkonto enthält.