Cardano-db-sync: مكافأة الجدول من قبل عدد قليل من الحب

تم إنشاؤها على ١٢ نوفمبر ٢٠٢٠  ·  12تعليقات  ·  مصدر: input-output-hk/cardano-db-sync

لم أتمكن من إرسال معاملة من خلال cardano-submit-api ، فقد قال "WithdrawalsNotInRewardsDELEGS" ، مما يعني ضمنيًا الحصول على مكافآت خاطئة ، أو محاولة سحب ليس كل المكافآت. لقد تحققت من جميع الأجزاء ، حيث كان من الممكن أن يحدث خطأ. بعد ذلك ، قارنت المكافآت مقابل العناوين العشوائية التي تم الحصول عليها من db-sync ومن yoroi api. هذه هي أوجه عدم التطابق لبعض (في أربطة الحب):

image
يمثل كل صف مكافآت db-sync من SQL هذا:
SELECT (SELECT COALESCE(SUM(rewards.amount), 0) FROM ( SELECT amount FROM reward WHERE addr_id=$1 UNION ALL SELECT amount FROM reserve WHERE addr_id=$1 ) rewards ) - ( SELECT COALESCE(SUM(amount), 0) FROM withdrawal WHERE addr_id=$1 ) AS "remainingRewards"
ناقص المكافآت من yoroi api.

ماذا يحدث @ erikd ؟

تحرير: yoroi يحصل عليه أيضًا من db-sync ، لذلك من المحتمل أن تكون هذه الاختلافات من قيمتين خاطئتين. في كلتا الحالتين ، ينشأ الخطأ في db-sync

التعليق الأكثر فائدة

آسف ، لقد أطلقت عليه قبل الأوان. يبدو أن المشكلة قد تم إصلاحها ، وأنا أراقبها وسأقدم تقريرًا في غضون أيام قليلة.

ال 12 كومينتر

لقد لاحظنا هذا أيضًا في Yoroi

فيما يلي نتائج 7 حالات مختلفة من cardano-db-sync حيث القيمة الحقيقية هي 30428426

backend#1 30428424
backend#2 30428424
backend#3 30428424
backend#4 30428423
backend#5 30428430
backend#6 30428424
backend#7 30428426

كما ترى ، فقط 1/7 الخلفية حصلت على النتيجة الصحيحة

لقد تحققنا مرة أخرى من تخزين هذه القيم غير الصحيحة في قاعدة بيانات SQL ، لذلك نعلم أن هذه المشكلة ليست في الجزء الخاص بنا من المكدس

تضمين التغريدة حالات مختلفة db-sync تعطي نتائج مختلفة ؟؟؟ هل جميعهم يشغلون نفس الإصدار؟

xdzurman هل ستتمكن من تبسيط استعلام SQL هذا؟ سيكون من الجيد أن يكون لديك ثلاثة أعمدة ، المكافأة ، والاحتياطي ، والفرق.

أظن أن الاستعلام خاطئ بالفعل. يبدو جدول المكافآت على النحو التالي (لم تتم مزامنة المثيل الخاص بي حاليًا):

cexplorer=# select * from reward ; 
 id | addr_id | amount | epoch_no | pool_id | block_id 
----+---------+--------+----------+---------+----------
(0 rows)

لذلك لكل حقبة مبلغ مكافأة (أي لقطة سريعة لمكافآت الحقبة) وبدون استكشافها بشكل صحيح ، لست متأكدًا مما هو موجود في جدول reserve .

erikd هذا هو الاستعلام الذي قمنا بتشغيله على الخلفيات السبعة المختلفة التي أعطت نتائج مختلفة. كلهم نفس إصدار cardano-db-sync ونفس إصدار العقدة

  select stake_address.hash_raw as "stakeAddress"
       , "totalReward".*

  from stake_address

  left outer join (
    SELECT addr_id, amount
    FROM reward
  ) as "totalReward" on stake_address.id = "totalReward".addr_id

  where encode(stake_address.hash_raw, 'hex') = 'e1567298bc998d188d936f105f9e9e616f1980adacc06fc5732a57f9cc'

لقد حصل العنوان المحدد في استعلام SQL هذا على مكافآت مرة واحدة فقط لذا يسهل التعامل معه.

أظن أن الاستعلام خاطئ بالفعل. يبدو جدول المكافآت على النحو التالي (لم تتم مزامنة المثيل الخاص بي حاليًا):

cexplorer=# select * from reward ; 
 id | addr_id | amount | epoch_no | pool_id | block_id 
----+---------+--------+----------+---------+----------
(0 rows)

لذلك لكل حقبة مبلغ مكافأة (أي لقطة سريعة لمكافآت الحقبة) وبدون استكشافها بشكل صحيح ، لست متأكدًا مما هو موجود في جدول reserve .
image

أفترض أن - الاحتياطي يحمل مكافآت ITN. يحدد جدول المكافآت المكافآت المستلمة في بداية تلك الحقبة. لذا فإن المكافآت المتبقية هي مجموع كل المكافآت والمكافآت مطروحًا منها عمليات السحب.

اكتشفنا مشاكل مماثلة. 137 مندوباً قد سحبوا بالضبط 500 ADA. يظهر داخل db-sync db في سحب الجدول. حصل بعضهم على رصيد سلبي بعد ذلك. إما أن يكون هذا مرتبطًا بهذه المشكلة أو أننا نفعل شيئًا خاطئًا من جانبنا.

فمثلا:

قام أحدهم بسحب 500 ADA ولكن حصل فقط على 200 ADA وفقًا لـ db-sync. المثال الخاص بي هو لـ Epoche عند أو بعد 214

mmahut لست متأكدا. قد يكون الخطأ الذي تم إصلاحه على # 413 قد تسبب بسهولة في حدوث هذه المشكلة أيضًا. أو قد يكون هناك أكثر من مشكلة واحدة. xdzurman ؟

mmahut هذا عبر حالات منفصلة؟ أحتاج إلى طريقة سهلة لإنتاج هذا وامتلاك أكثر من حالة واحدة ليست حالة استنساخ سهلة.

آسف ، لقد أطلقت عليه قبل الأوان. يبدو أن المشكلة قد تم إصلاحها ، وأنا أراقبها وسأقدم تقريرًا في غضون أيام قليلة.

يبدو أنه تم إصلاحه بالنسبة لي أيضًا ، وسيغلق الآن. لا تتردد في إعادة الفتح في حالة حدوث أي مشاكل.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات