Cardano-db-sync: cardano-cli e db-sync mostram um número diferente de recompensas da época 243

Criado em 21 jan. 2021  ·  7Comentários  ·  Fonte: input-output-hk/cardano-db-sync

A partir da época 243, para alguns endereços de recompensa cardano-cli e db-sync mostram um número diferente de recompensas. Por exemplo, stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0

cardano-cli

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

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

A diferença é 36,540476 ₳, que é aproximadamente igual ao valor da recompensa do voto.

mainnet, cardano-cli 1.24.2, cardano-db-sync 7.1.0

Comentários muito úteis

Acho que parte do problema é que uma tabela chamada reward poderia conter todas as recompensas, mas não é esse o caso. Esta tabela contém apenas recompensas de aposta. Pode ser desejável renomear esta tabela para refletir isso.

Isso é mais confuso porque a tabela withdrawal contém todos os saques da conta de recompensas.

Todos 7 comentários

Parece que essas recompensas por voto estão na mesa do 'tesouro' agora

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

Parece que essas recompensas por voto estão na mesa do 'tesouro' agora

~ Ops, parece um engano. ~ Aparentemente não.

Precisamos esclarecer de alguma forma (no esquema e / ou documentos relacionados) que há mais de uma tabela de eventos que afetam as contas de recompensa de saldo:

  • recompensas de pool por época
  • retiradas de contas
  • eventos MIR especiais. Os eventos MIR especiais vêm de certificados MIR, mas são programados para limites de bloco.

Assim, as pessoas que escrevem consultas para rastrear o saldo total precisarão fazer a união dos eventos.

Os certificados MIR foram usados ​​para vários fins de alto nível (mas o objetivo, obviamente, não foi postado na cadeia), incluindo: as recompensas devidas ao ITN, pagamentos de tesouraria por projetos vencedores, pagamentos de tesouraria por participar do Catalyst.

Acho que parte do problema é que uma tabela chamada reward poderia conter todas as recompensas, mas não é esse o caso. Esta tabela contém apenas recompensas de aposta. Pode ser desejável renomear esta tabela para refletir isso.

Isso é mais confuso porque a tabela withdrawal contém todos os saques da conta de recompensas.

Tenho tentado encontrar a abordagem mais simples que posso encontrar.

Primeiro, criamos uma visualização:

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

Podemos consultar essa visualização como:

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

É um view que devo enviar predefinido em db-sync ?

@dmitrystas Isso pode ser fechado agora?

Eu acho que sim obrigado

Esta página foi útil?
0 / 5 - 0 avaliações