مهارات الحياة

عداد معاملات إيثريوم: الصادر ليس كل ما وصل إلى الحساب

نموذج حساب أ: العداد 3 مع أربع وقائع واردة إضافية يبقى 3 ؛ حدثان صادران ناجحان إضافيان يعطيان 5.
رسم أصلي لمدخلات مؤلفة؛ الشروط والوحدات في المقال.

يصف توثيق إيثريوم حقل nonce في الحساب الخارجي بأنه عداد للمعاملات الصادرة منه، ويذكر أن المعاملة ذات الرقم نفسه لا تنفذ أكثر من مرة للحساب المعني. أما في حساب العقد فيتعلق الحقل بعدد العقود التي أنشأها. [1] لذلك نحدد نوع الحساب قبل تفسير العدد، ولا نعد كل حركة واردة معاملة صادرة من صاحب اللقطة.

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

الخلاصة السريعة

عداد الحساب الخارجي لا يساوي عدد التحويلات التي استقبلها. [1] في دفترنا ثلاثة أحداث صادرة معطاة وخمسة واردة لا تجعل العداد ثمانية. نوع الحساب ومصدر الحدث وزمن اللقطة أساسية؛ الرقم ليس ارتفاع كتلة أو مبلغًا بالإيثر ولا حكمًا على طلب معلق.

  • في البداية المعطاة عداد أ هو 3. إضافة أربع وقائع واردة فقط تبقيه 3 في نموذجنا، مع ارتفاع عدد الوقائع الواردة من 5 إلى 9.
  • حدثان صادران إضافيان ناجحان يعطيان 5 ، لا مبلغًا 5 ETH. القيمة والعدد عمودان مختلفان، ولا يعاد الحساب من جمع المبالغ.
  • انتقال لقطة السلسلة من ارتفاع 800 إلى 806 لا يضيف ست معاملات إلى الحساب؛ عدد أحداثه الصادرة يحتاج سجلها الخاص.
  • مساواة عدادي حسابين عند 4 لا تعني أنهما الحساب نفسه أو أنهما أرسلا إلى الجهات نفسها. كل عداد يرتبط بحسابه ولقطته.
  • نسختان من حدث واحد ذي رقم واحد ليستا حدثين ناجحين. والطلب الذي لم تعط نتيجته يبقى مجهول الحالة، لا إضافة مؤكدة أو فشلًا مفترضًا.
  • فرق العداد بين لقطتين في قصتنا 2 ؛ لا يحدد مبالغ الحدثين أو الجهات أو توقيتهما. كما لا ننقل تفسير الحساب الخارجي إلى حساب عقد أو إلى كل محفظة تحمل اسمًا مشابهًا.

نعرّف صاحب العداد قبل عدّ الأحداث

تكتب يارا أعلى الصفحة أن أ حساب خارجي في المثال، ثم تمنحه ثلاثة أحداث صادرة مكتملة وخمسة أحداث واردة. يختلف هذا النطاق عن حساب عقد، الذي يقدم المرجع للحقل فيه معنى آخر. [1] لا نحتاج شرح طريقة إنشاء العقود كي نقرأ هذه الورقة؛ يكفي ألا ننقل معنى اخترناه لنوع إلى نوع لم تتحدث عنه أمثلتنا.

نضع عند البداية القيمة 3 في العمود الذي ندرسه، ونترك رصيد المال خارج هذا السؤال. أما عمود الوارد فنعطيه 5 بوحدة «حدث»، لا بوحدة إيثر. إذا جمع زميل العددين في 8 ، فقد جمع نوعين من الوقائع التي اخترناها؛ لا يصبح الناتج تلقائيًا قيمة العمود الأول. يستطيع أن يسميه مجموع العددين في الدفتر، مع بيان ما يشمله.

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

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

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

وصول أربعة أحداث لا يصير أربع عمليات صادرة

ننتقل من البداية إلى لقطة ثانية ونضيف أربع وقائع واردة ناجحة فقط. يصبح العدد الوارد في دفترنا 9 بعد أن كان 5 ، ويظل العمود الخاص بالصادر عند 3. هذه معطيات القصة المقيدة بألا توجد وقائع صادرة إضافية خلالها. لا نستنتج غياب الصادر من عبارة عامة تقول إن الحساب تلقى مالًا؛ نحن الذين نصصنا على عدم وجوده في هذا الفرع.

نعطي الوقائع الأربع مقادير مستقلة 2 و 4 و 1 و 3 ETH، فيكون مجموعها 10 ETH. العدد أربع والمبلغ عشرة، ولا يوصف أحدهما بوحدة الآخر. لم نحدد الرصيد الابتدائي أو المصروفات أو أحداثًا خارج هذا الفرع، فلا نحسب رصيدًا نهائيًا مطلقًا للحساب من هذا المجموع. نوضح مقدار ما أعطيناه للوارد فقط، لا كامل وضعه المالي.

في بديل مستقل نجعل الوقائع الأربع متساوية بمقدار 2 ETH لكل منها، فيكون المجموع 8 ETH. عدد الوقائع لم يتغير رغم انخفاض المقدار بمقدار 2 ETH عن الفرع السابق. وفي بديل ثالث نضع واقعة واحدة مقدارها 10 ETH؛ يتساوى مجموعها مع الفرع الأول لكن العدد واحد. هذه أمثلة أصلية تبين أن المال الداخل لا يستعيد عدد الأحداث بالضرورة.

يمكن للمراجع أن يقارن الفرعين إذا حافظ على عنوان كل منهما. لا يجمع عشرة من الأول وثمانية من الثاني في 18 ETH ثم ينسبها إلى لقطة واحدة؛ البدائل تعرض قصتين مختلفتين. وكذلك لا يقول إن أ أصدر أربعة طلبات لأن أربعة أشخاص أرسلوا إليه. نسمي الفاعل والاتجاه ونحافظ على حدود الحدث الذي وضعناه في الورقة.

تحتاج عبارة «تحرك الحساب أربع مرات» توضيحًا في هذا السياق. قد تعني أربع إضافات معطاة إلى سجل الوارد، وقد يريد الكاتب شيئًا آخر. تطلب يارا اسم المجموعة ووحدتها قبل تعديل العمود. هذا لا يؤخر حسابًا محددًا؛ إنه يمنع تعديل قيمة لا يجيب عنها الوصف. وإذا غاب التوضيح تبقى العبارة مسجلة بوصفها وصفًا ناقصًا، لا برهانًا على صادرتين أو أربع صادرات.

عددان جديدان لا يكشفان قيمة الدفعتين

نعود إلى البداية ذات القيمة 3 ، ونضيف هذه المرة حدثين صادرين ناجحين محددين في الدفتر. يصبح العدد 5 في نموذجنا. لا نحتاج جمع المبالغ كي نعرف أن اثنين أضيفا إلى ثلاثة؛ وحدته عدد أحداث. نسمي الحدث الأول ك والثاني ل ونربطهما بالحساب أ، حتى لا نعتمد في تحديد المجموعة على وصف عام مثل «حدث جديد».

نمنح ك مبلغًا 1 ETH ول مبلغًا 4 ETH، فيكون مجموع المقادير 5 ETH. مصادفة أن المجموع المالي خمسة وأن نهاية العدد خمسة لا توحد وظيفتيهما. أحدهما نتج من جمع واحد وأربعة، والآخر من جمع ثلاثة واثنين. وإذا كتبت الورقة الرقم 5 وحده بلا وحدة أو اسم حقل، فقد أخفت الاختلاف بدل أن تحله؛ نعيد تسمية كل نتيجة.

في فرع مستقل نجعل المبلغين 2 ETH و 2 ETH. يبقى عدد الأحداث الإضافية اثنين، ونهاية العمود 5 ، بينما مجموع المبالغ 4 ETH. وفي ثالث نمنح ك وحده 4 ETH مع غياب ل، فيكون المجموع المالي نفسه ونهاية العدد 4. يكفي تغيير توزيع المقادير في أمثلة معلنة لإظهار أن النتيجة المالية لا تستعيد عدد الوقائع بصورة وحيدة.

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

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

ارتفاع الكتلة ليس عداد صاحب الحساب

نضيف إلى صفحة المتابعة ارتفاعين مؤلفين: 800 في اللقطة الأولى و 806 في الثانية. الفرق ستة بين قيمتي هذا العمود. لا نمنح أ ست وقائع صادرة بسبب هذا الفرق؛ قد يكون في فرعنا حدثان أو لا شيء أو عدد آخر نصت عليه المعطيات. يصف الارتفاع سياقًا مختلفًا عن عدد الوقائع المرتبطة بصاحب الحساب الذي حددناه.

في الحالة الأولى نعطي أ حدثين صادرين جديدين خلال المدة فيبقى الحساب السابق 3 زائد 2 يساوي 5. وفي الثانية نعطي عدم وجود أي صادر جديد، فتبقى القيمة 3 رغم الارتفاعين نفسيهما. لا يزعم الفرع الثاني أن الشبكة توقفت أو أن كل الحسابات ظلت ساكنة؛ اقتصر الفرض على أ. يشترك الفرعان في أرقام السياق ويختلفان في الوقائع التي اختارها الكاتب.

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

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

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

الرقم الواحد والنسختان ليستا تنفيذين

يذكر التوثيق أن معاملة واحدة فقط ذات رقم معين يمكن تنفيذها للحساب المعني. [1] نأخذ هذا القيد في نطاق حسابنا الخارجي، ثم نؤلف بطاقة حدث ك تحمل رقمًا محفوظًا وصورتين للبطاقة نفسها. وصول الصورتين لا يضيف حدثين ناجحين إلى القصة؛ هما شاهدان ورقيان على الوصف الواحد الذي أعطيناه، وليس في المثال نتيجة تنفيذ ثانية مستقلة.

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

في حالة أخرى تعطينا رسالتان أوصافًا متعارضة للحدث نفسه: مبلغ 1 ETH في الأولى و 2 ETH في الثانية. لا نجمعهما في 3 ETH ثم نعدهما تنفيذين. يحتاج التعارض تحديد النسخة الصحيحة أو توضيحًا من صاحب البيانات. إلى أن يصل البيان، نذكر المقادير المختلف عليها بوصفها تعارضًا في الوثائق، مع بقاء الفرض عن عدد الوقائع منفصلًا عن حل ذلك الخلاف.

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

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

اللقطتان لا تستعيدان القصة بينهما

نمنح أ في قصة أخيرة قيمة 3 عند البداية و 5 عند النهاية، مع فرض أن ما بينهما في دفترنا يتكون من حدثين صادرين ناجحين. الفرق 2 يوافق هذه القصة. لكنه لا يحدد قيمة ك أو ل أو الجهة المستفيدة أو الساعة التي وقعا فيها. لا ننشئ قائمة مالية تفصيلية من فرق عددين؛ نسجل الفرق مع العناوين التي سمحت بحسابه ونطلب بقية الحقول لسؤال آخر.

يمكن أن نملأ فرعًا أصليًا بمقدارين 1 و 4 ETH، وفرعًا آخر بمقدارين 2 و 2 ETH. يوافق كلاهما العدد الذي اخترناه، مع اختلاف المجموع المالي. كما يمكن اختيار جهتين مختلفتين في الأول وجهة واحدة في الثاني دون تغيير عدد الوقائع. لا يكشف انتهاء العمود إلى 5 هذه التفاصيل؛ إضافتها إلى الدفتر تحتاج معطيات مستقلة لا ترجيحًا بصريًا.

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

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

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

المصادر ومتابعة القراءة

  1. إيثريوم: الحساب (يفتح في نافذة جديدة)ethereum.org
  2. موضوع: مفردات فقط (يفتح في نافذة جديدة)mawdoo3.com

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.