يعرف معيار ERC20 دالة totalSupply بإرجاع إجمالي الرمز، ودالة balanceOf بإرجاع رصيد الحساب المحدد. [1] سؤال الأولى يختلف عن سؤال الثانية، ولا يجعل ظهور عدد كبير في حقل الإجمالي هذا المقدار ملكًا لكل حساب. نحدد العنصر والوحدة واللقطة قبل حساب نسبة أو مقارنة مقدارين.
ننشىء دفترًا تعليميًا لرمز مؤلف ر، ونصرح بأن قائمتنا تضم جميع حامليه في هذا النموذج المغلق، وبأن إجماليه المعطى يساوي مجموع مقاديرهم. هذا فرض للدفتر، لا ضمان عام عن تنفيذ كل عقد فعلي. ليس في المقال سعر أو قيمة سوقية أو اختيار استثمار، ولا نستخدم وحدات أصل آخر أو سعر صرف لقراءة هذه المقادير.
الخلاصة السريعة
إجمالي الرمز يجيب عن المجموعة، ورصيد الحساب يجيب عن الحساب المقصود. [1] في دفترنا المغلق إجمالي 1,000 وحدة ر ورصيد أ 400 منها؛ لا يصبح أ مالكًا 1,000 ، ولا نجمع الرقمين في 1,400. تحتاج حصة 40% إلى الإجمالي نفسه واللقطة نفسها، مع شروط اكتمال القائمة التي أعطيناها.
- القائمة الأصلية: أ 400 وب 250 وج 150 ود 100 وه 100 ، كلها وحدات ر؛ مجموعها 1,000. عدد الحسابات 5 ، لا إجمالي المقدار ولا عدد أحداث الفترة.
- حصة أ 400÷1,000 تساوي 40%. في بديل إجماليه 2,000 مع أ 400 تكون 20%؛ المقدار المتساوي لا يثبت حصة متساوية دون مقام.
- نقل مؤلف 40 من أ إلى ب، بلا تغيير آخر أو رسم في النموذج، يعطي أ 360 وب 290 ويبقي مجموعنا 1,000. جمع المقادير قبل النقل وبعده ليس إجمالي لقطة واحدة.
- إذا عرفنا أ 400 وب 250 فقط، فالمجموع المعروف 650. لا نسميه الإجمالي، ولا ننسب الباقي 350 إلى حساب محدد دون بياناته، حتى تحت فرض الإجمالي 1,000.
- لقطة أ 400 ثم 360 تعطي فرقًا −40 ، لكنها لا تعين مسارًا واحدًا أو مستفيدًا؛ نموذجان مختلفان أعطيناهما يمكن أن يصلا إلى النهاية نفسها.
- قائمة مجموعها 1,100 مقابل إجمالي معطى 1,000 مخالفة لفرض دفترنا؛ نراجع المعطيات ولا نملأ سطرًا مجهولًا بسالب 100. ولا يثبت تطابق مجموع مع إجمالي صحة عقد أو قيمة أو سيولة.
مجموع المجموعة لا يوزع نفسه بالتساوي
يضع محرر الدفتر حسام خمسة صفوف: أ 400 وب 250 وج 150 ود 100 وه 100 وحدة من ر. ثم يعطي الإجمالي 1,000 في بطاقة مستقلة تخص الرمز نفسه واللقطة نفسها. جمع الصفوف يساوي 400 زائد 250 زائد 150 زائد 100 زائد 100 ، أي 1,000. نحن الذين اخترنا اكتمال القائمة وتساوي مجموعها مع البطاقة، فلا ننقل هذا الوصف إلى ملف آخر لم نعرف تغطيته.
إذا طلب زميل رصيد أ، ينقل حسام 400 من صفه، لا 1,000 من بطاقة المجموعة. التعريفان في المعيار مرتبطان بسؤالين مختلفين. [1] قد يتجاوران في عرض واحد لكن التجاور لا يمنحهما الوظيفة نفسها. ولا ينشئ جمع 400 و 1,000 مقدارًا 1,400 في دفترنا؛ الأول جزء من المجموعة التي أعطيناها، فلا نضيفه مرة ثانية إلى مجموع يشمله.
متوسط الصفوف في هذا المثال يساوي 200 وحدة ر لأن 1,000 مقسومة على 5 تساوي 200. لكنه ليس مقدارًا أعطيناه لكل شخص؛ أ 400 وب 250 وج 150 ود وه 100. إذا كتب زميل 200 بجوار جميع الأسماء فقد أنشأ توزيعًا بديلًا، لا قراءة للتوزيع الأصلي. يمكن دراسة البديل بعنوانه مع بقاء الصفوف الأولى واضحة، دون إعلان أن المتوسط كشفها.
وفي توزيع مستقل نعطي أ 200 وب 200 وج 200 ود 200 وه 200. يظل المجموع 1,000 ويصبح الجميع عند المتوسط. تشترك الورقتان في الإجمالي وعدد الصفوف، وتختلفان في القيم الفردية. لذلك لا يستعيد عدد 1,000 هوية توزيع وحيد، حتى إذا عرفنا أن عدد الحسابات خمسة. نحتاج مقاديرها إذا كان السؤال عن التوزيع، لا عملية قسمة عامة تملأ جميع الخانات.
لا نقرأ الإجمالي سعرًا للرمز أو قيمة للمقتنيات بوحدة نقدية أخرى. أعطينا ألف وحدة من ر، لا ألف دولار أو إيثر. لو احتاج سؤال آخر تقييمًا ماليًا، فإنه يحتاج سعرًا وتعريفًا ولقطة مناسبة لم نقدمها. عدد الصفوف ومتوسطها ومجموعها ثلاثة أعداد نافعة لمسائل محددة، لكنها لا تحمل وحدها معلومات سوق أو حقوق شخص خارج دفترنا.
الحصة تحتاج مقدار الحساب ومقام المجموعة
في القائمة الأصلية تكون حصة أ 400 مقسومة على 1,000 ، أي 0.4 أو 40%. هذا حساب على جزئنا المعطى ومجموعنا المعطى في اللقطة نفسها. نكتب كلمة حصة بجوار النسبة ومقامها بجوار العملية، ولا نجعل 40 مقدارًا بوحدة ر. العدد 400 له وحدة الرمز، بينما 40 هنا نسبة مئوية مشتقة، وليس أربعين وحدة من المقتنيات التي قرأناها.
نؤلف حالة مستقلة يحافظ فيها أ على 400 ، لكن الإجمالي 2,000 ضمن قائمة أخرى مكتملة في قصتها. تصبح الحصة 20%. لم تتراجع قيمة أ العددية بوحدات ر في المقارنة، لكن تغير مقام الحصة. لا ننسب فرق عشرين نقطة مئوية إلى بيع أو خسارة قيمة، لأننا لم نقدم أحداثًا أو أسعارًا تربط الحالتين. هما توزيعات فرضناها للمقارنة الحسابية فقط.
وفي ثالث نعطي أ 800 والإجمالي 2,000 ، فتعود الحصة 40%. يتضاعف المقداران مقارنة بالحالة الأصلية، وتثبت النسبة. لا يساوي ثبات النسبة ثبات رصيد أ، كما لا يثبت سعرًا ثابتًا أو غاية استثمارية. تظهر الأمثلة ما يفقده من يرسل نسبة فقط لمن يحتاج مقدارًا، وما يفقده من يرسل مقدارًا فقط لمن يسأل عن نصيبه من مجموعة محددة.
إذا وصل إلى حسام مقدار 400 ولم يصل الإجمالي، فلا يكتب 40% لأنه الرقم الذي ظهر سابقًا. يستطيع أن يعبر عن الحصة 400 مقسومة على المقام غير المعطى، لكن لا يعطي نتيجة نهائية قبل تحديده. ولا يستخدم مجموعًا من لقطة أخرى لتكميل الغياب ما لم ينص السؤال على ذلك. وحدة الرمز الواحدة لا تلغي اختلاف زمن البيانات أو نطاقها.
كذلك لا نجمع حصتين تنتميان إلى رمزين أو مجموعتين مختلفتين ونعتبرهما حصة حساب من أصل واحد. في دفترنا كل مقارنات الفرع الواحد تخص ر ولقطته المحددة. إذا غيّرنا الإجمالي نعلن فرعًا مستقلًا، ونحفظ المقادير التي تخصه. يتيح هذا الوصف إعادة القسمة بسهولة ويمنع استعمال نتيجة صحيحة بعنوان خاطئ، دون تعميم النموذج على توزيع رمز منشور أو معرفة جميع حامليه فعلًا.
نقل داخل الدفتر لا يضاعف المجموعة
نعود إلى صفوف البداية ونعطي حدثًا مؤلفًا واحدًا: خروج 40 وحدة ر من أ ودخولها إلى ب، دون رسم أو واقعة أخرى في هذا الفرع. يصبح أ 360 وب 290 ، وتبقى بقية المقادير 150 و 100 و 100. جمع النهاية 360 زائد 290 زائد 150 زائد 100 زائد 100 يساوي 1,000 ، وفق فرض الحدث والقائمة المغلقة اللذين قدمناهما، لا إثباتًا تلقائيًا عن كل عقد.
تبلغ حصة أ الجديدة 36% وحصة ب 29% من مجموعنا نفسه. في البداية كانتا 40% و 25%؛ نقص الأولى أربع نقاط مئوية وزيادة الثانية أربع نقاط. لا نقول إن 40 وحدة تعني 40 نقطة مئوية، لأن مقام 1,000 يجعل الوحدة الواحدة جزءًا من ألف. نحتفظ بالمقدار المنقول 40 منفصلًا من طريقة وصف تغير الحصتين في هذه اللقطة.
قد يخطئ جدول في حفظ أ 400 وإضافة 40 إلى ب فقط، فيظهر مجموع 1,040. هذا لا يوافق الحدث الداخلي الذي أعلنّاه؛ نقلنا مقدارًا بين صفين ولم نعط إضافة خارجية. وفي خطأ مقابل ينقص أ إلى 360 ويبقى ب 250 فيظهر 960. يحتاج التصحيح الرجوع إلى الصف الذي تغير وحقيقة الحدث المعطاة، لا اختيار مقدار مجهول في صف آخر لكي يتوازن الجمع.
إذا جمع زميل جميع مقادير البداية وجميع مقادير النهاية، يحصل على 2,000. هذا جمع لقطتين كاملتين، لا إجمالي المجموعة عند زمن واحد. يمكن وصفه بأنه مجموع أرقام قائمتين لغرض حسابي معلوم، لكنه لا يثبت تضاعف ر. يحدد سؤال اللقطة أي قائمة نقرأ، بينما يحتاج سؤال حركة الفترة سجلًا مستقلًا للأحداث لا جمع أرصدة زمنيّن من دون تسمية.
وفي بديل نعلن حدثًا 60 من أ إلى ب بالشروط نفسها، فتصبح أ 340 وب 310 مع بقاء المجموع 1,000. لا نجمع حدث 40 في الفرع الأول وحدث 60 في الثاني ونصف الفترة بأنها نقل 100 ، لأنهما قصتان بديلتان. تصون أسماء الفروع وحدودها معنى المقارنة، وتترك كل نتيجة قابلة لإعادة الحساب من مدخلاتها دون تشغيل برنامج أو تقديم تفسير لتاريخ فعلي.
مجموع ما نراه قد يكون جزئيًا
نؤلف نسخة مختصرة تعرض أ 400 وب 250 فقط، بينما تؤكد معطيات هذا الفرع الإجمالي 1,000. مجموع الصفين 650 وحدة ر، والفرق 350. لا نسمي 650 الإجمالي لأن النسخة لا تضم جميع صفوف القصة. كما لا نعطي 350 لج وحده؛ قد يمثل عدة صفوف غائبة عن النسخة. الأصل الكامل يضم 150 و 100 و 100 ، لكن لا يحق للنسخة الناقصة أن تستعيد هذا التقسيم من الفرق وحده.
يمكن بناء بديل أصلي يوزع 350 على ج 200 ود 150 دون صف ه في قائمته الخاصة، وبقاء أ وب كما هما. ويمكن ثالث يقسمها على سبعة صفوف 50 لكل منها. تشترك القصص في مجموع الصفوف الظاهرة والإجمالي، وتختلف في عدد الغائب وتوزيعه. لهذا لا تجيب عملية الطرح وحدها سؤال عدد الحاملين أو مقدار شخص لم يعط السجل صفه.
وإذا غابت بطاقة الإجمالي أيضًا، يبقى ما نعرفه 650 مجموعًا للصفين فقط. لا نستنتج 350 على أنه باقي معطى، لأن حساب الباقي السابق اعتمد 1,000 الذي لم يصل في هذه الحالة. تكتب الورقة نطاق مجموعها: أ وب في اللقطة التي قدمناها. هذه معلومة محددة مفيدة، حتى إن لم تجب السؤال الأشمل الذي يحتاج اكتمالًا لم توفره النسخة.
نضيف خطأً آخر يظهر حين تصل صورتان لصف أ وصورة لصف ب. جمع الأرقام المنسوخة 400 زائد 400 زائد 250 يعطي 1,050 ، لكن نسخ صف أ مرتين لم تنشئ صاحبًا جديدًا في مدلول دفترنا. لا تصبح نتيجة أكبر من الإجمالي دليلًا تلقائيًا على إضافة خارجية؛ قد يكون السبب عدّ وصف العنصر الواحد أكثر من مرة. تحفظ هوية الصف مع القيمة لتظهر المراجعة هذا الاحتمال.
التفريق بين كمال القائمة ومجرد وصول ملف يسبق أي استنتاج عن الإجمالي. يستطيع حسام أن يسجل ثلاثة مرفقات وصفين معلومين ومقدار 650 للمجموعة الجزئية، دون خلط الوحدات. أما إذا طلبت الرسالة جميع الحاملين، يقول إن النسخة لا تقدمهم. لا يمنح صحة جمع الصفين شهادة عن محتوى غائب، ولا يستبدل عدد الملفات بعدد الأشخاص الذين لم تعرف هوياتهم.
نهايتان لا ترويان أحداث الفترة
نعطي في قصة لاحقة لأ مقدار 400 في البداية و 360 في النهاية، مع ثبات إجمالي دفترنا عند 1,000. الفرق ناقص 40 من وحدات ر، لكنه لا يحدد المستفيد أو عدد الأحداث. مسارنا الأول السابق نقل 40 إلى ب مرة واحدة. هذا مسار يوافق النهايتين لأننا أعلنّا حدثه، لا لأن الفرق كشفه دون حاجة إلى سجل آخر.
نؤلف مسارًا ثانيًا ينقل أ 60 إلى ب ثم يتلقى 20 من ج. تصبح نهاية أ 360 نفسها. في هذا المسار ترتفع ب إلى 310 وتنخفض ج إلى 130 ، وتبقى د وه 100 ؛ المجموع 1,000. يختلف عدد الأحداث والجهة الثانية عن المسار الأول، مع تساوي بدايتي أ ونهايتيه. يجب إعطاء المقادير النهائية الأخرى أو الأحداث لتمييز القصتين، لا الاكتفاء بالتغير 40.
وفي ثالث ينقل أ 20 إلى ب و 20 إلى ج. تصبح أ 360 وب 270 وج 170 ، مع د وه 100 والمجموع 1,000. لم يرجع مقدار إلى أ، لكن النتيجة الفردية مطابقة للفرعين السابقين. يمكن أن نسمي كل مسار ممكنًا تحت فرضه، ولا نختار أحدها بوصفه تاريخًا حقيقيًا لمجرد بساطته. الإمكان الحسابي لا يوفر واقعة لم تعط الورقة شاهدها.
إذا حفظت رسالة أ 360 دون قيمة البداية، فلا تستنتج الفرق ناقص 40 أيضًا. قد تكون البداية 400 أو 360 أو مقدارًا آخر في قصة مختلفة. تحتاج قراءة التغير إلى نقطتين، بينما تحتاج قراءة التاريخ إلى بيانات أخرى فوقهما. لا تملأ الأعداد الغائبة بأرقام من أقرب مثال كي يتشكل مسار مفصل، ولا تجعل ناتجًا عامًا جوابًا عن سؤال أكثر تحديدًا مما قدم السجل.
تسلم ورقة المقارنة لكل مسار اسمًا وبداية وأحداثًا معطاة ونهاية، وتبين أن جميعها بدائل لا سلسلة واحدة. يستطيع زميل حساب كل صف والتأكد من تطابق فرض المجموع في كل نسخة. أما السؤال عن واقعة خارجية فيبقى بلا جواب من هذه القصص وحدها؛ لم يتصل المقال بعقد أو محفظة، ولم يقدم كتلًا أو رسائل تنفيذ يمكن استعمالها لإثباتها.
تطابق الجمع اختبار لفرضنا المحدود
تصل إلى حسام قائمة تعطي أ 400 وب 350 وج 150 ود 100 وه 100 ، مع بطاقة تقول 1,000. جمع الصفوف 1,100 ، أعلى من البطاقة بمقدار 100. هذه القائمة لا توافق فرضنا المعلن عن اكتمالها ومساواة مجموعها مع الإجمالي. لا نسمي الفرق ربحًا أو رسمًا، ولا نضيف صفًا مجهولًا بسالب 100 لمجرد أن ذلك يعيد التوازن العددي إلى الورقة.
قد يكون الخطأ في مقدار ب أو في البطاقة أو في وصف النسخة. يحتاج التصحيح بيانًا يحدد المعطى الصحيح؛ لم يمنح الجمع وحده اختيار أحد الاحتمالات. إذا أعلن الكاتب في فرع جديد أن الإجمالي 1,100 ، يمكن أن توافقه القائمة الحالية، لكنه فرع مختلف بقيمة معلنة جديدة. لا نستبدلها بصمت ثم ننسب إلى النسخة الأولى نتيجة لم تعطيها بطاقتها الأصلية.
وفي نسخة متطابقة يعود الجمع 1,000 ، كما في البداية. هذا نجاح لاختبار الاتساق الذي اخترناه، وليس تحققًا من جميع خصائص عقد فعلي أو صحة مصدر قائمة حية. تستطيع بيانات خاطئة متسقة داخلها أن تمر من جمع حسابي؛ لذلك لا تقدم ورقتنا التوازن بوصفه شهادة قيمة أو سيولة أو ضمان عدم تغير. تختبر علاقة محددة بين أرقام قدمناها، وتترك بقية الأسئلة في نطاقها.
يحتفظ التسليم باسم ر ووحدته واللقطة وتغطية القائمة، ثم يميز قيمة المجموعة وقيمة كل صف ونسبة إن حسبناها ومقامها. إذا عرض جدول مختصر صفين فقط، تظهر هذه الحقيقة في عنوانه. وإذا وجدت نسخة مكررة أو نهاية بلا بداية، يحدد السؤال الذي يمكن الإجابة عنه بدل استعارة معلومة من فرع آخر. بهذا تبقى النتائج مفهومة لمن لم يشاهد إعداد الأمثلة.
لا يحتاج القارئ أسعارًا آنية ليعيد هذه المقارنات؛ هي أصلية ومتاحة ضمن معطيات المقال. لكن غياب الحاجة إلىسعر لا يحول ألف وحدة ر إلى ألف من عملة حقيقية، ولا يحول الإجمالي إلى مقدار في كل حساب. عندما يثبت اسم الحقل ووحدته ونطاقه، تبقى النسبة والجمع والتغير أدوات للإجابة عن أسئلة محددة، مع ترك القصة الغائبة غائبة بدل اختراعها.
المصادر ومتابعة القراءة
- EIP20: الحقول (يفتح في نافذة جديدة)eips.ethereum.org
- موضوع: مفردات فقط (يفتح في نافذة جديدة)mawdoo3.com
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.