Cardano-db-sync: cardano-cli und db-sync zeigen unterschiedliche Anzahl von Belohnungen aus der Epoche 243

Erstellt am 21. Jan. 2021  ·  7Kommentare  ·  Quelle: input-output-hk/cardano-db-sync

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

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.

Alle 7 Kommentare

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:

  • Pool-Belohnungen pro Epoche
  • Kontoabhebungen
  • spezielle MIR-Events. Spezielle MIR-Ereignisse stammen von MIR-Zertifikaten, sind jedoch für Blockgrenzen geplant.

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen