المؤلف: Anony، دراسة BTC
عندما يتعامل المستخدمون مع Bitcoin، غالبًا ما يواجهون مفهوم "عنوان". عندما تحاول تلقي مدفوعات البيتكوين، يتعين عليك تقديم عنوانك. عند التحقق مما إذا كان قد تم استلام الدفعة في مستكشف الكتل، غالبًا ما يتم استخدام العنوان المحدد كشرط بحث.
قد تعتقد: "العنوان يعادل حسابًا مصرفيًا في عالم البيتكوين ويمكن استخدامه لتلقي عملات البيتكوين." لكن هذا الفهم قد يجعلك في حيرة من أمرك عندما تواجه بعض المواقف أثناء استخدام المحفظة. على سبيل المثال: عند استخدام محفظة برامج Bitcoin لأول مرة، قد يطلب منك تحديد "نوع" عنوان، مثل: "Bech32 (SegWit)"، "P2PKH"، "Nested-SegWit (P2SH)"، وما إلى ذلك. حتى عندما تريد التبديل إلى محفظة برمجية أخرى، فسوف يخيفك ذلك: قد تمنحك المحفظة البرمجية الجديدة مجموعة مختلفة تمامًا من عناوين Bitcoin عن المحفظة البرمجية الأصلية، فماذا يجب عليك فعله في هذا الوقت؟
تهدف هذه المقالة إلى تقديم شرح متعمق قليلاً لمفهوم عناوين Bitcoin وأنواع العناوين لمساعدة القراء على حل المشكلات التي قد يواجهونها أثناء عملية الاحتفاظ بعملات البيتكوين بشكل مستقل تتضمن بعض المشكلات التي تمت مواجهتها، على سبيل المثال لا الحصر، اختيار نوع العنوان والمشكلات التي قد تحدث أثناء عملية ترحيل محفظة البرنامج.
سيركز الفصل الأخير على وصف خصائص واقتصاديات العناوين المختلفة التي قد يتواصل معها القراء إذا لم تكن مهتمًا بالتفاصيل الفنية على الإطلاق ، أو تريد فقط التحقق بسرعة من المعلومات، يمكنك الانتقال إلى الفصل الأخير، ولكن إذا كنت تريد التخطيط لطريقة حفظ الذات، فمن المستحسن أن تقرأ من البداية.
بكل بساطة، عنوان Bitcoin هو في الواقع نتيجة ترميز (ترجمة) خاص للبيانات الرئيسية المستخدمة في نصوص Bitcoin القياسية، مما يجعله خاصًا أكثر ملاءمة للتسليم وتوفر القدرة على تذكير الأخطاء، والفرق في اقتصادها يأتي من الاختلاف في اقتصاد نص البيتكوين الأساسي الخاص بها.
نص البيتكوين الموحد
كما نعلم جميعًا، فإن Bitcoin هي عملة إلكترونية تعمل في شبكة نظير إلى نظير. أثناء تطوير عملة البيتكوين، صمم ساتوشي ناكاموتو شكلاً من أشكال الوجود للعملة التي أصبحت تُعرف باسم "UTXO". هذا التنسيق يجعل أموال البيتكوين أقل شبهاً بالأموال الموجودة في حساب تلو الآخر، وأكثر شبهاً بشيك مستقل تلو الآخر. تسجل هذه "الشيكات" معلومتين أساسيتين: فئة الأموال (باللغة "sats") والمفتاح العام للبرنامج النصي (scriptPubkey)، والذي يُستخدم لتحديد الظروف التي يمكن في ظلها إنفاق الأموال. يشبه المفتاح العام للبرنامج النصي القفل الذي يتطلب مفتاحًا محددًا لفتحه.
أدرك ساتوشي ناكاموتو أنه إذا تمكنا من تخصيص أقفال ذكية، فيمكن استخدام البيتكوين بشكل أكثر مرونة في سيناريوهات مختلفة. لذلك، قام أيضًا بتصميم لغة برمجة تسمى "Bitcoin Script" ووضع التحقق من المعاملات القائم على UTXO، وبالتالي يمكننا كتابة برنامج يستخدم كمفتاح عام للبرنامج النصي، ويمكن التحقق منه عند إنفاق الأموال ذات الصلة على أساس يتم التحقق من صحة هذه الإجراءات.
يجلب هذا الابتكار صعوبة عملية: عندما يتم نشر معاملة في شبكة نظير إلى نظير، ستقوم العقدة التي تتلقى المعاملة أولاً بإجراء بعض أعمال التحقق. إذا كانت لغة البرمجة والبرمجة بها ثغرات أمنية متأصلة تسمح للعقد بالتعطل أثناء عملية التحقق من صحة المعاملات، فيمكن استخدام المعاملات التي تستغل هذه الثغرة الأمنية لإسقاط الشبكة بأكملها. كيف يمكن تحقيق التوازن بين الانتشار الحر للمعاملات وأمن الشبكة؟
بالإضافة إلى الحد من مرونة برنامج Bitcoin Script عمدًا، توصل ساتوشي ناكاموتو أيضًا إلى طريقة: لتحويل بعض البرامج النصية المعروفة بأنها موجزة بدرجة كافية وسوف لا يؤدي إلى حدوث حالات فشل تم تعريفها على أنها "برنامج Bitcoin النصي الموحد" [1] ؛عند إنفاق الأموال باستخدام مثل هذا البرنامج النصي، يتم التعامل مع المعاملة على أنها "معاملة Bitcoin قياسية" ويمكن نشرها دون عوائق عبر الشبكة. على العكس من ذلك، إذا لم يتم استخدام مثل هذا البرنامج النصي الموحد، حتى لو كانت المعاملة صالحة، فلا يمكن تقديمه إلا مباشرة إلى القائمين بالتعدين، الذين سيقومون بتجميعه في كتل وتعدينها، ثم ينتشر إلى الشبكة بأكملها. وهذا يحد من المعاملات التي قد تسبب مشكلات أمنية من الانتشار في الشبكة والتسبب في تعطل العقد.
يوجد أقدم نصين برمجيين موحدين للبيتكوين: "P2PKH" و"P2PK" كما يوحي الاسم، حيث يضعان مفتاحًا عامًا في المفتاح العام للبرنامج النصي ( أو تجزئة مفتاح عام)، مما يتطلب من المعاملات التي تنفق الأموال تقديم توقيع ذلك المفتاح العام (المفتاح الخاص الأساسي).
المفتاح العام لبرنامج P2PKH يشبه هذا:
OP_DUP OP_HASH160 55ae51684c43435da751ac8d2173b2652eb64105 OP_EQUALVERIFY OP_CHECKSIG
(من موقع علوم البيتكوين الشهير: تعلمني عملة البيتكوين)
مفهوم العنوان
تمكن البرامج النصية الموحدة نظام Bitcoin من الحصول على وظائف أساسية (يمكن للأفراد الاحتفاظ بعملات Bitcoin وبدء دفع العملات الإلكترونية للآخرين عن طريق الاحتفاظ بمفاتيح خاصة). ومع ذلك، فهي لا تزال بيانات مصممة لأجهزة الكمبيوتر - والموضوع الذي يجب أن يفهم هذه السلاسل هو الكمبيوتر. الكمبيوتر ليس حساسًا لطول السلسلة ولن يرتكب أخطاء أثناء نسخ البيانات. والناس هم عكس ذلك في نواح كثيرة.
المشكلة هي أن الأشخاص، كمستخدمين لهذا النظام، يتعين عليهم التعامل مع هذه البيانات: عندما يتلقى شخص ما دفعة بالبيتكوين، فإن ما يتطلبه TA هو الآخر يرسل الطرف صندوق Bitcoin إلى برنامج Bitcoin النصي الذي يتحكم فيه TA (أو الذي يمكن لـ TA فتحه بنجاح بالإضافة إلى ذلك، عندما يريد TA الاحتفاظ بأمواله الخاصة لفترة طويلة، قد يحتاج TA إلى عمل نسخة احتياطية من Bitcoin الخاص به)؛ البرنامج النصي.
ماذا يجب أن نفعل في هذا الوقت؟ من الواضح أن السلسلة الطويلة مثل ما ورد أعلاه ليست مناسبة للإرسال (طويلة جدًا)، ولا للنسخ الاحتياطي (من السهل نسخها بشكل خاطئ).
لقد ذكرنا سابقًا أن النصوص البرمجية العملية لمعظم الأشخاص تكون موحدة. ويعني هذا التوحيد أن هناك اختلافًا واحدًا بين النصين البيانات الرئيسية: بالنسبة للنصين P2PKH، الاختلاف الوحيد هو أن قيم تجزئة المفتاح العام المسجلة مختلفة. لذلك، عند تلقي الدفع، نحتاج فقط إلى توفير قيمة التجزئة هذه ونوع البرنامج النصي (وهو برنامج نصي P2PKH)، وهذا يكفي. سيستخدم الدافع (البرنامج) هذه المعلومات لاستعادة نص Bitcoin الكامل وإرسال Bitcoin إلى المكان الصحيح في المعاملة.
علاوة على ذلك، (أدرك ساتوشي ناكاموتو، وهو على دراية بالهندسة)، أننا لا نستطيع تمرير الشكل السداسي العشري لقيمة التجزئة هذه (55ae51684c43435da751ac8d2173b2652eb64105 الرمز>، 40 حرفًا). وبمساعدة طرق التشفير المصممة خصيصًا، يمكننا تحويلها إلى نموذج أقصر وأكثر سهولة في القراءة.
هذا هو "العنوان": البيانات المشفرة التي تحمل المعلومات الأساسية التي تسمح لنا باستعادة نص Bitcoin بشكل صحيح.
طريقة الترميز
Base58
"Base58" [2] هي طريقة تشفير اخترعها ساتوشي ناكاموتو، وهي معدلة من طريقة التشفير الشهيرة "Base64". تتضمن مجموعة أحرف Base64: جميع الأرقام والأحرف الكبيرة والصغيرة ورمزين ("+" و"/")؛ بإجمالي 64 حرفًا. قام ساتوشي ناكاموتو بحذف الرقم 0 والأحرف الكبيرة I وO والحرف الصغير l والرموز منه، وأصبح Base58.
هذا الحذف متعمد. تقرير ساتوشي ناكاموتو الذاتي هو:
لماذا نستخدم base58 بدلاً من base64؟
لا يتم استخدام 0OIl لأن هذه الأحرف تبدو متشابهة ويمكن استخدامها لإنشاء حسابات تبدو متطابقة تقريبًا.
ليس من السهل على الناس قبول ذلك هناك أحرف في رقم الحساب وأحرف غير الأرقام.
إذا كنت لا تستخدم علامات الترقيم، في عادةً لا يتم مقاطعة البريد الإلكتروني بفواصل الأسطر.
انقر نقرًا مزدوجًا لتحديد السلسلة بأكملها. لأنه لا يوجد سوى الحروف والأرقام.
- ساتوشي ناكاموتو، بيتكوين الإصدار 1 (base58.h)
يجب استعادة العنوان إلى نص Bitcoin النصي. لذلك، طالما أن حرفًا واحدًا خاطئًا، فقد يتم إرسال الأموال إلى نص Bitcoin مختلف تمامًا (والذي قد يكون نصًا لا يمكن فتحه على الإطلاق!) مما يؤدي إلى خسارة أموال، بل وأكثر من ذلك، إذا تم السماح بهذه الأحرف المربكة، فيمكن للبرامج الضارة استبدال عنوانك بصمت بعنوان مشابه ولكن يتم التحكم فيه بالفعل بواسطة المهاجم، مما يتسبب في خسارة الأموال عند تلقي المدفوعات.
لذلك فإن اعتبارات ساتوشي ناكاموتو معقولة تمامًا.
قبل تنفيذ تشفير Base58، نحتاج أيضًا إلى إضافة رمز نوع كبادئة للبيانات الرئيسية (مثل قيمة التجزئة في البرنامج النصي P2PKH أعلاه)، وابدأ بـ يتم استخدام أول 4 بايتات من نتائج عمليتين SHA256 متتاليتين للبيانات الرئيسية للبادئة كلاحقة.
يمكن أن تصف البادئة بسرعة نوع البيانات والغرض منها على وجه التحديد بسبب الإضافة من البادئة، ستظهر نفس بيانات النوع دائمًا بنفس البداية في النتيجة المشفرة Base58. ولهذا السبب نحتاج فقط إلى إلقاء نظرة على بداية عنوان Bitcoin لمعرفة نوع العنوان.
يمكن أن تكون اللاحقة بمثابة مجموع اختباري: إذا قمت بإدخال عنوان به خطأ في النسخ في البرنامج، فسيقوم البرنامج بتحذير ذلك ربما تكون قد ارتكبت خطأً (على الرغم من عدم قدرتك على تحديد مكان الخطأ).
أي أنه قبل البدء في التشفير، نحتاج إلى إنشاء سلسلة مثل هذه:
اكتب الرمز + البيانات الرئيسية + SHA256 (SHA256 (اكتب الرمز + البيانات الرئيسية)) [0:4] ("+" هنا ويعني تسلسل السلسلة)
مع P2PKH أعلاه لنأخذ البرنامج النصي كمثال، نحتاج أولاً إلى إضافة البادئة 00
إلى البيانات الرئيسية (55ae51684c43435da751ac8d2173b2652eb64105
) ثم تشغيل عمليتين حسابيتين SHA256 متتاليتين على هذه البيانات، و خذ أول 4 بايتات (عرافة 8 الأحرف، 96ab3cb1
)، كلاحقة، احصل على 0055ae51684c43435da751ac8d2173b2652eb6410596ab3cb1
. وأخيرًا، عند تشغيل التشفير Base58، نحصل على: 18p3G8gQ3oKy4U9EqnWs7UZswdqAMhE3r8
.
لا تحتوي هذه السلسلة فقط على المعلومات الأساسية المستخدمة في نصوص Bitcoin (قيمة تجزئة المفتاح العام)، ولكنها تشرح أيضًا كيفية استخدامها ( البادئة 1
يشير إلى أنه يجب استعادته إلى البرنامج النصي P2PKH)، كما أن لديه وظيفة اكتشاف أخطاء النسخ، ولا يزال 34 حرفًا فقط، أي أقصر من قيمة التجزئة الأصلية.
Bech32
"Bech32" برعاية BIP 0173 [3]< /a> طريقة التشفير المحددة، مؤلفا هذا BIP هما بيتر وويل وجريج ماكسويل. ومع ذلك، فإن هذا التشفير أيضًا له أصله الخاص: تشير كلمة "Bech" إلى "BCH" it-essentials-and-its- Economys/#note4">[4]، هي طريقة طورها ثلاثة علماء رياضيات في عامي 1959 و1960. تم اختراع خوارزمية ترميز تصحيح الأخطاء الدورية في عام 2001 (يأتي اسم BCH من الأسماء الأخيرة لعلماء الرياضيات الثلاثة). ويعني "32" أن مجموعة الأحرف الخاصة بطريقة التشفير هذه تحتوي على 32 حرفًا فقط: أحرف وأرقام إنجليزية صغيرة، باستثناء الرقم "1"، والأحرف "b" و"i" و"o".
النظر في BIP هذا هو الاستفادة من ترقية "SegWit" لتوفير نصين قياسيين جديدين "P2WPKH" و"P2WSH" يستخدم العنوان العنوان الجديد طريقة الترميز.
في بداية BIP 0173، أشار المؤلفون إلى الجوانب غير المرضية لـ Base58:
يستخدم Base58 الأحرف الإنجليزية الكبيرة والصغيرة، مما يجعل بياناته غير قادرة على استخدام وضع "الأبجدية الرقمية" الأصغر عند رسمها في رمز الاستجابة السريعة، فقط أكبر ". بيانات البايت" يمكن استخدامها نموذج.
يؤدي استخدام الأحرف الكبيرة والصغيرة أيضًا إلى صعوبة النسخ والكتابة على لوحة مفاتيح الهاتف المحمول والقراءة بصوت عالٍ.
يتطلب المجموع الاختباري عمليتين SHA256 متتاليتين، وهي عملية بطيئة وليس لها وظيفة لتحديد الأخطاء.
معظم طرق التشفير التي يمكنها تحديد الأخطاء مناسبة فقط للمواقف التي يكون فيها حجم مجموعة الأحرف قوة أولية، و58 ليست قوة رئيسية.
فك تشفير Base58 أكثر تعقيدًا والعملية أبطأ.
لذلك، تستخدم هذه الطريقة الجديدة لـ Bech32 الأحرف الصغيرة والأرقام فقط عند الضرورة (مثل رسم رموز QR)، هذه يمكن تغيير الحروف إلى أحرف كبيرة للحصول على تمثيل أكثر إحكاما. في الوقت نفسه، يتمتع Bech32 أيضًا بالقدرة على تحديد موقع الأخطاء: فهو لا يمكنه اكتشاف أنك قمت بنسخ الأخطاء فحسب، بل يمكنه أيضًا الإشارة إلى الكلمات التي نسختها بشكل خاطئ (هذه القدرة على العثور على الأخطاء أفضل بكثير من Base58).
في الواقع، تحتوي خوارزمية غرفة تبادل معلومات السلامة الأحيائية (BCH) أيضًا على وظيفة "تصحيح الأخطاء": فهي لا يمكنها فقط الإشارة إلى الأرقام التي نسختها بشكل خاطئ، ولكن أيضًا الإشارة إلى ما نسخته يجب أن يكون. ومع ذلك، اكتشف مؤلفو BIP 0173 المخاطر الكامنة فيه: فمن ناحية، سيؤدي تعزيز وظيفة تصحيح الأخطاء إلى إضعاف وظيفة تحديد الأخطاء؛ ومن ناحية أخرى، إذا كان المستخدم يثق كثيرًا في قدرة البرنامج على تصحيح الأخطاء؛ قد يضلل البرنامج المستخدم. يتم تصحيح البيانات غير الصحيحة التي تم إدخالها إلى بيانات "صالحة ولكن غير مجدية" - على الرغم من أنها جزء من البيانات المشفرة لغرفة تبادل معلومات السلامة الأحيائية (BCH)، إلا أنها قد لا تكون قابلة للتحكم من قبل المستفيد ولا حتى شيء يمكن لأي شخص السيطرة عليه. وهذا أمر خطير للغاية. لذلك، يذكر BIP 0173 بحذر: "بالإضافة إلى تذكير المستخدم بالأحرف التي ربما تم نسخها بشكل غير صحيح، يجب ألا يقوم البرنامج بتنفيذ إمكانات تصحيح الأخطاء (تقديم اقتراحات التصحيح)."
بالإضافة إلى ذلك، يتبع Bech32 النمط الموجود في ترميز Base58:
Bech32 سيكون هناك تكون فقرة في بداية البيانات "البيانات ذات المعنى (hrp)" تشبه البادئة في Base58، والتي يمكن أن تشير إلى نوع البيانات.
hrp نعم يتم استخدام عدد أحرف أكثر بكثير من 32؛ لذلك، يستخدم Bech32 أيضًا الرقم "1" كفاصل لفصل hrp والبيانات الفعلية التي سيتم فك تشفيرها.
بالإضافة إلى Bitcoin، هناك العديد من المشاريع الأخرى التي تستخدم أيضًا بيانات المشاريع المختلفة التي تستخدم hrp لتمييز بعضها البعض . فيما يلي قائمة ببرامج الموارد البشرية المسجلة، وهي مثيرة جدًا للاهتمام (ولكنها مثيرة للاهتمام فقط) <[5].
صمم Bech32 أيضًا مجموعًا اختباريًا يشغل آخر 6 أحرف من البيانات المشفرة.
بافتراض أننا نستخدم نفس قيمة تجزئة المفتاح العام تمامًا كما في الحالة أعلاه، فسيكون البرنامج النصي P2WPKH كما يلي: < code>0 55ae51684c43435da751ac8d2173b2652eb64105 (نعم، إنه أبسط وأكثر تجريدية من P2PKH الأصلي)؛ العنوان المشفر Bech32 هو: bc1q2kh9z6zvgdp4mf634jxjzuajv5htvsg9ulykp8
، وهو مكون من 42 حرفًا.
Bech32m
"Bech32m" برعاية BIP 0350 <[6]< /a> طريقة التشفير المحددة. تم اقتراحه لأن المطورين اكتشفوا ثغرة أمنية في ترميز Bech32:
عندما يكون الحرف الأخير هو "p"، أدخل قبل الحرف أو احذف أي عدد من "q" لن يتسبب في حدوث خطأ في المجموع الاختباري، فستكون آلية المجموع الاختباري عديمة الفائدة تمامًا.
إذا لم تتم إضافة المزيد من نصوص Bitcoin القياسية، فيمكن حل هذه المشكلة بسهولة: لكل من عنوان P2WPKH وعنوان P2WSH طول معين، ما عليك سوى إضافة التحقق من الطول . ومع ذلك، مع الأخذ في الاعتبار أننا سنضيف في المستقبل نصوصًا برمجية موحدة جديدة قد تتغير أطوال عناوينها، فمن الضروري إصلاح هذه المشكلة.
يعمل Bech32m على إصلاح هذه المشكلة عن طريق تغيير معلمة في منشئ المجموع الاختباري Bech32.
حاليًا، يتم استخدام Bech32m فقط لتشفير عناوين البرامج النصية "P2TR" المضافة مع ترقية "Taproot". يمكن استخدامه في ترميز العناوين للنصوص القياسية الأخرى في المستقبل.
اقتصادية
بعد أن فهمنا أن العنوان هو تمثيل خاص لبرنامج نصي موحد للبيتكوين، وأن نوع العنوان يأتي في الواقع من نوع نص Bitcoin القياسي، لماذا تختلف أنواع العناوين المختلفة عن اقتصاديات مختلفة - في الإنفاق هناك قد تكون أسعار رسوم المناولة مختلفة - يتم حل المشكلة بسهولة. وذلك لأن نصوص البيتكوين المختلفة لها اقتصاديات مختلفة.
من أجل الحفاظ على اللامركزية وأمن الشبكة، يكون حجم كتلة Bitcoin محدودًا، وهناك نصوص برمجية يمكن أن تجعل حجم المعاملات أصغر اقتصاديًا المزايا.
في هذا الصدد، كان التغيير الأكبر بلا شك هو الشوكة الناعمة "SegWit" التي تم تفعيلها في عام 2017. في حين أن SegWit يقدم نصين قياسيين جديدين "P2WPKH" و"P2WSH"، فإنه يصمم أيضًا وضعًا جديدًا للتحقق من المعاملات لهذين النصين:
في نصوص Bitcoin القديمة، سيتم وضع البيانات (مثل التوقيعات الرقمية) المستخدمة في عملية التحقق المحددة بواسطة المفتاح العام للبرنامج النصي في المعاملة (الحقلscriptSignature
) ؛ وهذا يؤدي إلى ما يسمى مشكلة "قابلية ذوبان المعاملات" [7]، يعيقنا عن استخدام نصوص البيتكوين لبرمجة التطبيقات متعددة الأطراف، بل ويجعل المحفظة غير قادرة تمامًا على تتبع المعاملات.
وضع التحقق من المعاملة للشاهد المنفصل سيضع هذا الجزء من البيانات خارج المعاملة (witness
field); يقدم الشاهد المنفصل وحدة جديدة لقياس الحجم ("البايت الافتراضي (vByte)"). سيتم خصم البيانات الموضوعة في حقل الشاهد عند قياس الحجم (هذا تصميم مقصود، من أجل جعل معاملات الشاهد المنفصل أكثر اقتصادا من المعاملات التقليدية).
النتيجة النهائية هي أن البرامج النصية من نوع SegWit P2WPKH وP2WSH تتمتع اقتصاديات أفضل بكثير من البرامج النصية التقليدية P2PKH وP2SH: من ناحية، عزل البرنامج النصي العام من ناحية أخرى، يكون مفتاح النص الشاهد أكثر إيجازًا، ويتم وضع توقيع النص التقليدي في المعاملة، ويتم وضع توقيع النص الشاهد المنفصل خارج المعاملة vByte من الأخير أصغر.
في ما يلي جدول يوضح مقدار المساحة التي تشغلها الأنواع المختلفة من البرامج النصية عند استخدامها كمدخلات ومخرجات للمعاملات.
- صورة من:Optech أسبوعي محدود · في انتظار التأكيد -
إذًا، إليك حاسبة حجم التداول التي يمكن أن تخبرك بمقدار حجم التداول الذي سينتج عن كميات مختلفة من نوع معين من البرامج النصية في .
ملاحظة: عند النظر في الاقتصاد، لا يمكنك فقط مقارنة حجم البرنامج النصي عند استخدامه كمدخل، لأنه بشكل عام، سيكون لمعاملات Bitcoin "مخرجات متغيرة" " (إن مبلغ المال الذي تساهم به في التجارة غالبًا ما يكون أكبر من العائد، وبالتالي تحويل بعض الأموال إلى نفسك). عادةً ما يستخدم ناتج التغيير نفس نوع البرنامج النصي مثل عنوان الدفع لهذه المحفظة.
نوع العنوان
سيقدم هذا القسم خصائص واقتصاديات الأنواع المختلفة من العناوين التي قد يتعرض لها المستخدمون.
P2PKH
استخدم Base58 طريقة الترميز. يبدأ بالرقم "1" ويبلغ طوله عمومًا 34 حرفًا.
للمحافظ ذات التوقيع الفردي.
اقتصاد ضعيف.
مثال (نفس ما ورد أعلاه): 18p3G8gQ3oKy4U9EqnWs7UZswdqAMhE3r8
P2SH
استخدم ترميز Base58. يبدأ بالرقم "3" ويبلغ طوله عمومًا 34 حرفًا.
عنوان P2SH الذي يتعرض له المستخدمون غالبًا هو في الواقع برنامج نصي يسمى "Nested SegWit (P2SH)" العنوان، الاسم يعني "البرنامج النصي P2SH الذي يتضمن البرنامج النصي SegWit".
عندما تكون كلاهما محفظتين بتوقيع واحد، يكون الاقتصاد أفضل من P2PKH.
يمكن استخدامه في محافظ متعددة التوقيع (مع أو بدون ميزة Segregrated Witness).
مثال: 38Y2PBD1mihxtoVncaSz3oC2vRrjNF8sA2
(يحتوي البرنامج النصي P2SH هذا على نفس البرنامج النصي P2PKH كما هو مذكور أعلاه، على الرغم من أن هذا لا فائدة منه )
P2WPKH
نص SegWit الأصلي. يستخدم ترميز Bech32، ويبدأ بالأرقام والحروف "bc1q"، ويبلغ طوله 42 حرفًا.
للمحافظ ذات التوقيع الفردي.
الاقتصاد أفضل بكثير من P2PKH وأفضل من Nested SegWit P2SH.
مثال (نفس ما ورد أعلاه): bc1q2kh9z6zvgdp4mf634jxjzuajv5htvsg9ulykp8
P2WSH
نص SegWit الأصلي. يستخدم ترميز Bech32، ويبدأ بالأرقام والحروف "bc1q"، ويبلغ طوله 62 حرفًا.
تُستخدم عادةً في المحافظ متعددة التوقيع.
عند استخدامها كمحفظة متعددة التوقيع، يكون الاقتصاد أفضل بكثير من P2SH.
مثال: bc1q56cuwyqlmq64aq0y3c8swd8a9gefe4wf7faxe2uyatyahfrly5aq0e6mfc
(يحتوي البرنامج النصي P2WSH هذا على نفس البرنامج النصي P2PKH كما هو مذكور أعلاه، على الرغم من أن هذا لا يفيد )
P2TR
نص SegWit الأصلي (Taproot هو "SegWit" الإصدار 1"). يستخدم ترميز Bech32m، ويبدأ بـ "bc1p" ويبلغ طوله 62 حرفًا.
يمكن استخدامه لكل من المحافظ ذات التوقيع الفردي والمحافظ متعددة التوقيع.
باعتبارها محفظة ذات توقيع واحد، فإن الاقتصاد أفضل قليلاً من P2WPKH، ولكن لا يوجد فرق تقريبًا (هنا يُفترض أن المدخلات والمخرجات المتغيرة هي النفقات العامة المتأصلة في المعاملة؛ كلما زاد عدد المدخلات المستخدمة، زادت ميزة P2TR).
عند استخدامها كمحفظة متعددة التوقيع، بمساعدة بعض خوارزميات تجميع التوقيع Schnorr، يمكن أن يكون الاقتصاد أفضل من P2WSH. ولكن في وقت كتابة هذا التقرير (نوفمبر 2024)، نادرًا ما تنفذ برامج المحفظة خوارزميات التجميع هذه بسبب تعقيد تفاعلات هذه الخوارزميات.
الفرق الرئيسي بين P2TR ونصوص Bitcoin القياسية السابقة هو أن النصوص البرمجية الأصلية تفرق بين مستخدمي المحفظة ذات التوقيع الفردي ووظائف البرامج النصية المتقدمة ("العقود الذكية")، سيستخدم الأول نصوص تجزئة المفتاح العام، بينما سيستخدم الأخير (بما في ذلك الأجهزة المتقدمة مثل الأجهزة متعددة التوقيع وقنوات Lightning) نصوص تجزئة البرنامج النصي للاسترداد P2TR لأول مرة، ويتم إنشاء كليهما من المستحيل بالنسبة لنا أن نقرأ من النص/العنوان ويمكن الاستدلال مباشرة على استخدامه من شكله الخارجي. لذلك، ستتمتع P2TR بخصوصية أفضل على المدى الطويل.
اعتبارًا من الآن، لا تدعم جميع المحافظ عناوين P2TR (لكن جميع المحافظ تقريبًا تدعم P2WPKH وP2WSH). نطاق خيارات المستخدمين وقدرات الترحيل محدود نسبيًا. بالإضافة إلى ذلك، فإن دعم التثبيتات متعددة التوقيع المستندة إلى P2TR يكون متناثرًا.
مثال (تم اختياره عشوائيًا): bc1pxy5r3slcqc2nhc0r5698gmsqwruenj9c8pzmsy5cedp3649wyktstc6z3c
الاستنتاج
يمثل العنوان نصًا برمجيًا محددًا للبيتكوين؛ وهذا النص البرمجي للبيتكوين موحد ويمكن استعادته بالكامل بناءً على المعلومات الموجودة في العنوان. يتم استخدام طرق تشفير خاصة لجعل العناوين أكثر إحكاما ولها ميزات للتحقق من أخطاء النسخ. تأتي اقتصاديات أنواع العناوين المختلفة من اقتصاديات نصوص Bitcoin القياسية التي تقف خلفها.
الملحق أ. الواصفات
في قسم "مفهوم العناوين"، ذكرنا أن هناك سيناريوهين حيث قد يحتاج المستخدمون إلى سجل نصي مضغوط وموثوق: سيناريو الدفع (التسليم) وسيناريو الحضانة طويلة الأجل.
في قسم "طرق التشفير"، يمكننا أن نرى أن تصميم طرق التشفير هذه يعتمد بشكل أساسي على عملية التسليم بدلاً من سيناريوهات التخزين طويلة المدى. إذًا، كيف يجب حفظ العناوين في سيناريو الحضانة؟
لحسن الحظ، لدينا الآن طريقة مناسبة لتمثيل مجموعة من العناوين (بدلاً من عنوان واحد)، وهي "وصف الإخراج (العنوان)" "واصف الإخراج" ".
منذ ولادة Bitcoin وظهور مفهوم العناوين، تحسنت العادات التقنية والأمنية للحضانة المستقلة كثيرًا. أحد التطورات الرئيسية هو ما يسمى بـ "المحفظة الحتمية الهرمية (HD)". وتتمثل الفكرة في استخدام قطعة من المواد السرية لاستنتاج العديد من المفاتيح الخاصة وفقًا لخوارزمية عشوائية حتمية، ثم استخلاص العديد من العناوين، بحيث يتم الحصول على عنوان واحد. يمكن أن تلبي عادات الأمان "عدم إعادة الاستخدام" أيضًا عبء النسخ الاحتياطي للمفاتيح الخاصة قدر الإمكان.
يعتمد الواصف أيضًا على هذا المفهوم، ومنهجه هو التعبير عن نوع العنوان وخطوات إنشاء هذه المجموعة من العناوين في نص عادي، بالإضافة إلى المجموع الاختباري للقولون. على سبيل المثال:
wpkh([8b47f816/84h/0h/0h]xpub6C8vwWQ[...] NgW2SnfL /<0;1>/*)#c38kz2nr
من النص أعلاه يمكننا أن نرى أنه يمثل مجموعة من عناوين P2WPKH، والمفتاح العام المستخدم في مجموعة العناوين هذه هو من بصمة الإصبع؛8b47f816
يعتمد المفتاح العام الرئيسي على 84h/0h/0h
BIP32 مشتق من مسار الاشتقاق، واستخدم مسارات الاشتقاق 0
1
أخيرًا،c38kz2nr
هو المجموع الاختباري، والذي يمكن استخدامه للتحقق مما إذا كانت هناك أية أخطاء في النسخ.
مثل هذه السلسلة مناسبة جدًا للتخزين طويل المدى وهي أيضًا مناسبة جدًا لترحيل المحفظة، لأنها وصفت بشكل كامل عملية إنشاء هذه المجموعة من العناوين .
حاشية سفلية
1. https://en.bitcoin.it/wiki/Script #Script_examples ↩
2. https://learnmeabitcoin.com/technical/keys/base58/ ↩
3. https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki <أ href="https://www.btcstudy.org/2024/11/22/bitcoin-address-types-its-essentials-and-its- Economys/#jump-3">↩
4. https://en.wikipedia.org/wiki/BCH_code ↩
5. https://github.com /satoshilabs/slips/blob/master/slip-0173.md ↩
6. https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki <أ href="https://www.btcstudy.org/2024/11/22/bitcoin-address-types-its-essentials-and-its- Economys/#jump-6">↩
7. ht tps://www.btcstudy.org/2022/10/07/segregate-witness-benefits/#%E4%BF%AE%E5%A4%8D%E7%86%94%E8%9E%8D%E6% 80%A7%E9%97%AE%E9%A2%98 ↩