همانطور که میدانید سایدچینها یا زنجیرههای جانبی (Sidechain) راهکاری برای حل مشکل مقیاسپذیری بلاکچینها هستند. درحقیقت زنجیرههای جانبی از طریق ایجاد پیوند یا همان پگهای یک طرفه و دوطرفه این مشکل را تا حد زیادی برطرف میکنند. با توجه به پروپوزالهایی که تاکنون ارائهشده پیادهسازی زنجیرههای جانبی بیتکوین از سه طریق Spacechainها، Softchainها و Drivechainها قابل اجرا است. در بخش اول به بررسی Spacechainها پرداختیم. در بخش دوم کاربردهای Spacechainها مورد بررسی قرار دادیم و در بخش سوم سری مقالات بررسی زنجیرههای جانبی بیت کوین، سراغ کاربرد Softchainها میرویم. با میهن بلاکچین همراه باشید.
پیادهسازی زنجیرههای جانبی با استفاده از Softchainها
در مقالات قبلی اشاره شد که روبن سامسن (Ruben Somsen) برای اجرای مکانیزم زنجیرههای جانبی پروپزالهایی را ارائه کرده است. یکی دیگر از پروپزالهای او استفاده از سافت چینها (Softchain) است و به طور کامل با مکانیزم اسپیس چینها (Spacechain) که پیشتر توضیح دادیم، متفاوت است.
پیادهسازی Softchainها مستلزم یک تغییر خاص در پروتکل اصلی بیت کوین است و ساختار این تغییر به طور خاص با هدف پیادهسازی زنجیره جانبی شکل گرفتهاست. ایجاد این تغییر اولا هزینه اعتبارسنجی جدیدی را به نودهای کامل (Full Nodes) بیت کوین تحمیل میکند. ثانیا Softchainها از مکانیزم پگ دوطرفهای پشتیبانی میکنند که برای نگهداری و حضانت وجوه نیازمند فدراسیونها (Federation) یا همان اپراتورهای واسطه بینزنجیره اصلی و زنجیرههای جانبی نیستند.
ساختار و ایده اصلی Softchainها چیست؟
ایده اصلی Softchain در پروپزال قبلی Somsen با نام اثبات تقلب گواه اثبات کار (PoW Fraud Proof) شکل گرفت. هدف از این مکانیزم بهبود امنیت تأیید ساده پرداخت (SPV) برای کیف پولها بود و ایدهاش از یک نکته ساده در بلاکچین نشات میگرفت. اگر یک بلاک نامعتبر تولید شود، احتمالا یک فورک در بلاکچین ایجاد میشود، زیرا ماینرهای صادق از ایجاد بلاک روی بلاک نامعتبر خودداری میکنند و در نهایت یک بلاک معتبر استخراج میشود.
ایجاد بلاک نامعتبر و خودداری ماینرهای صادق از ایجاد فورک به این معناست که فرایند اجماع شبکه به طور کامل از هم گسیخته است. بنابراین احتمالات آماری این اتفاق بسیار ناچیز میشود و ایجاد فورک را باید به منزله هشداری با این مضمون دانست: «ممکن است اینجا اتفاقی افتاده باشد، لازم است موضوع را بررسی کنید.» کلاینتها (Client) ایجاد چنین فورکهایی را باید یک هشدار بدانند و با دانلود بلاکها ببینند چه اتفاقی در حال وقوع است.
مشکل تایید بلاک در Softchain با استفاده از UTXO Set Commitment
در اینجا یک مشکل اساسی وجود دارد. از طرفی تایید بلاک نیازمند یک مجموعه خروجی خرج نشده تراکنش (UTXO) است. از طرف دیگر برای ایجاد یک مجموعه UTXO باید تمام بلاکهای قبلی زنجیره را تأیید کرد. بنابراین این پروسه چطور به عنوان مکانیسم تایید ساده پرداخت (SPV) عمل میکند؟ پاسخ، استفاده از مجموعه UTXO سپرده (Commitment) است.
هر بلاک باید در مقابل مجموعه UTXO اعتبارسنجی شود. این UTXO یک پایگاه داده از هر بیت کوین موجود است که هنوز خرجنشده است. به عبارت دیگر UTXO فعلا فقط یک پایگاه داده محلی است که هر نود از همان ابتدا حین اسکن در بلاکچین میسازد و ذخیره میکند. یک مجموعه UTXO سپرده (کامیتمنت) مجموعه UTXO را میگیرد و از آن یک درخت مرکل (Merkle Tree) میسازد. سپس هش آن را به صورت ایدهآل داخل هر بلاک کامیت میکند. به این ترتیب ماینر یک بلاک با دادههای بیشتری را دریافت میکند. یک شاخه مرکل ثابت میکند که ورودی هر یک از تراکنشها در آخرین مجموعه UTXO کامیتمنت بوده است و بلاک را با استفاده از آن دادهها اعتبارسنجی میکند.
اگر سیستمی از ابتدا از طرح کامیتمنت (سپرده) مشابهی استفاده کند و خود سیستم توسط تعداد زیادی از کاربرانی که زنجیره را به طور کامل تأیید میکنند، مورد استفاده قرار بگیرد، در این صورت یک تضمین امنیتی معادل یک نود کامل (Full Node) ایجاد میشود.
هر زمان که تقسیم زنجیره اتفاق بیفتد، میتوان تمام بلاکهای درگیر را دانلود کرد و اطمینان داشت که یک زنجیره معتبر دنبال میشود. در صورتی که هر دو طرف انشعاب معتبر باشد، بازهم زنجیره طولانیتر برنده است؛ اما اگر یکی از انشعابها نامعتبر باشد، میتوان فورا آن را تشخیص داد.
مکانیزم پیوند یا پگ دوطرفه (The Two Way Peg) در Softchain
در طراحی Softchainها، نودهای زنجیره اصلی باید هدربلاکهای (Block Headers) هر سافتچین را دانلود و اعتبارسنجی کنند. در صورتی که انشعاب زنجیره اتفاق افتاده باشد، نودهای زنجیره اصلی باید این بلاکها را با استفاده از مجموعه UTXO کامیتمنت دانلود و اعتبارسنجی کنند. به این ترتیب مبنای مکانیزم Pegout برای فعالکردن پگ دوطرفه شکل میگیرد. برای انتقال کوین به سایدچین (Sidechain) کاربر باید یک تراکنش در زنجیره اصلی ایجاد کند و آن را به یک Softchain خاص اختصاص دهد. بعد از تأیید کلیم (Claim) کوینها در سایدچین، باید به همان تراکنش اشاره کند.
برای Peg Out از سایدچین به صورت برعکس عمل میشود و اینجاست که اثبات تقلب PoW نقش مهمی دارد. در پروسه از پگ خارج کردن کوین قرار است یک تراکنش در زنجیره اصلی ایجاد شود که به یک تراکنش برداشت در سایدچین اشاره میکند. این کوینها تا زمان تأیید Long Confirmation Window (حدود یک سال دیگر) قابل خرجکردن نیستند. در صورتی که تراکنش برداشت در زنجیره جانبی مجددا تنظیم شود یا نامعتبر بودن آن مشخص شود، این کوینها در سافتچین همچنان قفل باقی میمانند. از آنجا که در زمان انشعاب زنجیره، نود زنجیره اصلی همه بلاکها را در هر طرف انشعاب دانلود و آنها را با استفاده از مجموعه UTXO کامیتمنت اعتبارسنجی میکند، احتمال شناسایی تراکنش نامعتبر وجود دارد.
Long Confirmation Window برای خارج کردن از حالت پگ به گونهای است که درصد کمی از ماینرهای صادق فرصت کافی برای تولید یک بلاک معتبر دارند. زیرا باید زنجیره را تقسیم کنند و با استفاده از مجموعه UTXO کامیتمنت همه چیز را از آن نقطه اعتبارسنجی کنند تا در نهایت یک بلاک معتبر تولید شود. به همین دلیل نودهای زنجیره اصلی میتوانند Pegoutهای تقلبی سایدچین را قبل از تأیید برداشت در زنجیره اصلی شناسایی کنند. بنابراین میتوان بدون نیاز به اعتبارسنجی کل سایدچین این تراکنشها را بیاعتبار کرد.
فاکتورهای امنیت و ریسکها در Softchainها
این طراحی باعث ایجاد چالش در موضوعاتی مانند سطح امنیت بر مبنای متغیرهای خاص و نحوه تعامل یک سایدچین با ماینرها میشود. اولا در هر Softchain باید با حداقل سختی لازم برای بلاکها، پیادهسازی شود. در این صورت اگر نرخ هش شدیدا کاهش یافت، به جای تنظیم سختی کمتر نسبت به بلاکهای مینیموم در سایدچین، میتوان زمان پیدا کردن بلاکها را مثلا از طریق افزایش فاصله بلاکها طولانیتر کرد.
انجام چنین کاری ضروری است زیرا نودهای زنجیره اصلی اثبات تقلب PoW باید به عنوان بخشی از این طراحی عمل کنند. در صورتی که سختی Softchain بیشازحد پایین باشد، ماینرها به راحتی میتوانند دائما سافتچین را به طور مخرب فورک کنند. همچنین از طریق افزایش مقدار دادههایی که باید اعتبارسنجی کنند، میتوانند عملاًحمله انکار سرویس (DoS) را علیه نودهای زنجیره اصلی انجام دهند. فاکتورهای امنیتی در Softchainها به شرح زیر هستند.
Mining Merge یا استخراج ترکیبی
استخراج ترکیبی (Mining Merge) راهحلی برای این مشکل است. اگر همه ماینرهای بیت کوین بلاکهای سایدچین را استخراج کنند با ایجاد انشعاب زنجیره روی سافتچین مسئله حملات DoS روی زنجیره اصلی به خوبی حلمیشود. ایجاد انشعاب در Softchain به همان اندازه ایجاد انشعاب در زنجیره اصلی نیازمند کار است. بهعلاوه جلوگیری از حملات خودسرانه و کمهزینه موجب افزایش مقدار دادههای مورد نیاز برای اعتبارسنجی زنجیره اصلی میشود. به هر حال در حل مسئله حمله DoS چالش دیگری تحت عنوان افزایش هزینه اعتبارسنجی ماینرها بهوجود میآید.
افزایش هزینه اعتبار سنجی
درصورتی که ماینرها بخواهند سافتچینها را استخراج کنند، برای اطمینان از معتبر بودن بلاکهایی که استخراج میکنند باید نودها را برای بلاک سافتچین هم اجرا کنند. درغیر اینصورت نودها در معرض خطر یتیم شدن (Orphaned) قرار میگیرند و درآمد کارمزد بلاک نامعتبر را ازدست میدهند.
اگر بسیاری از سافتچینهایی که هزینه اعتبارسنجی بالایی دارند، مانند زنجیرههای Ethereum-Clone یا زنجیرههای بزرگ فعال شوند، مشارکت در ماینینگ متمرکزتر و گرانتر میشود. ماینرها باید یک زنجیره را تأیید کنند تا مطمئن شوند بلاکشان را روی بلاک نامعتبری نمیسازند و پولشان را از دست نمیدهند. بنابراین تأیید زنجیره یک پروسه اختیاری نیست. همچنین افزایش هزینه اعتبارسنجی باعث تضعیف اقدامات برای بهحداکثررساندن تمرکززدایی میشود.
ایجاد باگ اجماع
بزرگترین مسئله، خطر یک باگ اجماع روی Softchain است که در واقع باعث انشعاب اجماع خود زنجیره اصلی میشود. این خطر وجود دارد که زنجیره جانبی اصلی یک تراکنش پگاوت (قطع پیوند) معتبر را درست همان موقعی که قرار است روی زنجیره اصلی معتبر اعلام شود، روی ساید چین نامعتبر اعلام کند.
به خاطر داشته باشید نودهای زنجیره اصلی نیز هدرهای سافتچین را دنبال میکنند. درصورتی که بخشهای مختلف یک شبکه که روی بخشهای مختلف یک Softchain هستند، همزمان با معتبر شدن پگاوت ساید چین روی زنجیره اصلی تقسیم شوند، ممکن است منجر به منشعبشدن زنجیره اصلی شود. باگهای اجماع غیرقطعی در سافت چین نیز میتواند موجب انشعاب یک زنجیره اصلی شود. به طور مثال ممکن است بعضی از نودها یک پگاوت را نامعتبر بدانند؛اما نودهای دیگری آن را معتبر ببینند.
این تعامل قوی با اجماع زنجیره اصلی موجب پرخطرشدن طراحی زنجیره جانبی و عملکردی بر خلاف انتظار میشود. سافت چینها باید به صورت تکتک در فورکهای جداگانه فعال شوند، نه اینکه یک فورک جدا اجرا شود که به سافتچینها اجازه میدهد به دلخواه فعال شوند. امکان تقسیم زنجیره در این طراحی باعث میشود تا نودهای زنجیره اصلی اطلاعات بیشتری را اعتبارسنجی کنند و در نهایت میتوان به سادگی و طورهمزمان تعداد زیادی از سافت چینها را هنگام اتک وکتور (Attack Vector) روی زنجیره اصلی فعال کرد.
جمعبندی
یکی از راهحلهای پیشنهادی برای حل مشکل مقیاسپذیری بلاکچینها پیادهسازی زنجیرههای جانبی در سه بخش Spacechian ،Softchain و Drivechain است. هدف اصلی این راهکارها اجرای ویژگیهایی است که قابلیت اجرا در زنجیره را اصلی ندارند. اجرای سافتچینها