Cardano-db-sync: cardano-cliとdb-syncは、エポック243とは異なる数の報酬を示します

作成日 2021年01月21日  ·  7コメント  ·  ソース: input-output-hk/cardano-db-sync

一部のリワードアドレスの243エポックから、cardano-cliとdb-syncは異なる数のリワードを表示します。 たとえば、stake1u9z07jwyrlyh57dsvhmmdlt555vpvwdrky0ykf4le4k7zuc3pvuy0

カルダノ-cli

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

および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)

差は36.540476₳で、これは投票報酬額とほぼ同じです。

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

最も参考になるコメント

問題の一部は、 rewardという名前のテーブルにすべての報酬が含まれることが合理的に期待できることだと思いますが、実際にはそうではありません。 この表には、ステーキング報酬のみが含まれています。 それを反映するために、このテーブルの名前を変更することが望ましい場合があります。

withdrawalテーブルにリワードアカウントからのすべての引き出しが含まれているという点で、これはさらに混乱を招きます。

全てのコメント7件

これらの投票報酬は現在「財務」テーブルにあるようです

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

これらの投票報酬は現在「財務」テーブルにあるようです

〜おっと、それは間違いのように見えます。〜どうやらそうではありません。

残高報酬アカウントに影響を与えるイベントのテーブルが複数あることを(スキーマや関連ドキュメントで)何らかの方法で明確にする必要があります。

  • エポックごとのプール報酬
  • アカウントの引き出し
  • 特別なMIRイベント。 特別なMIRイベントはMIR証明書から取得されますが、ブロック境界でスケジュールされます。

したがって、全体のバランスを追跡するためにクエリを作成する人々は、イベントの結合を取る必要があります。

MIR証明書は、ITNによる報酬、プロジェクトに勝った場合の財務支払い、Catalystに参加した場合の財務支払いなど、さまざまな高レベルの目的で使用されています(ただし、目的はチェーンに掲載されていません)。

問題の一部は、 rewardという名前のテーブルにすべての報酬が含まれることが合理的に期待できることだと思いますが、実際にはそうではありません。 この表には、ステーキング報酬のみが含まれています。 それを反映するために、このテーブルの名前を変更することが望ましい場合があります。

withdrawalテーブルにリワードアカウントからのすべての引き出しが含まれているという点で、これはさらに混乱を招きます。

私はこれに対して私が見つけることができる最も近いアプローチを考え出そうとしてきました。

まず、ビューを作成します。

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

このビューを次のようにクエリできます。

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

それはviewで事前定義された状態で出荷する必要があるdb-syncですか?

@dmitrystasこれは今すぐ

そう思います、ありがとう

このページは役に立ちましたか?
0 / 5 - 0 評価