ما ينبغي أن نبني blockchain؟

إن تاريخ البشرية كله هو خلاصة مستمرة من السلاسل وخلق سلاسل جديدة أقوى. (مؤلف مجهول)

تحليل العديد من المشاريع blockchain (Bitshares ، Hyperledger ، Exonum ، Ethereum ، Bitcoin ، وما إلى ذلك) ، أنا أفهم أنه من وجهة نظر تقنية ، كلها مبنية على نفس المبادئ. تشبه كتل المباني المنازل التي لها ، على الرغم من تنوعها في التصميمات والديكور والتسميات ، أساس وجدران وسقف ونوافذ وأبواب متصلة ببعضها البعض بطرق معينة. وإذا فهمت المبادئ الأساسية لتصميم المباني ، تعرف على خصائص المواد المستخدمة ، يمكنك تحديد الغرض من منزل معين. في الوقت الحاضر ، نشأ موقف مع سلسلة المفاتيح التي سمعها الجميع عنها ، ولكن قلة منهم يفهمون الهندسة المعمارية ومبادئ العمل. لذلك ، ينشأ سوء فهم لما وكيف يكون من المنطقي استخدام تقنيات blockchain.

في هذه المقالة ، سنقوم بتحليل الخصائص والمبادئ المشتركة لجميع القيود. بعد ذلك ، نلقي نظرة على المهام التي يمكن حلها باستخدام blockchain ولتعزيز المواد التي سنقوم ببناء blockchain صغير ولكن حقيقي على موقعنا الظاهري!

لذلك ، دعونا نتذكر المشاكل التي تم حلها في الأصل blockchain.

أنا متأكد من أن الكثيرين سيقولون عن قاعدة بيانات موزعة وغير مركزية وعامة وغير قابلة للتغيير. ولكن لماذا كان كل هذا مطلوب؟

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

التحدي Blockchain


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

القضايا Blockchain


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

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

الصورة

في عالم مثالي ، يعمل مثل هذا المخطط بشكل رائع ، ولكن في عالمنا ، تنشأ المشاكل التالية:

  1. مشكلة تحديد المشاركين من ناحية والحاجة إلى عدم الكشف عن هوية المعاملات من ناحية أخرى. أي من الضروري تحويل الأموال إلى مستلم محدد حتى لا يعلم أحد بهذه الصفقة ، باستثناء المشاركين في المعاملة. لدى البنوك أرقام حسابات وبطاقات مصرفية مرتبطة بشخص معين أو كيان قانوني ، وتحمي السرية المصرفية معلومات المعاملة. ومن يضمن عدم استخدام AnonymousWorldMoney المشروط للبيانات الشخصية ومعلومات المعاملات لأغراضها الخاصة؟
  2. كيف تتأكد من حصول المستلم على المبلغ الذي تم تحويله إليه بالضبط؟ وبشكل نسبي ، قام المرسل بتحويل 100 دولار ، وتلقى المستلم 10 دولارات. يصل المرسل إلى مكتب AnonymousWorldMoney مع إيصاله ، ويظهر الموظف روايته ، والتي تقول إن المرسل لم ينقل سوى 10 دولارات.
  3. مشكلة بيئة غير موثوق بها ، مثل الاحتيال يسمى الإنفاق المزدوج. يمكن للمشارك عديمي الضمير أن ينفق رصيده عدة مرات حتى يتم نسخ الدفعة إلى جميع الخوادم. بالطبع ، لم يقم أحد بإلغاء نظرية CAP ، وسوف يتحقق التماسك في نهاية المطاف ، ولكن لن يتلقى شخص ما المال مقابل الخدمات أو البضائع المقدمة. لذلك ، إذا لم تكن هناك ثقة كاملة في مؤسسة الدفع أو المشاركين في المعاملات ، فمن الضروري بناء شبكة لا تعتمد على الثقة ، ولكن على التشفير.
  4. يحتوي AnonymousWorldMoney الشرطي على عدد محدود من الخوادم التي قد تصبح غير متاحة عن غير قصد أو عن قصد ضار.
  5. سوف تتخذ AnonymousWorldMoney عمولتها الملموسة.
  6. القدرة على السيطرة. أثناء تشغيل Bitcoin ، اتضح أن الأشخاص لا يريدون فقط تحويل العملات المعدنية إلى بعضهم البعض ، ولكن أيضًا للتحقق من الشروط المختلفة للمعاملة ، ولبرمجة سيناريوهات العمل ، وتنفيذ الإجراءات تلقائيًا حسب الظروف ، إلخ.

كيف blockchain يحل هذه المشاكل


  1. يتم تعريف المشاركين باستخدام زوج رئيسي: خاص وعام ، وخوارزمية التوقيع الرقمي تحدد بشكل فريد المرسل والمستلم ، تاركًا هوياتهم مجهولة.
  2. يتم جمع المعاملات في كتل ، ويتم حساب تجزئة الكتلة ، والتي يتم تسجيلها في الكتلة التالية. أعطى تسلسل تجزئات الكتابة في الكتل تقنية اسم blockchain ، كما أنه يجعل من المستحيل تغيير / حذف الكتل أو المعاملات الفردية من الكتل. وبالتالي ، إذا وقعت معاملة في blockchain ، يمكنك التأكد من أن بياناتها ستبقى دون تغيير.
  3. يتم منع الاحتيال المزدوج الإنفاق من خلال التوصل إلى توافق في الآراء بشأن الشبكة التي ينبغي اعتبار البيانات صحيحة وأيها ينبغي التخلص منها. على شبكة Bitcoin ، تم التوصل إلى توافق في الآراء من خلال إثبات PoW (إثبات العمل).
  4. تتحقق موثوقية تشغيل الشبكة من خلال حقيقة أن blockchain هو الجمهور ، حيث يمكن لكل مشارك إطلاق العقدة الخاصة به ، والحصول على نسخة كاملة من blockchain و ، علاوة على ذلك ، بدء التحقق من المعاملات بشكل مستقل للتأكد من صحتها. تجدر الإشارة إلى أن السلاسل المعاصرة الحديثة تسمح لك بإنشاء ليس فقط بلوك (عام) خاص ، بل وأيضًا استخدام المخططات المدمجة.
  5. لن أتخلص تمامًا من العمولة في blockchain ، لأن عليك أن تدفع للأشخاص الذين يدعمون الشبكة ، ولكن في blockchain أثبتت الحاجة إلى العمولة بشكل مقنع لدرجة أنه لا يوجد شك في ضرورة ذلك.
  6. تمتلك البلوكات الحديثة القدرة على تنفيذ منطق الأعمال ، والذي يسمى العقود الذكية في blockchain. يتم تطبيق منطق العقود الذكية بلغات عالية المستوى.

بعد ذلك ، نعتبر هذه الحلول بمزيد من التفصيل.

Blockchain العمارة


مكونات Blockchain


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

الصورة

دورة حياة المعاملات


دعونا نلقي نظرة على دورة حياة المعاملات وتحليلها في أجزاء:

الصورة

تكنولوجيا Blockchain


دعونا نتناول بمزيد من التفصيل الحلول التقنية وعلاقاتها مع بعضها البعض.

تحديد الهوية


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

Private key: 0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f Public key: 0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba Address: 0x3814JnJpGnt5tB2GD1qfKP709W3KbRdfb27V 

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

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

هناك العديد من المقالات التي تحتوي على تفاصيل حول التشفير المستخدم في blockchain ، على سبيل المثال: Bitcoin in باختصار - Cryptography

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

الصورة

أو يمكنك استخدام أساليب أكثر موثوقية ، على سبيل المثال ، لضرب قيمة المفتاح الخاص على الرموز المميزة:

الصورة

المعاملات


لمزيد من المعلومات حول بنية المعاملة ، راجع مقالة Bitcoin باختصار - المعاملة . من المهم بالنسبة لنا أن نفهم أن كل معاملة تحتوي على الأقل على البيانات التالية:

 From: 0x48C89c341C5960Ca2Bf3732D6D8a0F4f89Cc4368 -    To: 0x367adb7894334678b90fe7882a5b06f7fbc783a -    Value: 0.0001 -   Transaction Hash: 0x617ede331e8a99f46a363b32b239542bb4006e4fa9a2727a6636ffe3eb095cef -   

بعد ذلك ، يتم توقيع المعاملة باستخدام مفتاح خاص وإرسالها (راجع التفاصيل حول تشغيل Bitcoin في بروتوكول باختصار ) إلى جميع العقد في blockchain التي تتحقق من صحة المعاملات. خوارزمية التحقق من المعاملة غير بديهية وتتضمن 24 خطوة .

كتل المعاملات


بعد التحقق من صحة المعاملات ، تشكل العقد كتل منها. بالإضافة إلى المعاملات ، تتم كتابة تجزئة الكتلة السابقة ، ورقم (عداد Nonce) إلى الكتلة ، ويتم حساب تجزئة الكتلة الحالية باستخدام خوارزمية SHA-256. يجب أن يكون التجزئة شروط التعقيد المعمول بها. على سبيل المثال ، على شبكة Bitcoin ، يتغير تعقيد التجزئة تلقائيًا كل أسبوعين حسب سعة الشبكة بحيث يتم إنشاء الكتلة كل 10 دقائق تقريبًا. يتحدد التعقيد بالشرط التالي: يجب أن يكون التجزئة الموجود أقل من عدد محدد مسبقًا. إذا لم يتم استيفاء هذا الشرط ، تتم إضافة 1 إلى Nonce ، ويتكرر حساب التجزئة. لتحديد التجزئة ، يتم استخدام حقل Nonce ، لأن هذه هي البيانات الوحيدة في الكتلة التي يمكن تغييرها ، والباقي يجب أن يبقى على حاله. يجب أن يكون للتجزئة الصحيحة عدد معين من الأصفار في البداية ، على سبيل المثال ، أحد التجزئات الحقيقية:

 000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91 

إن العثور على علامة التجزئة بنجاح هو دليل على العمل المنجز (إثبات العمل ، PoW) لشبكات Bitcoin أو Ethereum. وتسمى عملية العثور على التجزئة التعدين ، عن طريق القياس مع تعدين الذهب. الاسم يحدد بدقة جوهر العملية ، لأنه هناك تعداد بسيط للخيارات ، وإذا وجد شخص ما تجزئة مناسبة ، فهذا حظ سعيد حقًا. هذه هي الطريقة للعثور على كتلة صلبة من الذهب الحقيقي بأطنان من الشوائب. المكافأة للكتلة الآن هي 12.5 BTC وإذا قمت بضرب 3900 دولار حسب سعر صرف البيتكوين الحالي ، فإنك تحصل على أكثر من كيلوغرام من الذهب الخالص. هناك شيء للقتال من أجل!

بعد العثور على التجزئة بنجاح ، تتم كتابة الكتلة والتجزئة الموجودة نفسها في blockchain بواسطة الكتلة التالية. يمكن العثور على مزيد من التفاصيل حول بنية الكتل في مقالة Bitcoin في Blockchain باختصار ، وسأقدم أدناه مخططًا مبسطًا:

الصورة

يبدأ blockchain بكتلة ليس لديها بعد تجزئة للكتلة السابقة. لا يوجد سوى كتلة واحدة من هذا القبيل في blockchain ولها اسمها Genesis block. الكتل المتبقية لها نفس البنية وتختلف فقط في عدد المعاملات. يمكن عرض المعاملات والكتل الحقيقية التي يتم إنشاؤها حاليًا في Bitcoin أو Ethereum في Block Explorer .

يقتصر حجم الكتل في Bitcoin على 1 ميغابايت وبحد أدنى من المعلومات في معاملة تبلغ حوالي 200 بايت ، يمكن أن يكون الحد الأقصى في الكتلة حوالي 6000 معاملة. من هنا ، بالمناسبة ، أداء Bitcoin ، الذي يضحك الجميع: يتم إنشاء كتلة كل 10 دقائق تقريبًا * 60 ثانية = 600 ثانية ، مما يوفر أداءً رسميًا يبلغ حوالي 10 TPS. على الرغم من أنه في الواقع - هذا ليس الأداء ، ولكن خوارزمية تنفيذها بوعي من العمل. Ethereum فقط جعل الوقت جيل كتلة من 15 ثانية للمنافسة. والإنتاجية أقلعت رسميا. لذلك ، في المقاطع التي تستخدم PoW كتوافق ، من غير المجدي عمومًا مقارنة الأداء ، لأنه يعتمد بشكل مباشر على تعقيد حساب ذاكرة التخزين المؤقت ، والتي يمكن تخصيصها لأي.

الشوك


وماذا يحدث ، على سبيل المثال ، إذا وجدت العديد من العقد تجزئات تفي بشروط التعقيد ، ولكن لها معان مختلفة (بعبارة أخرى ، توصل إلى إجماع مختلف) وكتبت كتل في blockchain؟ دعونا نرى كيف يحمي blockchain نفسه من هذا الموقف. في هذه الحالة ، يحدث ما يسمى بالشوكة ('fork') ، ويحتوي blockchain على نسختين من السلسلة:

الصورة

ماذا يحدث بعد ذلك؟ علاوة على ذلك ، يبدأ جزء من الشبكة في العمل على كتلة N + 2 من سلسلة واحدة ، وجزء من آخر:

الصورة

سيتم العثور على بعض هذه الكتل في وقت مبكر وإرسالها إلى blockchain ، وبعد ذلك ، وفقًا للقواعد ، سيتعين على blockchain التبديل إلى سلسلة أطول وإلغاء جميع المعاملات من الكتلة البديلة:

الصورة

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

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

إجماع


لكتابة كتلة إلى blockchain ، يجب أن تتوصل الشبكة إلى توافق. دعونا نتذكر مهمة تحقيق الإجماع في شبكات اتصالات الكمبيوتر. وضعت المشكلة باعتبارها مهمة الجنرالات البيزنطيين BFT ( التسامح مع الخطأ البيزنطي ). عند حذف وصف مصور لمشاكل الجيش البيزنطي ، يمكن صياغة المشكلة على النحو التالي: كيف يمكن لعقد الشبكة أن تتوصل إلى نتيجة مشتركة إذا كانت بعض عقد الشبكة يمكن أن تشوهها بوعي. توضح الخوارزميات الحالية لحل مشكلة BFT أن الشبكة يمكن أن تعمل بشكل صحيح إذا كان المحتالون أقل من 1/3. لماذا لم يتم تطبيق توافق BFT على شبكة Bitcoin؟ لماذا استخدام PoW؟ هناك عدة أسباب:

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

بالإضافة إلى PoW ، هناك العديد من المشكلات التي يتم إجماعها والتي يتم استخدامها في مجموعات الكتب الحديثة ، على سبيل المثال:

  • PoS (Pro-of-Stake) - في blockchain Hyperledger
  • DPoS (تفويض إثبات الملكية) - على BitShares blockchain
  • تعديلات BFT: SBFT (BFT المبسطة) و PBFT (عملي BFT) ، على سبيل المثال ، في exonum blockchain

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

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

  • تقسم نقاط توافق الآراء المفوضة (DPoS) المشاركين إلى "التصويت" و "المصادقة". حاملي العملات المعدنية (المشاركين في التصويت) يفوضون حقهم في التحقق من المعاملات الموجودة في blockchain وتسجيلها للمشاركين الآخرين. وبالتالي ، يقوم المدققون بجميع أعمال الحوسبة ويحصلون على مكافآت مقابل ذلك ، ويضمن حضور المشاركين في التصويت صدق المدققين ، لأن يمكن تغييرها في أي وقت.
  • يتيح لك الإجماع LPoS (Leased Proof-of-Stake) أن تقوم بتأجير أموالك إلى العقد الأخرى حتى يكون لديهم فرصة أفضل للتحقق من الكتل. وهكذا يمكنك الحصول على عمولة للمعاملات ، بينما لا تشارك في التحقق من المعاملة نفسها ومنع التعدين.

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

  • شاعر (الوقت المنقضي)
  • PoC (إثبات القدرة)
  • PoB (إثبات الاحتراق)
  • PoWeight (إثبات الوزن)
  • PoA (إثبات النشاط) - PoW + PoS
  • PoI (إثبات المستوردين)

نماذج نشر الموثوقية و blockchain


blockchain العامة

يتم تحقيق الاستقرار في Public أو اسم آخر لـ blockchain بدون التفويض من خلال حقيقة أنه يمكن للجميع الاتصال وعرض المعلومات أو حتى توصيل العقدة الخاصة بهم ، والثقة مبنية على توافق آراء PoW.

blockchain الخاصة

خاص أو خاص blockchained إذن . في هذه المجموعات ، لا يمكن إلا لمجموعة معينة من المشاركين (منظمات أو أشخاص) الوصول إلى المعلومات. يتم بناء هذه القيود من قبل المنظمات من أجل زيادة الربح الإجمالي أو الكفاءة. يتم ضمان موثوقيتها من خلال الأهداف المشتركة للمشاركين وخوارزميات الإجماع من PoS و BFT.

Blockchain كونسورتيوم

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

العقود الذكية


لقد أضافت القيود الرئيسية المنفذة بعد Bitcoin ، إلى درجة أو أخرى ، القدرة على تنفيذ العقود الذكية. في جوهره ، العقد الذكي هو معاملة يتم فيها وضع رمز البرنامج للتنفيذ. يتم تنفيذ العقود الذكية على شبكة Ethereum في EVM (Ethereum Virtual Machine). لبدء تنفيذ عقد ذكي ، يجب إطلاقه صراحةً بواسطة معاملة أخرى ، أو يجب الوفاء بالشروط المسبقة للتنفيذ. يتم تسجيل نتائج تنفيذ العقد الذكي أيضا على blockchain. الحصول على البيانات من خارج blockchain أمر ممكن ، ولكنه محدود للغاية.

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

مثال كلاسيكي للوظيفة التي يتم تنفيذها باستخدام العقود الذكية هو مسألة الرموز الخاصة بالـ ICOs. على سبيل المثال ، قمت بتنفيذ عقد ذكي لإصدار 500 مليون متواضع من AlexToken. الرابط في Etherscan هو

صلابة العقد رمز مصدر الذكية
 pragma solidity ^0.4.23; library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. **/ function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. **/ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ // uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return a / b; } /** * @dev Subtracts two numbers, throws on overflow (ie if subtrahend is greater than minuend). **/ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. **/ function add(uint256 a, uint256 b) internal pure returns (uint256 c) { c = a + b; assert(c >= a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". **/ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender account. **/ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. **/ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. **/ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title ERC20Basic interface * @dev Basic ERC20 interface **/ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 **/ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. **/ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; uint256 totalSupply_; /** * @dev total number of tokens in existence **/ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. **/ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); emit Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. **/ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } } contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred **/ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); emit Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. **/ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. **/ function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. **/ function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. **/ function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } /** * @title Configurable * @dev Configurable varriables of the contract **/ contract Configurable { uint256 public constant cap = 1000000000*10**18; uint256 public constant basePrice = 100*10**18; // tokens per 1 ether uint256 public tokensSold = 0; uint256 public constant tokenReserve = 500000000*10**18; uint256 public remainingTokens = 0; } /** * @title CrowdsaleToken * @dev Contract to preform crowd sale with token **/ contract CrowdsaleToken is StandardToken, Configurable, Ownable { /** * @dev enum of current crowd sale state **/ enum Stages { none, icoStart, icoEnd } Stages currentStage; /** * @dev constructor of CrowdsaleToken **/ constructor() public { currentStage = Stages.none; balances[owner] = balances[owner].add(tokenReserve); totalSupply_ = totalSupply_.add(tokenReserve); remainingTokens = cap; emit Transfer(address(this), owner, tokenReserve); } /** * @dev fallback function to send ether to for Crowd sale **/ function () public payable { require(currentStage == Stages.icoStart); require(msg.value > 0); require(remainingTokens > 0); uint256 weiAmount = msg.value; // Calculate tokens to sell uint256 tokens = weiAmount.mul(basePrice).div(1 ether); uint256 returnWei = 0; if(tokensSold.add(tokens) > cap){ uint256 newTokens = cap.sub(tokensSold); uint256 newWei = newTokens.div(basePrice).mul(1 ether); returnWei = weiAmount.sub(newWei); weiAmount = newWei; tokens = newTokens; } tokensSold = tokensSold.add(tokens); // Increment raised amount remainingTokens = cap.sub(tokensSold); if(returnWei > 0){ msg.sender.transfer(returnWei); emit Transfer(address(this), msg.sender, returnWei); } balances[msg.sender] = balances[msg.sender].add(tokens); emit Transfer(address(this), msg.sender, tokens); totalSupply_ = totalSupply_.add(tokens); owner.transfer(weiAmount);// Send money to owner } /** * @dev startIco starts the public ICO **/ function startIco() public onlyOwner { require(currentStage != Stages.icoEnd); currentStage = Stages.icoStart; } /** * @dev endIco closes down the ICO **/ function endIco() internal { currentStage = Stages.icoEnd; // Transfer any remaining tokens if(remainingTokens > 0) balances[owner] = balances[owner].add(remainingTokens); // transfer any remaining ETH balance in the contract to the owner owner.transfer(address(this).balance); } /** * @dev finalizeIco closes down the ICO and sets needed varriables **/ function finalizeIco() public onlyOwner { require(currentStage != Stages.icoEnd); endIco(); } } /** * @title LavevelToken * @dev Contract to create the Lavevel Token **/ contract AlexToken is CrowdsaleToken { string public constant name = "AlexToken"; string public constant symbol = "ALT"; uint32 public constant decimals = 18; } 

والتمثيل الثنائي لكيفية رؤية الشبكة لها
60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029


يمكن العثور على مزيد من التفاصيل حول العقود الذكية في المقالة: ما هي العقود الذكية في Ethereum .

الخاتمة


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

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

ما هو مستقبل blockchain؟ الآن يمكننا التكهن فقط بالطرق الممكنة لتطوير تقنيات blockchain:

  • ستصبح Blockchain نفس تكنولوجيا قواعد البيانات التقليدية مثل SQL أو NoSQL على سبيل المثال لحل مجموعة المهام المحددة الخاصة بها ؛
  • ستصبح Blockchain بروتوكولًا واسع النطاق مثل HTTP للإنترنت ؛
  • سوف Blockchain تصبح الأساس للنظام المالي والسياسي الجديد للكوكب!

في الجزء التالي ، سنرى ما هي القيود الموجودة حاليًا ولماذا يتم استخدامها في مختلف الصناعات.

إنها البداية فقط!

المقالات الثلاثة:


ما ينبغي أن نبني blockchain؟
Blockchain: ماذا يجب أن نبني حالة؟
Blockchain: ماذا يجب أن نبني PoC؟

Source: https://habr.com/ru/post/ar443282/


All Articles