زنجیره های جانبی (Sidechain) بیت کوین چیست و چه کاربردی دارد؟ یکی از مشکلات اساسی بلاکچینها و از جمله شبکه بیت کوین مسئله مقیاس پذیری است. سایدچین یک شبکه بلاکچینی است که از طریق پیوند با بلاکچین اصلی مشکل مقیاس پذیری را تا حدی حل میکند. ایده سایدچینها به عنوان مکانیزم گسترش ویژگیها و راهکار مقیاسپذیری بیت کوین نه تنها ایده جدیدی نیست، بلکه از یک ایده قدیمی و اولیه به نام ترکیب زنجیرههای استخراجشده (Merge Mined Chains) نشات میگیرد. ایدهای که قدمتش به قبل از ناپدید شدن ساتوشی ناکاموتو برمیگردد. پیاده سازی زنجیره های جانبی بیت کوین به سه روش Spacechainها، Softchainها و Drivechainها انجام میشود. در این مقاله به بررسی Spacechainها میپردازیم. با میهن بلاکچین همراه باشید.
معرفی مکانیسم ایده اولیه زنجیرههای جانبی
در پروپزال Merge Mined Chains دو زنجیره کاملا جدا و غیرمرتبط توسط گروه مشترکی از ماینرها استخراج میشوند، اما ماینرها قابلیت جابهجایی چیزی را بین زنجیرهها ندارند. پروپزال اولیه ساید چین در سال ۲۰۱۴ (۱۳۹۳) بلافاصله پس از انتشار مقالهای توسط بلاک استریم (Blockstream) ارائه شد. ایده اصلی پروپزال این بود که با استفاده از گواه اثبات تایید ساده پرداخت (Simple Payment Verification) بتوانیم کوینها را بین بلاکچین اصلی بیت کوین و سایر زنجیرههای جانبی به زنجیرههای قبلی یا بعدی منتقل کنیم. گواه اثبات تایید ساده پرداخت (SPV) برای اثبات اعتبار هنگام ارسال کوین از یک زنجیره به زنجیره دیگر استفاده میشود. این ایده به دلایلی مانند پیچیدگیهای پیادهسازی، سازماندهی زنجیره، احتمال سرقت و ریسکهای تمرکز ماینینگ هرگز به نتیجه نرسید.
استفاده از پگهای یکطرفه و دوطرفه در زنجیرههای جانبی
در زنجیرههای جانبی از مکانیسم پیوند یا پگ (Peg) استفاده میشود. پیوندها شامل دو نوع یک طرفه و دو طرفه هستند. همانطور که از نام این مکانیسم پیدا است در طراحی پیوند دوطرفه یا پگ دو طرفه (Two Way Peg) کوینها میتوانند بین زنجیره والد و زنجیرههای جانبی به عقب و جلو حرکت کنند.
اما در طراحی پیوند یک طرفه یا پگ یک طرفه (One Way Peg) کوینها فقط از زنجیره والد به زنجیرههای جانبی حرکت میکنند و اصلا به عقب برنمیگردند. فعلا تنها شکل پگ ساید چین دو طرفه که روی بیت کوین اجرا میشود از طریق اجماع فدرال (Federated Consensus) انجام میشود. در این مکانیزم مجموعهای از متصدیان (Custodian) قابل اعتماد پیوند را تضمین میکنند. به عبارت دیگر این متصدیان وجوه پگشده در یک کیف پول چندامضایی (Multisig Wallet) در ساید چین را تا زمان برداشت کنترل میکنند.
برای سایر پگهای سایدچین که فدرالشده نیستند، طرحهای دیگری ارائه شده است. به طور مثال پروپزال Ruben Somsen یکی از این طرحها است. روبن سامسن (Ruben Somsen) یک مکانیسم پگ یکطرفه است که مانند پروپزال Paul Stztorc از طرح ترکیب ماین پنهان (Blind Merge Mine) استفاده میکند. به عبارت دیگر در این مکانیزم کوینها فقط میتوانند وارد زنجیره جانبی شودند و هرگز از سایدچین خارج نمیشوند. بهعلاوه ماینرها برای دریافت مزد استخراج ساید چین مجبور به اجرای نرمافزار جدید نیستند.
پروپزال اسپیسچین (Spacechain Proposal)
در مرج ماینینگ (Merge Mining) ماینرها باید نودهای هر دو زنجیره بیت کوین و سایر زنجیرههایی که در حال ماین هستند را اجرا کنند. پس از انجام این کار بلاکها برای هر دو زنجیره کامپایل شده و به هدر بلاکی (Header Block) که درحال ماین است، سپرده (Commit) میشود.
ماینینگ ترکیبی پنهان بر اساس این واقعیت است که ماینرهای بیت کوین برای سپردن کوین (کامیت کردن) به بلاک بیت کوین خودشان فقط به هدر بلاک سایر زنجیرهها نیاز دارند و در واقع شخص دیگری میتواند زحمت کنار هم قراردادن بلاک برای سایر زنجیرهها را بکشد.
سامسن (Somsen) برای این چالش پروپزال ANYPREVOUT یا (APO) را پیشنهاد میدهد. با استفاده از این پروپزال هر کسی میتواند برای ساخت بلاک بعدی سایدچین رقابت کند، اما فقط یک بلاک به بلاک زنجیره اصلی بیت کوین سپرده میشود. یکی دیگر از مزایای پروپزال Ruben این است که برای فعالکردن اجرای سایدچینها به سافت فورک خاصی (Soft Fork) نیاز ندارد. پروپزالهای Eltoo/ANYPREVOUT با هدف فعال کردن زنجیرههای وضعیت انعطافپذیر (Flexible Statechains) و Channel Factories برای شبکه لایتنینگ (Lightning Network) پیشنهاد شدهاند.
مرج ماینینگ چیست؟
ایده کلی ماینینگ ترکیبی پنهان این است که با استفاده از پروپزال APO میتوان مجموعهای طولانی از تراکنشها را که خروجی خرجنشده مشابهی (UTXO) دارند، از پیش تعریف کرد و متعهد شد که همیشه همان مجموعه بازتولید میشود. خروجی خرجنشده یک ساتوشی را تصور کنید. هر تراکنش از پیشتعیینشده تضمین میکند که پس از تایید، یک خروجی خرجنشده مشابه مجددا بهعنوان خروجی تولید میشود.
این UTXO خاص مانند یک نشانگر یا شناسه است که کاربر بلاکچین اصلی بیت کوین با نگاه به آن میفهمد «این همان جایی است که من در بلاکهای X سایدچین سپرده (Commitment) دارم.» در صورتی که این UTXO مجبور به بازتولید با همان مقدار شود، آنوقت هیچ وجهی برای پرداخت کارمزد وجود ندارد.
حل چالش پرداخت کارمزد در مرج ماینینگ
موضوع پرداخت کارمزد با استفاده از دو مدل امضای SIGHASH_SINGLE و SIGHASH_ANYONECANPAY قابل حل است. در مدل SIGHASH_SINGLE امضای یک ورودی، فقط همان ورودی و خروجی مربوطه را امضا میکند. در مدل SIGHASH_ANYONECANPAY کاربران میتوانند بدون بیاعتبارکردن امضا و تا زمانی که وردی/خروجی SIGHASH_SINGLE همانطور باقی بماند، آزادانه ورودیها و خروجیهای بیشتری را اضافه کنند. سپس هر کسی میتواند یک ورودی اضافه کند و خروجی را تغییر دهد تا کارمزد تراکنش را به ماینر بپردازد.
از این مکانیزم برای سپرده دادن (کامیت کردن) به هدر بلاکِ زنجیره جانبی هم استفاده میشود. همانطور که تپ روت (Taproot) با تغییر کلید عمومی معمولی ریشه درخت مرکل (Merkle Tree) به درخت شرایط خرج کردن متفاوت را میدهد، هر کسی میتواند کلید عمومی معمولی را با هش هدربلاک زنجیره جانبی تغییر دهد. به این ترتیب نودهای سایدچین میتوانند با اشاره به تراکنش در زنجیره اصلی، هدر بلاک را مشخص و به شیوه غیرمتمرکز تایید یا رله (Relay) کنند تا ثابت کنند که این بلاک واقعا ماین شده است. پس از آن نودهای سایدچین تمام اعتبارسنجیهای معمولی را انجام میدهند تا اولا مطمئن شوند که بلاک زنجیره جانبی از قوانین اجماع مناسب پیروی میکند و ثانیا بلاکهای واقعی شبکه سایدچین را درست همانند زنجیره اصلی رله کنند.
احتمالات ناشی از کامیت به بلاک نامعتبر یا استفاده از داده بلااستفاده
اگر یکی از تراکنشهایی که به بلاکهای سایدچین زنجیره اصلی سپرده شده به بلاک نامعتبری سپرده شده باشد یا حتی کلا دادهها بلااستفاده باشند، در این صورت هنگامی که نودهای زنجیره جانبی تراکنش سپردههای (Commitment Transaction) استفادهشده روی زنجیره را مشاهده میکنند، احتمال دو اتفاق وجود دارد. اولا یک بلاک نامعتبر میتواند در سراسر شبکه سایدچین منتشر شود و اگر نتواند پروسه اعتبارسنجی را با موفقیت بگذراند به یک بلاک یتیم (Orphaned) تبدیل میشود.
در اتفاق دوم دادهها هرگز آشکار نمیشوند. در این حالت بلاک بعدی زنجیره جانبی روی آخرین بلاک آشکارشده ایجاد و به آن سپرده میشود، سپردههای مخفی هم نادیده گرفتهمیشوند. احتمال دوم از منطقی مشابه با طولانیترین زنجیره (Longest Chain Logic) زنجیره اصلی پیروی میکند. بنابراین حتی اگر در آینده چیزی آشکار شود همچنان یتیم باقی میماند، زیرا در آینده بلاکهای دیگری روی آن ساختهنمیشود.
حل چالش دوبار خرج کردن در مرج ماینینگ
اما همچنان مشکل دوبار خرج کردن یا دابل اسپندینگ (Double Spending) وجود دارد. هر کسی که کلید خصوصی تولید نشانگر UTXO را در اختیار داشته باشد، میتواند هر یک از تراکنشهای از پیشتعریفشدهای که به بلاکهای زنجیره جانبی سپرده شدند را دوبار خرج کند و از آن نقطه به بعد کل مجموعه را بیاعتبار کند.
این مشکل با قراردادن امضا در اسکریپت قفلشده UTXO حل میشود. به عبارت دیگر با قفل شدن امضای ورودی و خروجی از بازتولید شناسه UTXO و استفاده از آن در تراکنش بعدی اطمینان حاصل میشود. از آنجایی که هنگام خرج شدن UTXO امضا به طور خودکار بررسی میشود، نمیتوان امضای دیگری را به سادگی جایگزین و در مقصد دیگری خرج کرد.
حل چالش ارسال پشت سر هم چندین تراکنش
بازهم یک مشکل دیگر وجود دارد. از نظر تئوری ارسال پشت سرهم چندین تراکنش به یک بلاک بیت کوین امکانپذیر است و ماینرها میتوانند تعداد زیادی از بلاکهای زنجیره جانبی را در یک بلاک زنجیره اصلی تایید کنند. این پروسه میتواند در حمله منع سرویس (Denial-of-Service) به زنجیره جانبی مورد سوءاستفاده قرار بگیرد.
برای حل این مشکل میتوان قفل زمانی نسبی CHECKSEQUENCEVERIFY را در اسکریپت UTXO قرار داد تا اطمینان حاصل شود که فقط یک تراکنش با استفاده از شناسه UTXO میتواند داخل یک بلاک مشخص زنجیره اصلی تایید شود.
این پروسه در مجموع شبیه به تصویر زیر بهنظر میرسد:
باید به این نکته هم توجه داشته باشیم که دو شکل متفاوت این طرح را میتوان با استفاده از بهروزرسانی CTV (CHECKTEMPLATEVERIFY) یا بدون هیچ تغییری اجرا کرد. در ادامه نحوه حل این مشکل را توسط پروپوزال CTV بررسی میکنیم.
استفاده از پروپزال CTV در پیاده سازی زنجیره های جانبی بیت کوین
پروپزال CTV UTXO از این قابلیت برای کامیت به زنجیره تراکنشهایی که به جای APO و هک امضای داخل اسکریپت قفلشده از CTV استفاده میکنند، استفاده میکند. CTV به تمام خروجیهای یک تراکنش که خروجی خرجنشده CTV را خرج میکنند سپرده میشود، اما به هیچ ورودی غیر از خودش سپرده نمیشود.
به عبارت دیگر میتوان ورودیها را به یک تراکنش CTV اضافه کرد، اما خروجیها را نه. بنابراین مانند طراحی APO کاربر میتواند هزینه کارمزد خودش را بیاورد، اما نمیتواند سپردهای را به هدر بلاک زنجیره جانبی اضافه کند.
بنابراین آنچه که باید انجام دهیم این است که تراکنشی را کاملا خارج از زنجیره تراکنش CTV برای سپرده سایدچین ایجاد کنیم. به این ترتیب خروجی خرجنشدهای تولید میشود که فقط برای پرداخت کارمزد تراکنش CTV کافی است. (از آنجا که امکان تغییر خروجی در این تراکنش وجود ندارد، ۱۰۰٪ ورودیهای اضافهشده به کارمزدها اضافه میشود.) تراکنشی که کارمزد UTXO را آماده میکند، همانجایی است که به یک هدر بلاک زنجیره جانبی سپرده میدهیم. بنابراین در گام اول، یک تراکنش هزینهای را برای پرداخت خروجی و سپردهای را برای یک هدربلاک ساید چین ایجاد میکند. در گام دوم ما هزینه خروجی میگیریم و آن را به عنوان یک ورودی به تراکنش CTV اضافه میکنیم. پس از تایید این تراکنش، بلاک زنجیره جانبی مورد نظر ما ماین میشود. این طرح مشابه تصویر زیر است:
چالش پروپزال CTV
در پروپزال CTV بلاک سایدچین باید در یک تراکنش ثانویه کامیت شود زیرا CTV به تراکنشهایی که یک ورودی قفلشده توسط CTV را خرج میکنند، اجازه اضافه کردن خروجیهای جدید را نمیدهد. این طرح مستلزم استفاده از یک تراکنش ثانویه است، زیرا اگر ورودی یا خروجی جدیدی را به زنجیره از پیش امضاشده اضافهکنید، شناسههای تراکنش (TXID) را تغییر میدهید و تمام تراکنشهای از پیشامضا شده بعدی نامعتبر میشوند. این طرح شبیه به تصویر زیر است:
چالش استفاده از تراکنشهای از پیش امضاشده
نقطه ضعف طرح دوم این است که اگر کسی که تمام تراکنشها را به منظور استفاده در سپردههای بلاک زنجیره جانبی از پیش امضا کرده، کلیدهای خصوصی آن را حذف نکند آنوقت بهواسطه دو بار خرج شدن شناسه UTXO فعلی در هر زمانی امکان توقف زنجیره وجود دارد.
استفاده از تراکنشهای از پیش امضا شده در زنجیره های جانبی بیت کوین
طرح بعدی از تراکنشهای از پیش امضا شده استفاده میکند. در حال حاضر به سادگی میتوان از این روش استفاده کرد، اما به دلیل محدودیتهای اسکریپت هر کسی که میخواهد اسپیس چین (Spacechain) را ایجاد کند باید تمام هزینههای تراکنش را از قبل بپردازد.
زنجیره تراکنشها با یک خروجی خرجنشده شروع میشود و دو خروجی در یک زنجیره ایجاد میکند. اولین خروجی، شناسه UTXO است که نشانمیدهد زنجیره تراکنش به یک SpaceChain خاص مربوط است. خروجی دوم، یک UTXO با ارزش اندک است که هرکسی میتواند آن را خرج کند و امکان اتصال یک ورودی یا خروجی دیگر به آن را به وجود بیاورد. در تراکنش دوم هر کسی میتواند متعهد شود که اولین نفری است دومین خروجی زنجیره تراکنش اسپیس چین را خرج میکند و از آن برای کامیت به هدر بلاک زنجیره جانبی خود استفاده میکند.
جمعبندی
همانطور که اشاره شد سایدچینها راهکاری برای مقیاس پذیری و قابلیت همکاری هستند و سابقه این مفهوم به پیش از ناپدید شدن ساتوشی برمیگردد. مطالب بالا جدیدترین پروپزال طرح سایدچین در شبکه بیت کوین بود. پیادهسازی زنجیره های جانبی بیت کوین را به سه طریق میتوان انجام داد که Spacechain یکی از آنها است. پروپزال اسپیس چین مبتنی بر مرج ماینینگ است. ایده کلی هم ازپیشتعریف کردن مجموعهای طولانی از تراکنشهایی است که خروجی خرجنشده مشابهی (UTXO) دارند و باید متعهد شد که همیشه همان مجموعه بازتولید میشود. به نظر شما پیادهسازی زنجیره های جانبی بیت کوین