اهمیت اجماع در سیستم های غیر متمرکز (بخش پنجم)

پروتکل اثبات زمان انتظار

فاکتور های مهمی در طراحی اولیه هر پروژه دخیل هستند و پروژه های بلاکچینی نیز از این منوال مستثنی نمی باشند، یکی از موارد مهم که باید مورد تصمیم گیری قرار گیرد انتخاب پروتکل اجماع یا Consensus است و از فاکتور های مهم در طراحی یا انتخاب پروتکل اجماع مناسب هر پروژه بلاکچینی تعیین نوع آن بلاکچین می باشد. آیا عضویت در شبکه بلاکچین مورد نظر برای عموم آزاد است یا برای اینکه بتوان در آن شبکه فعالیت نمود باید از موجودیتی کسب اجازه کرد؟ آیا می توان به صورت ناشناس در آن به فعالیت پرداخت یا اینکه قبل از عضویت باید احراز هویتی صورت گیرد؟

بلاکچین هایی که فعالیت در آنها برای عموم آزاد باشد به بلاکچین عمومی یاPublic Blockchain  معروف هستند و بلاکچین هایی که برای فعالیت نیاز به احراز هویت ندارند با عنوان Permissionless مورد اطلاق قرار می گیرند، در مقابل بلاکچین هایی که برای عموم باز نباشند به Private Blockchain و آن دسته که قبل از فعالیت نیاز به احراز هویت دارند به Permissioned Blockchain ها معروف هستند.

pub vs priv - اهمیت اجماع در سیستم های غیر متمرکز (بخش پنجم)

به عنوان مثال شبکه بلاکچینی معروف بیت کوین یک شبکه عمومی و Permissionless است و هر فردی که توان و تمایل تهیه دستگاه ماینر را داشته باشد می تواند به فعالیت در شبکه بیت کوین بپردازد. همانطور که در بخش های پیشین به این مقوله پرداخته شد شبکه بیت کوین اگرچه راهکاری عظیم در دنیای مالی ارائه نمود ولی برای اینکه به عنوان یک شبکه و سیستم مالی کامل مورد استفاده قرار بگیرد نیاز به بهینه سازی هایی نیز دارد و از آن جمله بهبود پروتکل PoW در آن است.

در شبکه بیت کوین ماینر های جدیدی که وارد شبکه می شوند مراحل احراز هویت را نخواهند گذراند به دلیل ناشناس بودن آنها نمی توان ماینر های خاطی را برای عمل اشتباهشان مورد تنبیه قرار داد به همین دلیل برای ماینری که کارش را درست انجام می دهد جایزه ای در نظر گرفته می شود که همزمان مفهوم سکه های جدید ارائه شده توسط سیستم را نیز در بر می گیرد.

در تلاش برای ایجاد پروتکل های بهینه تر، پروتکل Proof of Elapsed Time یا اثبات زمان انتظار، توسط شرکت اینتل ارائه شد که بیشتر برای شبکه های بلاکچینی خصوصی و نیازمند مجوز مناسب دیده می شود. شرکت اینتل در سال ۲۰۱۶ با بهینه سازی روال PoW پروتکل جدید POET را معرفی نمود که در آن تمام نود های درون شبکه به صورت تصادفی یک عدد را به عنوان زمان انتظار تولید کرده و سپس به حالت استراحت می روند تا این زمان سپری شود، هر نودی که مدت زمان انتظارش کوتاه تر بود در موعد مقرر به تولید بلوک جدید پرداخته و آن را در شبکه به اشتراک می گذارد. به همین منوال دیگر نود های درون شبکه نیز در زمان مقررشان به تولید بلوک خواهند پرداخت.

اما این شیوه قبل از اینکه اجرایی شود نیاز به حصول اطمینان از دو مسئله دارد، اول اینکه مطمئن شود نود ها عمل انتخاب زمان انتظار را به صورت تصادفی انجام می دهند و دیگر اینکه تا انتهای زمان انتظار به فعالیت تولید بلوک جدید مشغول نشوند. با در نظر گرفتن این مسئله ورود و پیشنهاد این راه حل توسط شرکت تولید کننده پردازنده ها، اینتل منطقی به نظر خواهد رسید چرا که راه حل در دستان تراشه های جدید این شرکت است.

در مفاهیم مربوط به پردازش های غیر متمرکز مسئله ای با عنوان Leader Election با مفهوم اختصاص یک پروسه خاص برای ایجاد هماهنگی به جهت انجام فعالیت های مختلف در شبکه وجود دارد به نحوی که قبل از انجام این تخصیص هیچ عضو شبکه از نتیجه آن خبر نداشته باشد یا قادر به ایجاد ارتباط با عنصر تاثیر گذار شبکه در آن لحظه نباشد. پیش از این برای چنین چالشی تکنیک هایی بوجود آمده که به عنوان مثال می توان به تکنیک های Mega Merger، Yo-yo و Shout  اشاره نمود.

شرکت اینتل برای تکمیل پازل POET دست به تولید و ارائه تکنولوژی جدیدی به نام Software Guard Extension یا SGX زد که موجب ایجاد محیطی امن برای اجرای پروسه های مربوط به اپلیکیشن ها خواهد شد که با نام Trusted Execution Environment شناخته می شود. توسط این تکنولوژی بخشی از حافظه تحت عنوان Enclaves به پروسه مذکور اختصاص داده می شود که برای پروسه های دیگر قابل خواندن و تغییر نخواهد بود. بخش مربوطه در حافظه توسط پردازنده اصلی رمزنگاری شده و قابل فهم برای پروسه های دیگر نخواهد بود.

SGX - اهمیت اجماع در سیستم های غیر متمرکز (بخش پنجم)

در پروتکل POET توسط این تکنولوژی می توان اطمینان حاصل کرد که پروسه اتفاقی انتخاب زمان انتظار و گذران این زمان توسط نود های درون شبکه به طور صحیح انجام خواهد شد. برای اینکه یک نود وارد شبکه شود شرط اول این است که از تکنولوژی مذکور بهره برده باشد تا بتوان اطمینان حاصل نمود که پروسه های لازم به درستی انجام خواهد شد. هر راند از این پروسه پس از پایان مجددا از نو آغاز خواهد شد و به به این صورت پروسه انجام شده در اثبات کار با بهره وری بیشتر صورت خواهد گرفت.

این پروتکل در پلتفرم تولید بلاکچین Hyperledger Sawtooth و Hyperledger Indy استفاده شده که با زبان های برنامه نویسی Python، Rust، Go و Java Script نوشته شده و با پرتکل POET به امنتیت مورد نیاز دست پیدا کرده است.

Indy - اهمیت اجماع در سیستم های غیر متمرکز (بخش پنجم)

مجتبی عنایتی