Cardano-db-sync: يجب أن يكون الإيداع بعد التقاعد في جدول المكافآت

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

بعد التقاعد ، يجب أن تصل الوديعة إلى حساب المكافآت. بينما تكون مرئية في cardano-cli ، لا يمكن العثور عليها في قاعدة البيانات.

cardano-cli shelley query stake-address-info \
> --mainnet \
> --address stake1uywjy7h05jmhx9y3wzy94td6xz4txynuccgam0zfn800v8qq33z29
[
    {
        "address": "stake1uywjy7h05jmhx9y3wzy94td6xz4txynuccgam0zfn800v8qq33z29",
        "delegation": "pool1qnrqc7zpwye2r9wtkayh2dryvfqs7unp99f2039duljrsaffq5c",
        "rewardAccountBalance": 500009820
    }
]

image

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

erikd
من مواصفات دفتر الأستاذ :

الصفحة 21

تذكر أن المبالغ المستردة لتقاعد تجمع الأسهم لا تصدر عند وجود شهادة جدولة لـ
تتم معالجة التقاعد ، ولكن في حدود الفترة التي تم تحديد موعد التقاعد من أجلها.

صفحة 40

• يتم استخدام دالة poolRefunds لحساب إجمالي المبالغ المستردة التي يجب توزيعها
لتجمعات الأسهم المقرر التقاعد. لاحظ أن هذا الحساب يأخذ رقم فتحة يتوافق مع الفاصل الزمني لحدود الفترة عند إجراء الحساب. عاد
خريطة تجزئة مشغل تجمع الخرائط إلى المبالغ المستردة ، والتي سيتم إعادتها في النهاية إلى
حساب مكافأة مسجل.

ال 18 كومينتر

لكن جدول "المكافآت" ليس هو نفسه تغيير stock_address ... إذا فعلنا ذلك ، فيجب علينا أيضًا تخزين أشياء أخرى في هذا الجدول ، مثل مكافآت ITN (الجدول "احتياطي" في الوقت الحالي) على سبيل المثال

الطريقة الأخرى الوحيدة للحصول على هذه الإيداعات جنبًا إلى جنب مع المكافآت هي الاستعلام عن جدول تقاعد البلياردو ، ما إذا كان المجمع المتصل بعنوان الحصة هذا قد انتهى في حقبة معينة ، وإضافة قيمة 500000000 مشفرة إلى المكافآت إذا لم تكن هذه القيمة قد انتهت بعد سحبت ، الأمر الذي يتطلب مرة أخرى الحوسبة إذا لم تكن عمليات السحب أعلى من المكافآت حتى تلك النقطة الزمنية ، وما إلى ذلك ، وما إلى ذلك ، الأمر الذي يبدو ثقيلًا حقًا.

ومع ذلك ، ما زلت أعتقد أنه ينبغي ذكرها في db بشكل أكثر وضوحًا بدون هذه القيم المشفرة الثابتة وما إلى ذلك. ربما طاولة أخرى؟ أم علاقة أبسط؟

إذا اخترت الحصول على 500 ADA هذه من جدول pool_retirement ، إذا كان للمجمع عدة مالكين ، فكيف يمكنني معرفة عنوان الحصة الذي تمت مكافأته على 500 ADA؟

إذا كان للمجمع عدة مالكين ، فكيف يمكنني معرفة عنوان الحصة الذي تمت مكافأته على 500 ADA؟

يتم إرجاع الإيداع إلى عنوان المكافآت (دائمًا ما يكون عنوانًا للمجمع) ، وليس عنوان المالك

يتم إرجاع الإيداع إلى عنوان المكافآت (دائمًا ما يكون عنوانًا للمجمع) ، وليس عنوان المالك
هذا منطقي شكرا لك!

إذن ، سيتم إرجاع إيداع المجمع المتقاعد إلى عنوان المكافأة الخاص بالمجمع المعلن عنه في جدول pool_update ، أليس كذلك؟

أنا أسأل لأن لدي المثال الحالي الذي يحيرني:

SELECT SUM(amount) as reward, NULL as withdrawal
FROM reward
         LEFT JOIN stake_address sa on reward.addr_id = sa.id
WHERE sa.view = 'stake1u9rqg96sdsdrqshpx0x77jna40ws90drts2wks7vuy63dpqj6txws'
UNION
SELECT NULL, SUM(amount)
FROM withdrawal
         LEFT JOIN tx ON withdrawal.tx_id = tx.id
         LEFT JOIN block ON tx.block_id = block.id
         LEFT JOIN stake_address sa on withdrawal.addr_id = sa.id
WHERE sa.view = 'stake1u9rqg96sdsdrqshpx0x77jna40ws90drts2wks7vuy63dpqj6txws';

يمنحنا هذا الاستعلام إجمالي المكافآت وإجمالي عمليات السحب لعنوان حصة مثال. الفرق بينهما هو بالضبط 500000000 رباط الحب. من المؤكد أنها قد تكون مصادفة ولكن من الصعب تخيل ذلك نظرًا لوجود أمثلة أخرى من هذا القبيل. لذلك دعنا نفترض أن هذا هو إيداع مجمع مرتجع ، ثم يجب أن يظهر عنوان الرهان هذا كعنوان مكافأة في جدول pool_update ، أليس كذلك؟

SELECT pool_retire.hash_id, sa.view FROM pool_retire
    LEFT JOIN pool_update pu ON pool_retire.hash_id = pu.hash_id
    LEFT JOIN stake_address sa on sa.id = pu.hash_id
WHERE sa.view = 'stake1u9rqg96sdsdrqshpx0x77jna40ws90drts2wks7vuy63dpqj6txws'

لكن هذا الاستعلام لا يؤدي إلى نتائج. الشيء الذي يمكنني اكتشافه هو أن عنوان الحصة هو مالك مشارك لمجمع متقاعد (pool_hash_id = 8) وهو ما قادني إلى سؤالي الأول.

أنا فقط أتساءل كيف يمكنني تحديد مصدر 500 ADA. هل يمكن أن يكون هذا الإيداع متعلقًا بـ ITN؟

إذن ، سيتم إرجاع إيداع المجمع المتقاعد إلى عنوان المكافأة الخاص بالمجمع المعلن عنه في جدول pool_update ، أليس كذلك؟

حق

لكن هذا الاستعلام لا يؤدي إلى نتائج

sa.id! = pu.hash_id -> sa.id = pu.reward_addr_id

أنا فقط أتساءل كيف يمكنني تحديد مصدر 500 ADA. هل يمكن أن يكون هذا الإيداع متعلقًا بـ ITN؟

يكاد يكون من المؤكد لا.

إلى أين وصلنا مع هذه القضية. يبدو أنه كان قليلاً من الذهاب والإياب. هل ترغب في إخباري بالوضع الحالي للعب على هذا؟

بالتأكيد ، تم اختطاف المشكلة قليلاً .. لذلك لم يتغير شيء بشأن السؤال - الإيداع الذي يجب أن يعود إلى عنوان المكافآت بعد التقاعد لم يعد موجودًا في قاعدة البيانات بشكل صريح (على سبيل المثال ، وصل 500 ADA في العصر 245). ولكن عليك التحقق من جدول تقاعد البلياردو ، ما إذا كان التجمع الذي يكون عنوان مالكه هو عنوان المكافآت الذي تبحث عنه ثم قم يدويًا بإضافة قيمة مضمنة "500" إلى مكافآت المستخدم إذا لم يتم سحب هذا المبلغ من هذا التقاعد الدقيق بعد. وهو ما يبدو مرهقًا حقًا بالنسبة لي واقترحت ما إذا كان من الممكن إدخاله في جدول المكافآت ، أو في مكان آخر ، ولكن بشكل صريح.

الإيداع الذي يجب أن يعود إلى عنوان المكافآت بعد التقاعد لم يعد موجودًا بشكل صريح في قاعدة البيانات

هل لديك مثال لعنوان mainnet يمكنني التحقيق فيه؟

e11d227aefa4b773149170885aadba30aab3127cc611ddbc4999def61c / stake1uywjy7h05jmhx9y3wzy94td6xz4txynuccgam0zfn800v8qq33z29

لديك فكرة خاطئة حول إعادة الإيداع. لا تنتهي عمليات استرداد الإيداع في جدول reward ولكن في جدول tx . لذلك دعونا نجدها.

بالنسبة للعنوان الذي نهتم به:

cexplorer=# select id, view, registered_tx_id from stake_address
               where view = 'stake1uywjy7h05jmhx9y3wzy94td6xz4txynuccgam0zfn800v8qq33z29' ;
  id  |                            view                             | registered_tx_id 
------+-------------------------------------------------------------+------------------
 2820 | stake1uywjy7h05jmhx9y3wzy94td6xz4txynuccgam0zfn800v8qq33z29 |          2420601

و id قد يكون حقل مختلف أنحاء db-sync الحالات، ولكن id ستكون مفيدة لهذا الاستكشاف.

معقد بعض الشيء ، ولكن يمكن رؤية المبلغ المسترد باستخدام:

cexplorer=# select stake_deregistration.id, stake_deregistration.addr_id, stake_deregistration.tx_id,
               tx.deposit, block.epoch_no from stake_deregistration
               inner join tx on tx.id = stake_deregistration.tx_id
               inner join block on block.id = tx.block_id
               where stake_deregistration.addr_id = 2820 ; 
 id  | addr_id |  tx_id  | deposit  | epoch_no 
-----+---------+---------+----------+----------
 730 |    2820 | 2842157 | -2000000 |      223

وبالمثل ، يمكن أن يبدو التسجيل باستخدام:

cexplorer=# select stake_registration.id, stake_registration.addr_id, stake_registration.tx_id, tx.deposit,
               block.epoch_no from stake_registration inner join tx on tx.id = stake_registration.tx_id
               inner join block on block.id = tx.block_id
               where stake_registration.addr_id = 2820 ; 
  id   | addr_id |  tx_id  | deposit | epoch_no 
-------+---------+---------+---------+----------
  1649 |    2820 | 2421547 | 2000000 |      208
 86926 |    2820 | 2842177 | 2000000 |      223
(2 rows)

أفترض أن عنوان الحصة هذا كان:

  • مسجلة في العصر 208
  • غير مسجل في العهد 223
  • أعيد تسجيلها مرة أخرى في عهد 223.

هل كل هذا منطقي؟

من المنطقي تسجيل الأسهم ، لكنني كنت أتحدث عن تقاعد البلياردو. و 500 ADA التي يجب إعادتها إلى عنوان مكافأة مالك المسبح.

ما زلت لا أعتقد أنه يعود إلى عنوان المكافأة. هل لديك مثال على تجمع المتقاعدين؟

العلاقة أو حقيقة أنها ستظهر في قاعدة البيانات في مكان ما هي في الواقع طلبي لميزة ، وليس خطأ في الإصدار الحالي. مثال على حمام السباحة المتقاعد: pool134dws3tyc7kphwl6gks26cm6l390554lns9lyatm3gkxs6dwj2z. العنوان الذي أرسلته سابقًا هو مالكه

erikd
من مواصفات دفتر الأستاذ :

الصفحة 21

تذكر أن المبالغ المستردة لتقاعد تجمع الأسهم لا تصدر عند وجود شهادة جدولة لـ
تتم معالجة التقاعد ، ولكن في حدود الفترة التي تم تحديد موعد التقاعد من أجلها.

صفحة 40

• يتم استخدام دالة poolRefunds لحساب إجمالي المبالغ المستردة التي يجب توزيعها
لتجمعات الأسهم المقرر التقاعد. لاحظ أن هذا الحساب يأخذ رقم فتحة يتوافق مع الفاصل الزمني لحدود الفترة عند إجراء الحساب. عاد
خريطة تجزئة مشغل تجمع الخرائط إلى المبالغ المستردة ، والتي سيتم إعادتها في النهاية إلى
حساب مكافأة مسجل.

xdzurman آسف في هذا:

العلاقة أو حقيقة أنها ستظهر في قاعدة البيانات في مكان ما هي في الواقع طلبي لميزة ،

ما هو بالضبط طلب الميزة؟

erikd لوضع إيداع المجمع (500 ADA) في مكان ما في قاعدة البيانات ، بعد أن يتم

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