Cardano-db-sync: cardano-cli et db-sync affichent un nombre différent de récompenses à partir de l'époque 243

Créé le 21 janv. 2021  ·  7Commentaires  ·  Source: input-output-hk/cardano-db-sync

À partir de l'époque 243 pour certaines adresses de récompense, cardano-cli et db-sync affichent un nombre différent de récompenses. Par exemple enjeu1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0

cardano-cli

$ cardano-cli query stake-address-info --cardano-mode --mainnet --allegra-era --address stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0
[
    {
        "address": "stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0",
        "delegation": "pool14ku0z9rx9yx34zl00jtxtpyv6ehytfl8fewztavx7qvju7nrtr8",
        "rewardAccountBalance": 13258955846
    }
]

et 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)

La différence est de 36,540476 ₳ , ce qui équivaut approximativement au montant de la récompense du vote.

réseau principal, cardano-cli 1.24.2, cardano-db-sync 7.1.0

Commentaire le plus utile

Je pense qu'une partie du problème est qu'une table nommée reward pourrait raisonnablement contenir toutes les récompenses, mais ce n'est en fait pas le cas. Cette table ne contient

Ceci est rendu plus confus dans la mesure où le tableau withdrawal contient tous les retraits du compte de récompenses.

Tous les 7 commentaires

Il semble que ces récompenses de vote soient maintenant dans le tableau de « trésorerie »

# 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)

Il semble que ces récompenses de vote soient maintenant dans le tableau de « trésorerie »

~Oups, ça ressemble à une erreur.~ Apparemment non.

Nous devons clarifier d'une manière ou d'une autre (dans le schéma et/ou les documents associés) qu'il existe plusieurs tableaux d'événements qui affectent les comptes de récompense de solde :

  • récompenses de pool par époque
  • retraits de compte
  • événements spéciaux MIR. Les événements MIR spéciaux proviennent des certificats MIR, mais sont planifiés pour les limites de bloc.

Ainsi, les personnes qui écrivent des requêtes pour suivre le solde total devront prendre l'union des événements.

Les certificats MIR ont été utilisés à diverses fins de haut niveau (mais le but n'est bien sûr pas affiché sur la chaîne), notamment : les récompenses dues à l'ITN, les paiements de trésorerie pour les projets gagnants, les paiements de trésorerie pour la participation à Catalyst.

Je pense qu'une partie du problème est qu'une table nommée reward pourrait raisonnablement contenir toutes les récompenses, mais ce n'est en fait pas le cas. Cette table ne contient

Ceci est rendu plus confus dans la mesure où le tableau withdrawal contient tous les retraits du compte de récompenses.

J'ai essayé de trouver l'approche la plus soignée que je puisse trouver.

Nous créons d'abord une vue :

# 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 ; 

le nous pouvons interroger cette vue comme :

# 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)

Est-ce un view que je devrais expédier prédéfini dans db-sync ?

@dmitrystas Cela peut-il être fermé maintenant ?

je pense que oui merci

Cette page vous a été utile?
0 / 5 - 0 notes