توضیحی در رابطه با سیستم کاری بیتکوین

لایه هماهنگی یا توافق جمعی (consensus) در هر سیستمِ مبتنی بر زنجیره بلاک یا همان بلاکچین، یکی از مهمترین لایه هاست. به رغم وجود این احتمال که اعضایی در سیستم وجود خواهند داشت که قابل اعتماد نیستند و عمدا یا سهوا باعث ایجاد مشکل در روند اضافه شدن تراکنشها به سیستم خواهند شد، این لایه قسمتی ست که با وجود اینگونه مسائل، باعث می شود بتوان به سیستم اعتماد کرد.

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

گواه اثبات کار

مخترع یا مخترعین بیتکوین که با نام ساتوشی ناکاموتو شناخته می شوند، روشی را با عنوان گواه اثبات کار یا Proof of Work معرفی کرده اند. این روش بدین صورت است که هر عضو سیستم که توانایی پردازش محاسباتی داشته باشد، امکان ایجاد بلاک دارد. الگوریتم گواه اثبات کار به شکل ساده شده به صورت زیر است:

۱٫ از سرآیند (header) بلاک یک هش تولید می کنید.

۲٫ یک عدد تصادفی به انتهای هش تولید شده اضافه می کنید.

۳٫ خروجی بدست آمده را دوباره هش می کنید.

۴٫ خروجی بدست آمده باید از میزان سختی شبکه که یک عدد مشخص شده توسط سیستم است کمتر باشد. در غیر اینصورت باید به مرحله دوم برگردید و دوباره سعی کنید.

۵٫ به همه اطلاع بدهید که موفق شده اید و مقدار تصادفی و هش بدست آمده و بلاک را برای همه کسانی که با آن ها در ارتباط هستید بفرستید.

۶٫ با استفاده از هش بدست آمده و اطلاعاتی که وجود دارد بسته بعدی را تولید کنید.

۷٫ پایان

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

تا کنون نتیجه این است که امکان ایجاد بلاک و میزان قدرت پردازش (هش/ثانیه) رابطه مستقیم دارند و هر عضوی که توانایی پردازشی بیشتری داشته باشد، احتمال بیشتری برای بدست آوردن نتیجه درست و در نهایت ایجاد بلاک دارد.

چطور با انشعاب ها (fork) برخورد می شود؟

اگر دو گره در دو طرف زمین، مثلا استرالیا و کانادا، هر دو در زمانی نزدیک به هم یک بلاک را استخراج (ماین) کنند زنجیره به دو دسته تقسیم خواهد شد، گروهی از اعضا که به عضو کانادایی نزدیکتر هستند بلاک استخراج شده عضو کانادایی را به عنوان بلاک قبلی در نظر گرفته و مشغول استخراج بلاک بعد بر پایه آن می شوند و گروه دیگر مشغول به استخراج بر پایه بلاک عضو استرالیایی خواهند شد. وظیفه لایه توافق جمعی یا اجماع کل (consensus) است که بین همه گره ها اجماع ایجاد کند و همه یک بلاک را به عنوان بلاک قبلی بپذیرند. در سیستم گواه اثبات کار(proof-of-work) انتخاب گره اصلی به صورت ضمنی اتفاق می افتد؛ یعنی به این صورت که هر عضو بین بلاک هایی که دریافت کرده یکی را به صورت اتفاقی انتخاب می کند و مشغول کار بر روی بلاک بعد از آن می شود. اولین بلاک بعدی که بر روی این بلاک ایجاد شود برای همه اعضای دیگر مخابره می شود و اعضا همیشه کار را بر روی بلاکی که در شاخه کوتاهتر است متوقف می کنند و شاخه طولانی تر را به عنوان شاخه درست در نظر می گیرند. در مثال ما اگر سیستمی در آلمان بر روی بلاکی که در کانادا استخراج شده، یک بلاک دیگر استخراج کند و برای دیگران بفرستد، بقیه اعضا بلاک دریافتی از استرالیا را نادیده می گیرند و به ادامه کار بر روی بلاک ارسال شده از آلمان خواهند پرداخت.

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

ساز و کار انگیزشی چیست؟

چه چیزی باعث میشود که یک فرد انگیزه داشته باشد تا در این سیستم یکی از اعضای استخراج کننده باشد؟ در پروتکل ناکاموتو هر کسی که بلاکی استخراج کند، می تواند در آن بلاک یک تراکنش داشته باشد که حاوی پاداش معینی برای خود اوست. مقدار این پاداش همیشه ثابت نیست و با گذر زمان و بر اساس شماره بلاک تعیین می شود. پس از گذر از تعداد معینی بلاک (۲۱۰،۰۰۰) این مقدار نصف می شود و در دراز مدت مقدار کاهشی دارد؛ تا زمانی که همه بیتکوین های ممکن (حد اکثر ۲۱،۰۰۰،۰۰۰ ) استخراج بشوند. این سازوکار جهت جلوگیری از عرضه بیش از حد بیتکوین و در نتیجه ی آن ناهماهنگی در عرضه و تقاضا و در نهایت ایجاد تورم ساخته شده است.

چه مشکلاتی وجود دارند؟

حمله ۵١٪

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

استخراج خودخواهانه

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

در این نوع حمله، فرد حمله کننده در واقع با نگه داشتن بلاک هایی که پیدا کرده، و انتشار آن ها بصورت یکجا، سایر استخراج کنندگان را برای استخراج بر روی شاخه خودش ترغیب می کند. با این کار حمله کننده سود بیشتری در کوتاه مدت بدست خواهد آورد و سود سایر استخراج کنندگان در بلند مدت کمتر خواهد شد. با این کار، حمله کننده می تواند قدرت محاسباتی بیشتری برای استخر استخراج خود جمع کند تا به قدرت محاسباتی اش به ۵۱درصد برسد و بتواند حمله ۵۱درصدی انجام دهد. این حمله توسط Emin Gun Sirer، استاد دانشگاه Cornell معرفی شده، اما تا به امروز نشانی از انجام چنین حمله ای دیده نشده است.

رشد به سمت تمرکز

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

هدر رفتن توان محاسباتی

الگوریتم گواه اثبات کار تنها یک نوع محاسبه نیاز دارد و آن هش کردن مقادیر متنی است. سیستم هایی که برای استخراج استفاده می شوند تنها مشغول هش کردن و مقایسه مقدار آن با مقدار هدف هستند. همه استخراج کننده ها مشغول انجام این عمل هستند و با پیدا شدن یک پاسخ توسط یکی از اعضا، سایر اعضا تمام محاسبات انجام شده را کنار گذاشته و از ابتدا مشغول به انجام محاسبات جدید می شوند. توان محاسباتی ذکر شده، یک توان سرسام آور است (حدود ۳,۱۶۰,۰۰۰ ترا هش بر ثانیه در زمان نگارش این مطلب) این توان علاوه بر نیاز سرسام آوری به انرژی و امکانات، به نظر می رسد که می تواند برای موارد دیگری هم استفاده شود.

عدم امکان مقیاس پذیری

مقاله های بسیاری با این مضمون منتشر شده اند که “سیستم گواه اثبات کار با روش ناکاموتو امکان مقیاس پذیری ندارد” در این مقاله ها ذکر شده که در روشی که ناکاموتو ابداع کرده دو فاکتور زمان تقریبی ایجاد بلاک (درنگ) و حجم بلاک مقادیر اصلی هستند که با تغییر هر کدام، سیستم به سمت ناامن شدن یا سنگین شدن امکان استخراج و در نتیجه حرکت به سمت عدم تمرکز می شود.

نتیجه گیری

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

 



دیدگاه هایی که در این مقاله ارائه شده اند، متعلق به نویسنده می باشند و لزوماً مربوط به Coiniran نمی باشد و نباید به آن نسبت داده شود.



Images via static1.businessinsider.com

2 Comments

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *