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

معرّفا معاملة بيتكوين: ما الذي يدخل في كل بصمة؟

تمرين نصوص غير معاملات: جزء أ ثابت base-A، وجزء ب يتبدل؛ مقتطف نتيجة أ 47e5f0f1 ثابت، والآخر 4f210a98 ثم 553a9053.
رسم أصلي لمقارنة مؤلفة؛ نطاق السؤال في المقال.

يعرف BIP141 معرّفًا تقليديًا للمعاملة وبصمة أخرى تتضمن بيانات الشاهد. كلاهما يستعمل تطبيق SHA256 مرتين، لكن مدخل التطبيق ليس الوصف نفسه: txid للترميز التقليدي، وwtxid للترميز المتضمن للشاهد. [1] نريد فهم الفرق بين سؤال الهوية وسؤال المدخل الذي حُسبت منه. سنستخدم تمرين بايتات أصليًا غير صالح بوصفه معاملة بيتكوين، ثم نقارن تغير أجزائه. ليست النتائج التالية معرفات على الشبكة، ولا ننشئ عناوين أو توقيعات أو أوامر إرسال.

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

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

  • أ هو النص الحرفي base-A، وب witness-X. نطبق SHA256 مرتين على بايتات UTF-8، للحساب الأول على أ وحده، وللآخر على أ مع الفاصل | وب؛ صيغة تمرين فقط.
  • بقاء أ مع استبدال ب بالنص witness-Y يحفظ نتيجة أ كاملة؛ سجلت العينتان اختلاف نتيجتي السلسلة المركبة بالفعل.
  • استبدال أ بالنص base-B يغير المدخلين في هذا النموذج، وقد اختلفت نتائجهما المحسوبة؛ لا يستعيد قارئ أي نص أصلي من تسمية مختصرة أعطيناها للنتيجة.
  • مقتطف أول ثمانية محارف للعرض ليس بصمة كاملة ولا دليل تفرد؛ نحتفظ بالقيم الكاملة عند المقارنة، ولا نسمي السلاسل التعليمية معرفات معاملات. نتائجنا الكاملة المعروضة 64 محرفًا؛ إخفاء 56 يبقي ثمانية.
  • تساوي نتيجتي حساب على المدخل نفسه لا يعني غياب بيانات غائبة عن ذلك المدخل. وكذلك تساوي معرفين في الحالة التي نص عليها المصدر لا يخلق معاملتين. [1]
  • الرقم المالي أو ترتيب مخرج لا يدخل تمريننا ما لم نضفه صراحةً إلى النص؛ ولا تثبت البصمة وحدها ملكية أو قبولًا أو وجود حدث على شبكة.

نعين المدخل قبل تسمية الناتج

يفرق المصدر بين تسلسل تقليدي وتسلسل جديد يحوي الشاهد مع حقوله الأخرى، ولا يصفهما بأنهما اسمان لحساب على بايتات متطابقة دائمًا. [1] لتوضيح هذه الفكرة فقط نختار نصين قصيرين من عندنا. أ يساوي base-A، وب يساوي witness-X؛ المحارف الإنجليزية والشرطة جزء من النص الحرفي في هذا التمرين. نعرّف تركيبنا بإضافة الفاصل | بينهما، فيصبح base-A|witness-X. لا نزعم أنه ترميز بروتوكول.

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

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

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

تغيير ب وحده لا يغير ما لم ندخله

نختار فرعًا ثانيًا يبقي أ نص base-A ويستبدل ب بنص witness-Y. الحساب الذي يعمل على أ وحده يستقبل المدخل نفسه كما كان؛ تبقى نتيجته كاملة 47e5f0f160b5c3beae85c0e3e0ac0897a2ec405b7a009c753a67a54de9501429. لا يحتاج فهم الثبات إلى افتراض أن النص الثاني لم يتغير؛ لقد تغير، لكنه لم يدخل ذلك التطبيق في تعريفنا. الفرق بين تغير البيانات وتغير مدخل حساب معين هو السؤال الذي يوضحه المثال.

أما التركيب الجديد base-A|witness-Y فيعطي 553a9053d649f0edccaf77afc75b45cebfe932afa42cc66a4a1335bf9094d985. هذه نتيجة محسوبة للفرع، مختلفة فعلًا عن نتيجة التركيب الأول. نتحدث عن عينتين معلومتي المدخل والناتج، ولا نثبت من ذلك أن كل تغيير مهما كان سيعطي اختلافًا بلا استثناء. حدود الاستنتاج هنا مهمة مثل صحة الحساب؛ المثال المحدود لا يصبح برهانًا شاملًا بمجرد أن نتيجتيه واضحتان.

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

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

تغيير أ يصنع مقارنة جديدة لا تصحيحًا قديمًا

في فرع ثالث مستقل نستعمل base-B للجزء الأول مع witness-X للثاني. ينتج تطبيقنا على الجزء الأول d0abd83305a9c9413265dabd3f64fb9b4deeeb6e1bef518ddc3ed0ed1ae5afe4 ، وعلى التركيب e3cb806bd7828802fbe1c8a0db5d7eee2fbae8aba3d1e11ec7ea6a60c0202b1f. حسبنا القيمتين محليًا كذلك، دون اتصال شبكة أو تشغيل محفظة. تغير المدخلان لأن الجزء الذي بدلناه يدخل كليهما في صيغة التمرين.

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

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

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

مقتطف العرض لا يحل محل المقارنة الكاملة

سنختصر القيم في رسم المثال إلى ثمانية محارف لسهولة القراءة، مثل 47e5f0f1 و 4f210a98 و 553a9053. هذه اقتطاعات أصلية من القيم الكاملة التي حسبناها، وليست قاعدة تسمية معرفات بيتكوين. لا نسميها معرفات مختصرة كافية للبحث عن معاملة، ولا نعتبر اختلاف المقتطفين إثباتًا لوجود حدثين فعليين. مهمتها توضيح أي نتيجة في المقال نقصدها دون ملء الرسم بسلاسل طويلة.

لماذا نحتفظ بالكامل حين نقارن العينات؟ لأن المقتطف لم يعرض بقية المحارف. إذا اخترعنا مثال عرض آخر يبدأ فيه اسمان بنفس الثمانية، فالتساوي في مساحة العرض لا يثبت تساوي الاسمين الكاملين. يمكن وضع النصين الأصليين «abcdefgh-أ» و«abcdefgh-ب» لتوضيح هذا المنطق وحده، لا باعتبارهما نواتج دالة من عيناتنا. تتفق أول ثمانية محارف وتختلف النهاية التي أخفاها الاختصار.

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

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

ولعد مدخلات تمريننا تحديدًا، النص base-A ستة محارف إنجليزية، والنص witness-X تسعة، والفاصل محرف واحد؛ يصبح المجموع ستة عشر في السلسلة المركبة التي اخترناها. تغيير الحرف الأخير إلىY يحفظ هذا الطول لكنه لا يحفظ النص نفسه. لذلك لا تكفي عبارة «الطول واحد» لاستنتاج أن المدخلين متطابقان. أما حذف الفاصل فيقلل عدد المحارف إلىخمسة عشر، لكنه يقدم تعريفًا مختلفًا للتركيب. هذه حسابات على نصوصنا البسيطة فقط؛ لم نستخرج منها حجمًا افتراضيًا أو وزنًا أو رسمًا. وكذلك الفرق بين العرض الكامل 64 والمقتطف 8 هو 56 محرفًا أخفاها الاختصار، لا 56 وحدة مال وفرتها خطوة تقليص العرض. العد الصحيح يحتاج تسمية ما نعده، ثم إبقاء تلك التسمية عند طرح عددين أو مقارنة نتيجتين.

حالة التساوي لا تعني وجود حدثين

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

في تمرين مستقل عن البروتوكول نعرف حسابين اختير لهما النص base-A نفسه. يعيد إجراءنا النتيجة نفسها في الاثنين لأننا كررنا المدخل والإجراء. لا ينشئ تكرار الحساب حدثين من أحداث الدفع، ولم يمنحنا الدليل أن للتمرين ملفين أصليين مختلفين. كل ما فعلناه حساب مرتين على البايتات نفسها. يمكن عد عمليتي الحساب، لكن لا نغير اسم المعدود إلى معاملتين بثتا.

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

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

رقم المخرج سؤال آخر عن الهوية

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

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

ويمكن إعطاء مبلغين 700 و 900 ساتوشي في حكاية مستقلة دون إدخالهما في النصوص الحرفية السابقة. جمعهما 1600 لا يغير 47e5f0f1 أو أي قيمة محسوبة؛ لم نعد حسابًا على مدخل جديد. وإذا أرادت مسألة أخرى إدخال الرقمين ضمن نص جديد، لزم تعريف ذلك النص وطريقة كتابته. لا يتغير مدخل دالة لأن فقرة تفسيرية في الصفحة أضافت أعدادًا خارجه.

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

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

  1. BIP141 (يفتح في نافذة جديدة)github.com
  2. موضوع: مفردات فقط (يفتح في نافذة جديدة)mawdoo3.com

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