Cardano-db-sync: cardano-cli y db-sync muestran un número diferente de recompensas de la época 243

Creado en 21 ene. 2021  ·  7Comentarios  ·  Fuente: input-output-hk/cardano-db-sync

A partir de la época 243, para algunas direcciones de recompensas, cardano-cli y db-sync muestran un número diferente de recompensas. Por ejemplo stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0

cardano-cli

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

y 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 diferencia es 36,540476 ₳, que es aproximadamente igual a la cantidad de recompensa de votos.

red principal, cardano-cli 1.24.2, cardano-db-sync 7.1.0

Comentario más útil

Creo que parte del problema es que podría esperarse razonablemente que una tabla llamada reward contenga todas las recompensas, pero en realidad ese no es el caso. Esta tabla solo contiene recompensas de apuesta. Podría ser conveniente cambiar el nombre de esta tabla para reflejar eso.

Esto se vuelve más confuso porque la tabla withdrawal contiene todos los retiros de la cuenta de recompensas.

Todos 7 comentarios

Parece que estas recompensas de voto están ahora en la tabla de 'tesorería'

# 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 estas recompensas de voto están ahora en la tabla de 'tesorería'

~ Vaya, parece un error. ~ Aparentemente no.

Necesitamos aclarar de alguna manera (en el esquema y / o documentos relacionados) que hay más de una tabla de eventos que afectan el saldo de las cuentas de recompensa:

  • recompensas de grupo por época
  • retiros de cuenta
  • eventos especiales MIR. Los eventos MIR especiales provienen de los certificados MIR, pero están programados para límites de bloque.

Por lo tanto, las personas que escriban consultas para realizar un seguimiento del saldo total deberán tomar la unión de los eventos.

Los certificados MIR se han utilizado para varios propósitos de alto nivel (pero el propósito, por supuesto, no se publica en la cadena), que incluyen: las recompensas debidas al ITN, los pagos de tesorería por proyectos ganadores, los pagos de tesorería por participar en Catalyst.

Creo que parte del problema es que podría esperarse razonablemente que una tabla llamada reward contenga todas las recompensas, pero en realidad ese no es el caso. Esta tabla solo contiene recompensas de apuesta. Podría ser conveniente cambiar el nombre de esta tabla para reflejar eso.

Esto se vuelve más confuso porque la tabla withdrawal contiene todos los retiros de la cuenta de recompensas.

He estado tratando de encontrar el enfoque más ordenado que pueda encontrar.

Primero creamos una vista:

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

el podemos consultar esta vista 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)

¿Es un view que debo enviar predefinido en db-sync ?

@dmitrystas ¿Se puede cerrar esto ahora?

Creo que si gracias

¿Fue útil esta página
0 / 5 - 0 calificaciones