ماذا لو لم تكن معاملة بلوكتشين خاطئة—بل مبكرة فقط؟

كنت أتأمل تغييرًا صغيرًا في Rusk v1.7.0 جعلني أتوقف لحظة. يتعلق بمعاملات Moonlight التي تصل برقم nonce مستقبلي. بدلًا من رفضها فورًا، يمكن لـ Rusk أن تُدرجها مؤقتًا في طابور انتظار حتى يضيق الفارق في الـ nonce.

هذا جعلني أفكر في الفرق بين كون المعاملة غير صالحة وبين كونها مبكرة جدًا. إذا كان العقدة ما تزال تنتظر معاملة أسبق، فقد تكون المعاملة التالية ببساطة في المقدمة من حيث التسلسل. يستخدم Rusk طابور إعادة محاولة محدودًا لهذا الغرض. كما يُطلق حدثًا مؤجلًا بينما تنتظر المعاملة.

أبسط مقارنة بالنسبة لي هي تحويل بنكي. يصل التحويل رقم اثنين إلى النظام قبل التحويل رقم واحد. لا أُفترض تلقائيًا أن رقم اثنين سيئ. أولًا أريد معرفة ما إذا كان النظام ينتظر فحسب وصول رقم واحد.

وهذا يجعلني أجد @Dusk detail مثيرًا للاهتمام. يمكن لواجهة HTTP API أن تُرجع 202 Accepted عندما يتم نشر المعاملة. لكن هذا لا يعني أنها موجودة بالفعل في mempool أو أنها نُفِّذت نهائيًا. حتى إن وثائق Dusk تقول إن عرض mempoolTxs المحلي يستثني معاملات nonce المستقبلية التي تقف في الـ prequeue.

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

أنا أميل إلى مراقبتها. لكنني ما زلت أود معرفة كيف تتعامل عمليات التكامل الحقيقية مع فترة الانتظار.#dusk

$METAB $STAR $DUSK