حذف ماینرها و سازندگان بلاک ، با استفاده از قرارداد هوشمند



۱۱ آذرماه ۱۳۹۷



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



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



قرارداد هوشمند مولد بلاک BPSC چه مشخصاتی دارد و چگونه کار می کند ؟



تقریبا یک سال پیش بود که ما متوجه شدیم ، احتمالا قراردادهای هوشمند می توانند جایگزین ماینرها و سازندگان بلاک باشند . به همین دلیل بیشتر و بیشتر موضوع را بررسی کردیم و نتایج خوبی گرفتیم . امروز با اطمینان می گوئیم بلاکچین های آینده احتیاجی به ماینرها و سازندگان بلاک ندارند . یک یا چند قراردادهوشمند «اصلی» می توانند وظایف سازندگان بلاک را رایگان و با دقت انجام دهند و تمام ویژگی های قبلی و قدیمی بلاکچین حفظ شود . حتی می توانند امتیازات زیادی را برای بلاکچین های جدید ایجاد کنند که تا به حال امکان پذیر نبوده است . مثلا می توانند تراکنش های مهم مالی را از بقیه ترکنش ها جدا کنند ، به این شکل که به جای تولید یک بلاک درکسری از ثانیه ، دو بلاک فرد و زوج تولید کنند و بلافاصله هر دو بلاک را پشت سرهم به زنجیره اصلی اضافه نمایند . به این ترتیب مثلا بلاک های فرد مربوط به تراکنش های مهم مالی خواهد بود و بلاک های زوج به بقیه تراکنش ها اختصاص می یابد . درادامه به اختصار، قرارداد هوشمند مولد بلاک Block Producer Smart Contract را BPSC می گوییم .



Example





قرارداد هوشمند BPSC به چند طریق می تواند روی یک شبکه غیرمتمرکز کارکند . صرفا برای انتقال مفهوم و تشریح عملکرد آن ، یک مثال ساده سازی شده را ذکرمی کنیم تا امتیازات این روش بخوبی قابل لمس باشد . به این ترتیب که ، بلاکچین جدید خود و قرارداد هوشمند BPSC آن را روی یک شبکه درحال کار ، یعنی شبکه اتریوم تصور خواهیم کرد :


یک - ابتدا با یک قرارداد هوشمند ساده ، تعداد یک میلیون ازنوع خاصی توکن های ERC20 را بصورت یکجا و با نام فرضی آکا توکن ، خلق می کنیم و همه آنها را فعلا دروالت قرارداد (آکا والت) نگهداری می نمائیم . بلاکچین جدیدی که راه اندازی خواهیم کرد ، فقط برای ثبت تراکنش های همین یک میلیون آکا توکن خواهد بود .


دو- تعداد ده عدد والت برای مشتریان آکا توکن ها درنظر می گیریم .


سه - ویژگی مهم آکا توکن ها و یازده والت ( آکا والت بعلاوه ، ده والت مشتری) موجود این است که فقط و فقط آکا توکن ها می توانند ازاین یازده والت ، به یک آدرس خاص ارسال شوند . همچنین فقط و فقط آکا توکن ها می توانند از همان آدرس خاص ، دریافت شوند . این آدرس یگانه ، آدرس والت قرارداد هوشمندی است که مولد بلاک برای شبکه ما خواهد بود . یعنی آدرس والت BPSC می باشد .


چهار- ویژگی اصلی BPSC این است که آکا توکن ها را فقط می تواند از این یازده والت دریافت کند و فقط می تواند به این یازده والت آکا توکن بفرستد .


پنج - دستورات متعددی به BPSC می دهیم ، از جمله از آن می خواهیم بلافاصله پس از دریافت آکا توکن ازهرکدام از یازده والت ، عین همان توکن ها را برای والتی که مقصد نهایی است بفرستد. همیشه باید مقصد نهایی توسط فرستنده تیکت شده باشد . اگر به هردلیلی BPSC نتواند آکا توکن ها را به مقصد نهایی ارسال کند ، بلافصله باید آکا توکن ها را به فرستنده برگرداند . ضمنا BPSC موظف است درهمان لحظه لیست تراکنش های موفق را ( گرفتن توکن از فرستنده و ارسال توکن به گیرنده ) ذخیره کند و برای تهیه بلاک جدید ، کد گذاری و پیش خود حفظ نماید .


شش - می توانیم از BPSC بخواهیم همیشه تراکنش های بالای هزار آکا توکن را در بلاک های فرد و کمتر از هزارتا را در بلاک های زوج ثبت کند . دراین حالت همیشه هردو بلاک فرد و زوج ( مثلا بلاک های شماره ۱۱۵ و ۱۱۶) پشت سرهم دریک لحظه ثبت می شوند ، ولی به هرحال توانسته ایم تراکنش های مهم را به این طریق تفکیک نمائیم . همچنین می توانیم برای این نوع درخواست ها ، تیکت دوم تعریف کنیم تا فرستنده ، علاوه بر یادداشت آدرس گیرنده نهایی در تیکت اول ، در تیکت دوم درخواست خود را برای BPSC ارسال کند .


هفت - حالا اگر آکا والت از طریق BPSC نفری صد هزار آکا توکن برای مشتریان خود ارسال کند ، اولین تراکنش ها در BPSC ذخیره می شوند و ازاین به بعد مشتریان نیز می توانند مبادله آکا توکن را از طریق BPSC بین خودشان شروع نمایند و BPSC هرلحظه مشغول ثبت تک تک تراکنش های موفق خواهد بود .


هشت - اطلاعات جمع آوری شده توسط BPSC اطلاعات اصلی از تراکنش های آکا توکن می باشد و هیچ خدشه ای به آن وارد نیست و BPSC بعنوان امین ، وکیل و رازدار همه مشتریان می تواند با بالاترین استانداردهای کد گذاری ، بلاک های جدید تولید و ثبت کند و بلاکچین جدید ما را روی شبکه غیرمتمرکز زنده نگه دارد .


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


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


مثال بالا برای تصویرسازی مفهوم بلاکچین های جدید یا به اختصار، بلاکچین هوشمند Smart Blockchain بر روی یک شبکه غیرمتمرکز درحال کار بود . تا آنها نیز بتوانند به نسل جدید بلاکچین ها بپیوندند ! ولی شاید مقصود اصلی ، راه اندازی یک بلاکچین هوشمند کاملا جدید باشد که یک یا چند BPSC بتوانند کار ساخت بلاک را درآن شبکه ، برای همیشه بعهده بگیرند . مسلما این کار ، مطابق همین الگوی مثال بالا میسراست . حتی احتمالا راه اندازی شبکه های جدید درعمل ، آسان تر ازتغییرات روی بلاکچین های درحال کار باشد .



توضیحات بیشتری راجع به عملکرد قرارداد هوشمند مولد بلاک BPSC



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


یک - آیا دراین روش ، خطر دوبار خرج کردن Double Spending وجود دارد؟ این روش مانند یک شبکه همتا به همتای مرسوم عمل نمی کند ولی درعین حال به هیچ نهاد مالی و یا واسطه دیگری احتیاج ندارد . ما بدون پرداخت هزینه وظایف نهاد مالی واسطه را به BPSC می سپاریم . به همین دلیل در این روش خطر دوبار خرج کردن Double Spending وجود ندارد . الگوریتم هایی مثل «اثبات کارPOW» ، «اثبات سهام نمایندگی شده DPOS» و .... هیچ کارائی و جایگاهی نخواهند داشت ، زیرا بلاک ساخته شده توسط BPSC کاملا معتبراست و احتیاجی به اجماع و اثبات ندارد.


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


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


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



Reciprocal services between Blockchain and Smart Contract





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



کلام آخر



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




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



۱۱ آذرماه ۱۳۹۷