المصدر: Geek web3
باعتباره أحد مبادئ التصميم الأساسية للبيتكوين، أصبح نموذج UTXO نموذجًا تقنيًا مهمًا في مجال blockchain منذ ولادته. وهو يلعب دورًا مهمًا في ضمان أمان المعاملات وإمكانية تتبعها، مع توفير بديل لنموذج رصيد الحساب التقليدي. مع استمرار خضوع تقنية blockchain للتحديثات والتكرارات في السنوات الأخيرة، فإن نموذج UTXO نفسه يتطور ويتوسع باستمرار (مثل eUTXO، والخلية، وقائمة الوصول الصارمة، وما إلى ذلك).
الغرض من هذه المقالة هو تعلم وفهم نموذج UTXO. بطريقة سهلة الفهم، نقوم ببساطة بفرز نماذج UTXO وطرق التنفيذ من BTC إلى Sui وCardano وNervos و الوقود لجعلها مفهومة بشكل أفضل.
ما هو UTXO؟
يمكنك فهم نموذج UTXO من خلال مثال:
لنفترض أن هناك شخصين، أليس وبوب، كان لكل منهما في الأصل 5 يوانات. بعد ذلك، حدث صراع بين الطرفين، وسرق بوب 2 يوان من أليس. يظهر الشكل أدناه المبلغ النهائي من الأموال التي يحتفظ بها الاثنان:
ليس من الصعب أن نرى، أخيرًا بقي لدى أليس 3 يوانات، وبوب أخيرًا يحمل 7 يوانات. تظهر طريقة المحاسبة هذه، والتي تشبه طريقة الجمع والطرح في المدرسة الابتدائية، بشكل متكرر في النظام المصرفي وتسمى "نموذج الحساب/الرصيد". ومن بينها رصيد الحساب الموجود كقيمة واحدة.
إذا كنت تستخدم طريقة مختلفة عن نموذج الحساب، مثل UTXO لتمثيل نقل الثروة بين Alice وBob، فسيبدو الرسم التخطيطي مختلفًا:
في هذا الوقت، لا يزال لدى أليس 3 يوانات متبقية، ولا يزال لدى بوب 7 يوانات متبقية، لكن هذه اليوانات السبعة لا تستخدم واحدًا بدلاً من ذلك، تم تقسيمها إلى "5 يوان" و"2 يوان". هل يبدو هذا النهج غير التقليدي غير معتاد؟ هذه طريقة محاسبية خاصة - UTXO.
الاسم الكامل باللغة الإنجليزية لـ UTXO هو "مخرجات المعاملات غير المنفقة"، والذي يشير إلى "المخرجات غير المنفقة". بموجب طريقة المحاسبة هذه، سيتم تمثيل كل معاملة على السلسلة كتغيير ونقل لـ UTXO. على سبيل المثال، في حدث المعاملة المذكور أعلاه، تم استخدام "5 يوان" المملوكة في الأصل لـ Alice كمعلمة إدخال وتم وضع علامة عليها كـ UXTO_0، والتي سيتم تدميرها لاحقًا؛ وفي الوقت نفسه، سيقوم البرنامج بإنشاء "2 يوان" (UTXO_1) و"3 يوان" (UTXO_2) كمعلمة إخراج، سيتم نقل UTXO_1 إلى Bob، وسيتم نقل UTXO_2 مرة أخرى إلى Alice، واكتمل نقل الثروة بين ALice وBob.
في الواقع، في نموذج UTXO، لا يوجد "حساب" و" التوازن" " هذين المفهومين الواضحين،UTXO هو مجرد بنية بيانات تساعد في تنفيذ المعاملات. فهو يسجل المبلغ الذي تمثله، وفهرس المعاملات ذات الصلة وغيرها من المعلومات. يمثل كل UTXO مدخلات معاملة يمكن إنفاقها ولكن لا يتم إنفاقها مع مالك محدد. عند حدوث معاملة، يمكن استخدام UTXOs معينة كمدخلات، وبعد تدميرها، سيتم إنشاء UTXOs جديدة كنتائج مخرجات المعاملة.
هذه هي طريقة محاسبة Bitcoin: كل معاملة سيكون لها UTXO قديم تم تدميره وإنشاء UTXO جديد. المبلغ الإجمالي لـ UTXO الذي تم تدميره يساوي مبلغ UTXO الذي تم إنشاؤه حديثًا (جزء معين منه هو رسوم المناولة لعمال المناجم). بهذه الطريقة، لا يمكن لأحد إصدار أموال إضافية من لا شيء.
مقارنة نموذج UTXO ونموذج الحساب/الرصيد h2>
لنفترض أن مجموعة من المستخدمين بدأت عددًا كبيرًا من طلبات المعاملات في نفس الوقت، ماذا سيحدث إذا تم استخدام نموذج UTXO ونموذج الحساب/الرصيد لمعالجة المعاملات؟
في نموذج الحساب/الرصيد، يكون لكل مستخدم حساب يسجل معلومات الرصيد. عند حدوث معاملة، يجب تحديث رصيد الحساب المقابل، والذي يتضمن عمليات "القراءة" و"الكتابة". ومع ذلك، إذا كانت هناك معاملتان تتضمنان نفس الحساب، فغالبًا ما يكون هناك تضارب في القراءة والكتابة، أي تنافس على الحالة، وهذا موقف يجب تجنبه.
غالبًا ما تستخدم أنظمة قواعد البيانات التقليدية آلية "القفل" لحل مشكلة معينة أجزاء من البيانات.قراءة وكتابة التنافس. في هذا السيناريو، غالبًا ما يتم وضع المعاملات المتعددة التي تشكل علاقة تعارض البيانات في قائمة الانتظار ولا يمكن تنفيذها في نفس الوقت، مما سيؤدي إلى تقليل كفاءة معالجة المعاملات. عندما يكون هناك عدد كبير من المعاملات التي يتعين معالجتها، قد يتسبب الموقف المذكور أعلاه في حدوث اختناقات خطيرة في الأداء، وقد تنتظر المعاملات التي لديها تعارض في البيانات مع بعضها البعض لفترة طويلة ولا يمكن معالجتها بسرعة.
بالمقارنة مع نموذج رصيد الحساب، يمكن لنموذج UTXO الخاص بالبيتكوين أن يحل مشكلة تنافس البيانات بشكل أفضل. لأنه بهذه الطريقة، لم يعد كائن المعالجة المباشرة لكل معاملة "حسابًا"، بل كل UTXO مستقل. نظرًا لأن UTXOs المختلفة لا تتداخل مع بعضها البعض، فإن كل معاملة في شبكة Bitcoin لا تتداخل مع بعضها البعض. لذلك، عند معالجة عدد كبير من المعاملات المعلقة، يمكن لعقد شبكة Bitcoin معالجة معاملات متعددة في نفس الوقت دون استخدام "الأقفال"، مما قد يؤدي إلى تحسين إنتاجية النظام وأداء التزامن بشكل كبير. قوي>.
بالإضافة إلى ذلك، عادةً ما تبدأ محفظة التشفير لنموذج UTXO بعد بدء المستخدم معاملة، وإنشاء عنوان جديد، مما يسمح بحماية الخصوصية - يصبح من الصعب ربط المعاملات بشخص معين - في المقابل، يكون ربط نموذج الحساب/الرصيد أسهل لأنه يستخدم التحليل الجنسي لعنوان ثابت.
ومع ذلك، لدى UTXO أيضًا قيود، حيث أن تصميمها الأصلي هو تنفيذ عمليات تحويل العملات البسيطة، وليس التعامل مع منطق الأعمال المعقد. على الرغم من أنه يمكن استخدام لغة البرمجة النصية لتنفيذ بعض الوظائف البسيطة، مثل التوقيع المتعدد والوقت lock وما إلى ذلك، ولكن نظرًا لأن معلومات الحالة التي يمكن لـ UTXO الخاص بـ Bitcoin تسجيلها بسيطة جدًا، فهي غير قادرة على تنفيذ بعض العمليات المعقدة.
ساهمت القيود المفروضة على Bitcoin UTXO بشكل غير مباشر في ولادة "Ethereum" - فيتاليك، باعتباره أحد المساهمين الأوائل في مجلة Bitcoin، يدرك تمامًا أوجه القصور في Bitcoin. نموذج الحساب/الرصيد ليس أسهل في الفهم بالنسبة لمعظم الناس فحسب، بل يمكنه أيضًا حل معضلة صعوبة UXTO في التعامل مع تطبيقات الدولة الغنية، كما قال في "الورقة البيضاء للإيثريوم":
يمكن إنفاق UTXO أو عدم إنفاقه؛ لا توجد فرصة لعقد متعدد المراحل أو نص يحمل أي حالة داخلية أخرى. وهذا يجعل من الصعب إنشاء عقود الخيارات متعددة المراحل، أو عروض التبادل اللامركزية، أو بروتوكولات التزام التشفير ذات المرحلتين (المطلوبة لحساب المنح بشكل آمن). وهذا يعني أيضًا أنه لا يمكن استخدام UTXO إلا لبناء عقود بسيطة لمرة واحدة، بدلاً من العقود "ذات الحالة" الأكثر تعقيدًا مثل المنظمات اللامركزية، مما يجعل تنفيذ البروتوكولات الفوقية صعبًا. الحالة الثنائية المقترنة بالنقطة العمياء للقيمة تعني أيضًا أن تطبيقًا مهمًا آخر - حدود السحب - غير ممكن.
تطبيق وتحسين وتوسيع نموذج UXTO
قبل تقديم التطبيقات والتحسينات المختلفة لـ UXTO، يجب علينا أولاً تحليل نقاط تحسين UTXO مع الحفاظ على مزاياه، والتي تتلخص بإيجاز على النحو التالي:
1. اختصر معنى الحالة المخزنة في UTXO.
2. الملكية المجردة للدولة.
3. حل مشكلة التنافس على حالة UTXO المشتركة.
في BTC، المعنى الوحيد للحالة هو عدد الرموز المميزة، وعادةً ما يتم تحديد الملكية بواسطة المفاتيح العامة. أما بالنسبة للتنافس على الحالة، فإن BTC غير مصمم للتطبيق اللامركزي، لذلك لا يوجد المشكلة. كن أكثر مشاركة.
Sui
تم تطوير Sui يوفر فريق العمل نوعين من الكائنات: OwnedObject وSharedObject، الأول يعادل UTXO (بشكل أكثر تحديدًا، نسخة محسنة من UTXO)، والأخير يعادل نموذج الحساب/الرصيد، ويمكن استخدام كلاهما في نفس الوقت. هنا هو مرجع إلى وثائق Sui التقنية. الشرح:
يمكن مشاركة الكائن، مما يعني أنه يمكن لأي شخص القراءة أو الكتابة إلى الكائن. على النقيض من الكائن المملوك القابل للتغيير (والذي يمكن أن يحتوي على كاتب واحد فقط)، يتطلب الكائن المشترك إجماعًا على ترتيب عمليات القراءة والكتابة.
في سلاسل الكتل الأخرى، تتم مشاركة كل كائن. ومع ذلك، يمكن لمبرمجي Sui في كثير من الأحيان اختيار استخدام OwnedObject أو SharedObject أو مزيج من الاثنين معًا لتنفيذ حالة استخدام محددة. قد يكون لهذا الاختيار آثار على الأداء والأمان وتعقيد التنفيذ.
في Sui، الكائنات المملوكة تشبه UTXO. يمكن لمالكها فقط تشغيلها، والكائنات لها أرقام إصدار. "لا يمكن تشغيل إصدار معين من الكائن إلا بواسطة مالكه." "أنفق مرة واحدة" ، لذا فإن "إصدار معين من الكائن" يعادل في الأساس UTXO.
أما بالنسبة لمشكلة تنازع الدولة فيمكن تحقيقها من خلال المعالجة الخاصة (الفرز المحلي، المشابه للوقود) SharedObject.
كاردانو
يستخدم كاردانو الموسعة نموذج UTXO، والمختصر بـ eUTXO. يدعم eUTXO قابلية برمجة أعلى مع الجمع بين مزايا نموذج Bitcoin UTXO.
في كاردانو، يتم توسيع معنى الحالة بشكل أكبر من خلال البرامج النصية، ويتم تعريف ملكية حالتها بطريقة أكثر عمومية، أثناء استخدام مجموعات UTXO لمحاولة تجنب مشاكل التنافس على الحالة. لتلخيص ذلك على وجه التحديد، تم تعزيز eUTXO في جانبين:
1. هناك عناوين أكثر عمومية في نموذج eUTXO. لا يمكن أن تعتمد هذه العناوين على تجزئة المفتاح العام فحسب، بل يمكن تعريفها أيضًا بناءً على أي منطق، وتحت أي ظروف يمكن إنفاق eUTXO، أي أنه يمكن برمجة ملكية الدولة.
2. بالإضافة إلى العناوين والقيم، يمكن أن تحمل المخرجات (تقريبًا) بيانات عشوائية، أي يمكن برمجة معنى الحالة من خلال البرامج النصية.
على وجه التحديد، يتيح eUTXO للمستخدمين إضافة بيانات عشوائية مشابهة لتنسيق JSON إلى In UTXO ، وتسمى هذه البيانات مسند. يسمح Datum للمطورين بتوفير وظائف تشبه الحالة للنصوص البرمجية، والتي ترتبط بـ UTXO محدد.
في الوقت نفسه، يمكن للمعاملات على Cardano أن تحمل معلمات تتعلق بمستخدمين محددين، دعا للمخلص. يسمح المخلص لمنشئي المعاملات بتحديد كيفية استخدام UTXOs، والتي يمكن أن يستخدمها مطورو التطبيقات اللامركزية لأغراض مختلفة.
عند التحقق من المعاملة، يعمل البرنامج النصي للتحقق باستخدام البيانات والمخلص وسياق يحتوي على بيانات المعاملة. ويحتوي البرنامج النصي على منطق استخدام UTXO عند استيفاء الشروط.
تجدر الإشارة إلى أن eUTXO لا تزال تستخدم البرامج النصية لإكمال مهام التوسيع، وهو ما يختلف كثيرًا عن "العقود الذكية" بالمعنى التقليدي (يعتقد المؤسس تشارلز هوسكينسون أن الاسم الفعلي يجب أن يكون "العقود الذكية" ). التحقق من البرمجة"، لكن مصطلح "العقد الذكي" مقبول بسهولة أكبر في السوق).
الأعصاب
في الأعصاب ( (أي CKB)، يتم تجريد معنى الحالة بواسطة الكتابة المطبوعة، ويتم تجريد ملكية حالتها بواسطة lockscript. رمز خلية نموذج تحسين UTXO البسيط هو كما يلي:
pub struct CellOutput { p>
سعة النشر: السعة،
بيانات النشر: Vec<u8>,
قفل الحانة: البرنامج النصي,
نوع الحانة_: الخيار<Script>,
بالنسبة للتنافس على الحالة بالنسبة لمشكلات الاستخدام، يقوم CKB حاليًا بترويج البحث حول المعاملة المفتوحة. يمكن للمستخدمين اقتراح UTXO جزئي للإشارة إلى غرض المعاملة، وبعد ذلك سيقوم صانع التوفيق بمطابقته في معاملة كاملة.
نموذج الخلية لـ Nervos هو نسخة "معممة" من UTXO. وأوضح جان علمه المفصل في منتدى Nervos:
انتباه الطبقة الأولى التركيز تصميم CKB مع الطبقة الأولى حيث أن هدف التصميم هو الحالة بشكل طبيعي. يقسم الإيثريوم تاريخ المعاملات وتاريخ الحالة إلى بعدين. فالكتل والمعاملات تعبر عن الأحداث التي تؤدي إلى ترحيل الحالة بدلاً من الحالة نفسها. ومع ذلك، يتم دمج المعاملات والحالات في بروتوكول البيتكوين في بُعد واحد. المعاملات هي حالات، والحالات هي المعاملة بنية ذات مكانة باعتبارها جوهرًا.
وفي الوقت نفسه، فإن الحالة التي يريد CKB التحقق منها والحفاظ عليها لفترة طويلة ليست مجرد رقم بسيط (nValue)، ولكنها أي بيانات مبنية على الإجماع يعتقد الناس أنها ذات قيمة. من الواضح أن هيكل مخرجات معاملات Bitcoin لا يمكنه تلبية هذا الطلب، لكنه أعطانا ما يكفي من الإلهام: نحتاج فقط إلى تعميم nValue وتغييره من مساحة لتخزين الأعداد الصحيحة إلى مساحة يمكنها تخزين البيانات التعسفية، وسنحصل على أكثر عمومية " CTxOut"، أو الخلية.
في الخلية، تصبح nValue حقلين: السعة والبيانات. يمثل هذان الحقلان معًا جزءًا من مساحة التخزين. السعة عبارة عن عدد صحيح، يشير إلى حجم المساحة (بالبايت). ( الرقم هو الوحدة)، البيانات هي المكان الذي يتم فيه حفظ الحالة، ويمكن كتابة أي بايت؛ أصبح scriptPubKey قفلًا، فقط تم تغيير الاسم، والذي يعبر عن مالك مساحة الإجماع هذه - الشخص الوحيد الذي يمكنه فقط من يوفر المعلمات (مثل التوقيع) لتنفيذ برنامج القفل بنجاح يمكنه "تحديث" الحالة في هذه الخلية. يجب أن يكون عدد البايتات التي تشغلها CellOutput بالكامل أقل من السعة أو مساوية لها. هناك العديد من الخلايا في CKB، ويشكل جمع كل هذه الخلايا الحالة الحالية الكاملة لـ CKB، وما يتم تخزينه في الحالة الحالية لـ CKB هو معرفة عامة عشوائية، ولم تعد مجرد عملة رقمية معينة.
لا تزال المعاملات تمثل تغييرات/هجرات الحالة. يتم تغيير الحالة أو "تحديث" محتوى الخلية فعليًا من خلال التدمير والإنشاء (لا يؤدي ذلك في الواقع إلى تعديل المحتوى الموجود في الخلية الأصلية). تقوم كل معاملة في الواقع بتدمير مجموعة من الخلايا وإنشاء مجموعة جديدة من الخلايا؛ سيكون للخلايا المنشأة حديثًا مالكون جدد وتقوم بتخزين بيانات جديدة، ولكن السعة الإجمالية للخلايا المدمرة تكون دائمًا أكبر من أو تساوي الخلايا الجديدة. ويضمن مقدار السعة التي تم إنشاؤها عدم تمكن أي شخص من إصدار سعة إضافية حسب الرغبة. نظرًا لأنه يمكن نقل السعة ولا يمكن إصدارها بشكل إضافي، فإن امتلاك القدرة يعادل امتلاك مقدار مماثل من مساحة حالة الإجماع. السعة هي أصل أصلي في شبكة CKB. إن تدمير الخلية يعني أنها "مدمرة" فقط، وعلى غرار UTXO الخاص بالبيتكوين، فإنها تتغير من غير منفقة إلى منفقة ولا يتم حذفها من blockchain. لا يمكن تدمير كل خلية إلا مرة واحدة، تمامًا كما لا يمكن استخدام كل UTXO إلا مرة واحدة.
خصائص هذا النموذج هي:
1. الحالة أولية.
2. المالك صفة من صفات الدولة، ولكل دولة مالك واحد فقط.
3. يتم تدمير وإنشاء الدولة بشكل مستمر.
لذلك، الخلية هي نسخة عامة من UTXO.
الوقود
يعتمد الوقود على أساس في نموذج قائمة الوصول الصارم المحسّن لـ UTXO، يحدد هذا النموذج UTXO جديدًا - عقد UTXO.
كما هو موضح أعلاه، تحتوي UTXO في BTC على سمتين فقط: عدد العملات المعدنية والمالك، بينما يوفر عقد UTXO المزيد من السمات الأساسية، بما في ذلك: عدد العملات المعدنية ومعرف العقد وتجزئة رمز العقد وجذر التخزين. .
في حالة استخدام نموذج تنفيذ عديم الحالة، فإن تجزئة رمز العقد وجذر التخزين مطلوبان فقط في العقد UTXO. في نموذج التنفيذ ذو الحالة، يمكن لـ UTXOs المتعاقدين حذف هذه الحقول، ولكن يلزم وجود عنصر تخزين منفصل من نوع UTXO. معرف UTXO (معرف فريد لكل UTXO يمكن استخدامه كمفتاح في قاعدة بيانات مخزن القيمة الرئيسية) هو نقطة الإخراج التي أنتجت UTXO، أو شكل مختلف منها (على سبيل المثال، تجزئة نقطة الإخراج وحقولها ).
في هذا النموذج، يمكن لأي شخص استدعاء عقد UTXO، مثل العقود الذكية.
تجدر الإشارة إلى أن Fuel يوفر وظائف أقرب إلى العقود الذكية بدلاً من البرامج النصية، كما أن القيود المفروضة على نموذج UTXO نفسه تسبب مشكلات لا حصر لها عند التقديم استنادًا إلى VM. والأكثر شيوعًا هو أنه مشكلة تزاحم UTXO. بشكل عام، هناك ثلاثة حلول: الأول هو معالجتها خارج السلسلة مثل Rollup، والآخر هو القيام بأعمال فرز إضافية مقدمًا، ويستخدم Fuel الأخير، والثالث مذكور للتو في قسم CKB معاملة مفتوحة، أي أنه يمكن لكل مستخدم إرسال جزء من المعاملة، ثم يقوم صانع المطابقة (على غرار جهاز التسلسل) بمطابقتها في معاملة كاملة، والحل المقابل لـ BTC هو PBST.
النهاية
بالتمشيط، فهم المبادئ الأساسية لـ UTXO، ومعرفة مزايا وعيوب نموذجها ونموذج الحساب/الرصيد لـ ETH، والحصول على فهم أوضح لمفهوم UTXO والامتدادات المرتبطة به.
باعتباره أحد مبادئ التصميم الأساسية للبيتكوين، يلعب نموذج UTXO دورًا مهمًا في ضمان أمان المعاملات وإمكانية تتبعها. ومع التطوير المستمر لتقنية blockchain، يتطور نموذج UTXO أيضًا باستمرار. والتوسع (مثل EUTXO، والخلية، وقائمة الوصول الصارمة، وما إلى ذلك) يوفر المزيد من الإمكانيات لمعاملات وإدارة الأصول الرقمية. من خلال الدراسة المتعمقة وفهم مفهوم UTXO وامتداداته ذات الصلة، يمكنك فهم blockchain بشكل أفضل جوهر التكنولوجيا وإرساء أساس أكثر صلابة للابتكار والتطبيق في المستقبل.