ویتالیک بوترین یکی از همبنیانگذاران شبکه اتریوم و یکی از افراد صاحبنظر در فضای ارزهای دیجیتال است. او طی سالهای اخیر، دیدگاههای خود در مورد مسائل روز دنیای بلاکچین را در بلاگ شخصیاش به تحریر در آورده است. از این رو در مجموعه میهن بلاکچین بر آن شدیم تا با ترجمه نوشتههای وی، خوانندگان را با سیر تاریخی مسائل مهم دنیای رمزارزها آشنا کنیم. مطلبی که در ادامه خواهید خواند در تاریخ ۸ مه ۲۰۱۷ (۱۸ اردیبهشت ماه ۱۳۹۶) منتشر شده است. در این مقاله، ویتالیک ایده بهرهجویی از سختی حل مسائل هماهنگی در تامین امنیت شبکهها را مطرح میکند. با میهن بلاکچین همراه باشید.
دو مساله؛ یک استدلال
اخیرا مرافعه کوچکی بین حامیان دو گروه [بیت کوین] کور (Bitcoin Core) و [بیت کوین] آنلیمیتد (Bitcoin Unlimited) در جامعه کاربری بیت کوین به راه افتاده است؛ مرافعهای که شاید برای پنجاهمین بار است که با میانمایه مشابهی رخ داده است اما با این وجود حائز اهمیت است چرا که نشانگر نکتهای فلسفی در خصوص نحوه کارکرد بلاکچینهاست.
استخر ماینینگ ViaBTC که حامی تغییرات پیشنهادی Unlimited است در توییتی به این مضمون اشاره کرد: «توان پردازشی (hashpower) حرف آخر را میزند»، نکتهای که عموما از جانب طرفداران آنلیمیتد به آن اشاره میشود. آنها اعتقاد دارند که ماینرها نقش بسیار بزرگی در حاکمیت بیت کوین دارند و باید چنین باشد. منطق این گروه عموما چنین است که ماینرها گروهی از کاربران شبکه هستند که سرمایه بزرگ و نقدناپذیری را صرف شبکه کردهاند و انگیزه مالی شدیدی برای موفقیت بیت کوین دارند. گرگ مکسول (Greg Maxwell) – از جانب طرفداران بیت کوین کور – این چنین پاسخ داد: «امنیت بیت کوین تنها به این دلیل بدون مشکل کار میکند که توان پردازشی حرف آخر را نمیزند.»
استدلال طرفداران کور در پاسخ این است: «ماینرها نقش محدودی در سیستم بیت کوین دارند و آن تشکیل بلوک و منظم کردن تراکنشهاست و نباید قدرت تعیین عوامل دیگر، همچون محدودیت سایز بلوک و دیگر قوانین مربوط به صحت بلوکها را داشته باشند. این محدودیتها توسط فول نودها – که توسط کاربران اداره میشوند – تعیین میشوند. اگر ماینرها شروع به تولید بلوکها با اتکا به مجموعه قوانینی متفاوت از قوانینی که نودهای کاربران به آن پایبندند، کنند آن گاه نودهای کاربران این بلوکها را رد خواهند کرد؛ فارغ از آن که ۱۰، ۶۰ یا ۹۹ درصد توان پردازشی شبکه از آن حمایت کند.» پاسخ حامیان آنلیمیتد به این استدلال چیزی شبیه به این جمله است: «اگر ۹۰ درصد توان هش شبکه حامی زنجیرهای باشد که سایز بلوک را افزایش میدهد، حال زنجیره قدیمی با ده درصد توان هش خواهیم داشت که اکنون برای پنج ماه ده برابر کندتر خواهد ماند تا میزان سختی وفق پیدا کند. آیا شما واقعا نرمافزار کلاینت خود را آپدیت خواهید کرد تا قوانین جدید را بپذیرد؟»
بسیاری مخالف استفاده از بلاکچینهای عمومی برای استفادههایی که داراییهای دنیای واقعی را در برمیگیرد یا هر چیزی که در معرض ریسک طرف مقابل (counterparty risk) است، هستند. مخالفتها یا کلی است و مبنی بر این است که ضرورتی بر بهکارگیری بلاکچینهای عمومی در چنین مواردی نیست و یا جزئی است و مبنی بر این است که گرچه ممکن است ذخیره دادهها بر روی زنجیرههای عمومی مزایایی در پی داشته باشد، لیکن سازوکار تجاری آن میبایست خارج از زنجیره اجرا شود.
استدلالی که اغلب مورد استفاده قرار میگیرد این است که اعتماد در این موارد از پیش موجود است – فردی وجود دارد که تعدادی دارایی فیزیکی دارد که پشتوانه داراییهای روی زنجیره اوست و آن فرد همواره میتواند تصمیم گیرد که با داراییها فرار کند یا به وسیله دولتها یا بانکها مجبور شود تا آنها را بلوکه کند. بنابراین نمایش دیجیتالی این داراییها بر روی بلاکچین همانند نصب دری ضدسرقت بر روی خانهای است که پنجرههای آن باز است. به جای این این کار، چنین سیستمهایی باید از زنجیرههای خصوصی و یا حتی راهکارهای سنتی بر پایه سرور استفاده نمایند و شاید بتوانند برخی از راهکارهای رمزنگاری را برای بهبود شفافیت به کار گیرند و این چنین از ناکارآمدی حاصل از قرار دادن همهچیز بر روی بلاکچین جلوگیری نمایند.
بهره بردن از سختی هماهنگی در جهت منافع عمومی
استدلالهای مطرح شده در بالا به شکلی مشابه ایراد دارند. گرچه از لحاظ نظری ممکن است که ماینرها بتوانند ۹۹ درصد از توان هش خود را به زنجیرهای جدید با قوانین جدید (برای آن که وضعیتی را مثال بزنیم که به طور آشکار ناخوشایند باشد، فرض کنید که در زنجیره جدید پاداش ماینینگ افزایش مییابد) اختصاص دهند و حتی با حملات ۵۱ درصد متوالی، زنجیره قبلی را برای همیشه بلااستفاده نمایند و یا همچنین محتمل است که مدیر یک ارز دیجیتال بر پایه دارایی متمرکز به تعهدات خود عمل ننماید و توکن دیجیتال جدیدی ایجاد نماید که موجودی تمامی کاربران به جز یک حساب حفظ شود و به تعهدات خود در خصوص این توکن نوظهور پایبند باشد اما در عمل، انجام چنین کارهایی بسیار مشکل است.
در مورد وضعیت نخست، کاربران باید به این نتیجه برسند که زنجیره فعلی نقصی دارد و توافق نمایند تا به زنجیره جدید بروند که ماینرها هماکنون بر روی آن فعال هستند و نرمافزار جدیدی که قوانین تازه را به رسمیت میشناسد دانلود کنند. در مورد وضعیت دوم، تمامی کلاینتها و اپهایی که به توکن اولیه متکی هستند از کار خواهند افتاد. کاربران نیاز خواهند داشت تا کلاینتهای خود را به توکن دیجیتال جدید آپدیت کنند و قراردادهای هوشمندی که توانایی دریافت اطلاعات از محیط بیرونی و انطباق خود با این تغییر را ندارند، به کلی از کار خواهند افتاد. در این حین، مخالفان این تغییر میتوانند با ایجاد کمپین FUD، کاربران را علیه این حرکت متقاعد نمایند و یا آنها را مجاب کنند تا کلاینتهای خود را به چیز دیگری بروز کنند که بر اساس دسته دیگری از قوانین (برای مثال تغییر اجماع بر اساس گواه اثبات کار) عمل مینماید. موارد ذکر شده انجام این تغییر را سختتر میکند.
بنابراین در هر دو مورد میتوانیم بگوییم اگر چه طرفین متمرکز یا شبه متمرکزی میتوانند بر روی کاغذ سبب تغییر سیستم از حالت الف به ب شوند – که حالت ب مطابق میل طرفین متمرکز و خلاف میل اکثریت کاربران است – اما انجام چنین کاری نیازمند حل مساله هماهنگی دشواری است. مسائل هماهنگی در جای جای جامعه وجود دارند و اغلب چیز بدی تلقی میشوند. اگرچه خلاص شدن زبان انگلیسی از شر سیستم پیچیده و بیقاعده هجایی و جایگزینی آن با الفبای آوایی یا تغییر واحد یکاهای اندازهگیری ایالات متحده به سیستم متریک و یا حتی کاهش خودکار حقوق و قیمتها به اندازه ده درصد در زمان رکود اقتصادی به سود عموم مردم خواهد بود، اما در عمل انجام چنین کارهایی نیازمند توافق همزمان همه بوده و انجام این کار اغلب بسیار بسیار دشوار است.
در خصوص کاربردهای بلاکچین، ما کاری متفاوت انجام میدهیم: ما از مسائل هماهنگی به سود خود استفاده میکنیم و از سختی مسائل هماهنگی بارویی علیه شرارت عوامل متمرکز میسازیم. سیستمهایی با ویژگی X میسازیم و میتوانیم تضمین نماییم که این سیستم ویژگی X را تا حد قابل قبولی حفظ خواهد کرد؛ چرا که تغییر قوانین از X به چیزی غیر از آن نیازمند توافق عده زیادی از کاربران به آپدیت نرمافزارهای خود در زمانی مشخص به شکل همزمان است. حتی اگر عاملی وجود داشته باشد که قادر به انجام چنین تغییری باشد، انجام آن مشکل خواهد بود. این شکلی از امنیت است که با اعتبارسنجی [تراکنشها] با توجه به قوانین اجماع بلاکچین، از جانب کلاینتها به دست میآورید.
توجه داشته باشید که چنین امنیتی بر پایه اصل غیرمتمرکز بودن کاربران استوار است. حتی اگر تنها یک ماینر در سطح جهان وجود داشته باشد، همچنان بین رمزارزی که آن ماینر استخراج میکند و سیستم متمرکزی همچون پی پل (PayPal) تفاوت وجود دارد. در مورد پیپل، اپراتور میتواند قوانین را به شکل دلخواه تغییر دهد، موجودی کاربران را بلوکه کند، سرویسدهی نامناسبی داشته باشد، کارمزد خود را بالا ببرد یا هر کار دیگری انجام دهد و با این حال مسائل هماهنگی به سود اپراتور عمل مینمایند چرا که چنینی سیستمهایی دارای اثر شبکهای عظیمی هستند و بنابراین خیل عظیمی از کاربران باید به شکل همزمان تصمیم بگیرند که این سیستم را به مقصد شبکهای بهتر ترک کنند. در مورد بلاکچین تک ماینره، تایید و اعتبارسنجی بلاکها در سمت کاربر (کلاینت ساید) بدین معنی است که تلاشهای ماینر برای تخلف به صورت پیشفرض رد خواهند شد و سختی مسائل هماهنگی اکنون به سود کاربران عمل میکند.
استدلالهای بالا به تنهایی بیان نمیدارند که ماینرها نباید عوامل اصلی هماهنگکننده و تصمیمگیرنده در خصوص سایز بلاکها (و یا در مورد اتریوم، حد گس) باشند. در واقع در مورد خاص سایز بلوک یا حد گس، «حاکمیت گروهی از ماینرها با انگیزههای همسو» احتمالا بهینهترین رویکرد برای تصمیمگیری در خصوص این سیاست خاص است. شاید به این دلیل که خطر سوءاستفاده ماینرها از قدرتشان کمتر از ریسک نامناسب بودن هر سقف سختی است که اکنون تعیین گردد و ده سال دیگر مناسب شرایط بازار نباشد. هر چند ممکن است حاکمیت ماینرها در تعیین یک سیاست بهترین راه باشد، اما غیر منطقی نیست اگر به شکلی همزمان بخواهیم برای باقی پارامترها (برای مثال پاداش بلوکها) از تایید سمت کلاینتها سود بجوییم تا اطمینان حاصل کنیم که ماینرها محدود شدهاند. این عصاره تعیین ساختار و سازوکار موسسات غیرمتمرکز است: استفاده استراتژیک از مسائل هماهنگی برای اطمینان حاصل کردن از برآورده کردن ویژگیهایی مشخص در سیستم.
همچنین استدلالهای مذکور بدین معنا نیست که قرار دادن همهچیز بر روی بلاکچین – حتی برای خدماتی که نیازمند اعتماد هستند – همیشه بهینهترین راه است. عموما فوایدی برای قرار دادن هر چه بیشتر سازوکار تجاری بر روی بلاکچین وجود دارد اما این فواید اغلب کوچکتر از زیانهایی هستند که در بهرهوری یا حریم خصوصی خواهیم داشت. و این مساله ایرادی ندارد؛ بلاکچین بهترین ابزار برای هر کاری نیست. اما چیزی که استدلالهای بالا بیان میدارند این است که اگر در حال ساخت اپلیکیشن بلاکچینی هستید که از سر نیاز، اجزای متمرکز زیادی دارد، میتوانید به جای سوق دادن کاربران به استفاده از رابطی اینترنتی که شخصا آن را کنترل میکنید، دسترسی به اپ خود را از طریق یک کلاینت رایج بلاکچینی (در مورد شبکه اتریوم این کلاینت میتواند میست [Mist]، پریتی [Parity]، متامسک یا استتوس [Status] باشد) ممکن سازید و بدین ترتیب گامهای بزرگی در راستای کاهش نیاز به اعتماد بردارید.
از لحاظ نظری، فواید اعتبارسنجی از سمت کاربر زمانی بهینه میشود که تمامی کاربران «نود کامل ایدهآل» و مستقل خود را اجرا نمایند – نودی که تمامی بلوکهایی که از قوانین پروتکل – که همگان بر سر آن در زمان ایجاد شبکه به توافق رسیدند – تبعیت مینمایند را قبول و دیگر بلوکها را رد نماید. در عمل اما چنین چیزی مستلزم این است که از هر کاربر بخواهیم که تمامی تراکنشهای دیگران در شبکه را پردازش نماید که امری دستنیافتنی است به خصوص اگر رشد شگرف بلاکچین و ضریب نفوذ تلفنهای همراه هوشمند در جهان را در نظر بگیریم.
دو راه جلوی روی ماست. راه نخست این است که در مییابیم اگر چه از نقطه نظر استدلالهای ذکر شده، بهینه است که هر فرد نود کامل خود را داشته باشد، اما این امر قطعا لازم نیست. هر بلاکچین بزرگی که به حد کافی رشد کرده، به آن نقطه رسیده است که دیگر برای مردم عادی منطقی نیست که یک پنجم حجم هارد درایوهای خود را به اجرای نود کامل اختصاص دهند. کاربران باقیمانده نهادهای تجاری و کاربرانی هستند که از سر علاقه (یا اعتقاد) مایل به انجام این کار هستند. اگر تعداد این دو گروه باقیمانده به اندازه کافی بزرگ باشد و زمینههای متفاوتی داشته باشند، آن گاه مساله هماهنگی لازم برای مجاب کردن آنها به همدستی و تقلب همچنان بسیار مشکل خواهد بود.
راه دوم، تکیه بر تکنولوژی کلاینت سبک قدرتمند است.
دو سطح از کلاینتهای سبک در سیستمهای بلاکچینی وجود دارند. نسخه ضعیفتر این کلاینتها با سطحی از اطمینان اقتصادی، کاربر را قانع میکنند که بر روی زنجیره صحیحی (رنجیرهای که توسط اکثریت شبکه مورد قبول است) قرار دارد. این کار را میتوان بسیار ارزانتر از صحتسنجی کل زنجیره انجام داد؛ کافی است کلاینتها در شبکههای مبتنی بر گواه اثبات کار، nonceها را صحتسنجی کنند و یا در شبکههای گواه اثبات سهام، صحت مدارک امضا شدهای که بیان میدارند «یا هش ریشه (root hash) حالتی که من میگویم صحیح است یا میتوانی این مدرک را در شبکه اصلی منتشر کنی و مقدار زیادی از پول مرا از بین ببری» را بررسی نمایند. زمانی که کلاینت سبک ما موفق به صحتسنجی یک هش ریشه شد، میتواند از درختهای مرکل برای تایید و اعتبارسنجی هر جزیی از دادهها که مایل به تایید جداگانه آن است، بهره برد.
کلاینت نوع دوم، کلاینت سبکی است که «تقریبا به شکل کامل» صحتسنجی میکند. این گونه از کلاینتها، تنها سعی در دنبال کردن زنجیرهای که اکثریت بر روی آن اتفاقنظر دارند، نمیکند بلکه علاوه بر آن تلاش میکند که تنها زنجیرههایی را دنبال کند که تمامی قوانین را رعایت میکنند. این امر با چند تمهید میسر میشود؛ یک کلاینت سبک میتواند با نودهایی به خصوص (با تشکر از گووین وود که نام «ماهیگیر» را برای این نودها پیشنهاد داد) همکاری کند. وظیفه این نودها این است که به دنبال بلوکهای نامعتبر بگردند و «گواه تقلب» برای آنها ایجاد نمایند. این گواهها پیغامهای کوتاهی هستند که در واقع بیان میکنند: «نگاه کنید! این بلوک چنین ایرادی دارد!». سپس کلاینتهای سبک میتوانند آن بخش به خصوص از بلوک را بررسی نمایند و تایید کنند که آیا واقعا نامعتبر است.
اگر نامعتبر بودن بلوکی احراز شود، دور انداخته میشود؛ اگر کلاینت سبک ما به مدت چند دقیقه گواه تقلبی برای بلوک به خصوصی دریافت نکند، آن را معتبر فرض میکند. در مواردی که مشکل اعتبار دادهها نیست، بلکه نبود آنهاست، مساله کمی پیچیدهتر میشود. اما به شکل کلی، میتوان تقریبا تمامی راههای ممکن قانونشکنی ولیدیتورها یا ماینرها را بدین وسیله تشخیص داد.
توجه داشته باشید برای آن که کلاینتهای سبک بتوانند به شکلی بهینه صحت مجموعهای از قوانین را بسنجند، آن قوانین باید درون فرایند اجماع، اجرا شوند – بدین معنی که یا باید بخشی از پروتکل باشند یا بخشی از مکانیزمی که درون پروتکل اجرا میشود (همچون قراردادهای هوشمند) – این نکتهای کلیدی به سود استدلال ذخیره توامان دادهها و سازوکار تجاری بر روی بلاکچین – در قیاس با ذخیره تنها داده – است.
کلاینتهای سبک ناقص هستند چرا که تنها به مفروضات خود مبنی بر وضعیت اتصال شبکه و تعداد دیگر کلاینتهای سبک و ماهیگیران حاضر متکی هستند. اما نیازی نیست که این نرمافزارها ضریب موفقیت صد در صدی داشته باشند. تنها چیزی که مدنظر ماست این است که بتوانیم محیطی ایجاد نماییم که هر تلاشی از جانب کارتل بدکاری از ماینرها/ولیدیتورها برای تایید بلوکهای نامعتبر بدون رضایت کاربران، با مشکلات عدیدهای روبرو شود و نیازمند بروز رسانی نرمافزاری از جانب همه، در صورت تمایل به دنبال کردن زنجیره نامعتبر جدید شود. مادامی که این شرایط مهیا شود، به هدف خود مبنی بر رسیدن به امنیت از طریق ایجاد دردسرهای هماهنگی رسیدهایم.