افزایش مقیاس پذیری برون زنجیره‌ای بیت کوین

بلاک چین بیت کوین در بهترین حالت تنها می‌تواند در هر ثانیه 10 تراکنش را پردازش نماید. برای حل مشکل این محدودیت، جامعه‌ فنی بیت کوین در حال ساخت پروتکل‌های لایه دوم است. این پروتکل‌ها مانند شبکه لایتنینگ و سایدچین‌ها (زنجیره‌های فرعی) تراکنش‌های بیت کوین را در بیرون از زنجیره پردازش می‌کنند و به همین دلیل «برون زنجیره‌ای» نام گرفته‌اند. همچنین با به کارگیری ترفندهای کریپتوگرافیک، این تراکنش‌ها دسته می‌شوند و سپس به صورت دوره‌ای در بلاک چین بیت کوین به صورت یک تراکنش پردازش می‌گردند.

0 82

اکنون یک پروتکل لایه دوم جدیدی در راه است. استیت چین‌ها یا زنجیره‌های حالت (Statechains) نخستین بار از سوی روبن سومسن (Ruben Somsen) ارائه شدند. سومسن برگزار کننده‌ی نشست بیت کوین در سئول و یکی از سازندگان پادکست Unhashed است. استیت چین ها مفهوم تراکنش بیت کوینی را دگرگون می‌سازند. به جای اینکه کوین از آدرسی به آدرس دیگر فرستاده شود، کاربران استیت چین تنها کلید خصوصی خود را ارسال می‌کنند که با آن می‌توان کوین‌ها را خرج کرد. در ادامه توضیح می‌دهیم که چرا این شیوه اصلا آن طور که به نظر می‌رسد عجیب و نامعقول نیست.

چرا استیت چین‌‌ها (کمابیش) امن هستند

اگر بخواهیم ساده بگوییم، هر تراکنش بیت کوین یک پیام است که می‌گوید فلان کوین‌ها (UTXO) از فلان آدرس (ورودی) به فلان آدرس (خروجی) جابه‌جا می‌شوند. این پیام با کلیدهای خصوصی مربوط به آدرس فرستنده به روش کریپتوگرافیکی امضاء می‌شوند. این امضای کریپتو ثابت می‌کند که تراکنش به دست صاحب کوین‌ها ایجاد شده. سپس بسته (bundle) که همان تراکنش به همراه امضاء است به شبکه بیت کوین فرستاده می‌شود و در پایان به وسیله‌ی یک ماینر در یکی از بلوک‌های بیت کوین جای داده می‌شود.

به لحاظ فنی این امکان وجود دارد که پرداخت به جای کوین با فرستادن کلید خصوصی انجام شود. به این ترتیب کسی که این کلید خصوصی را دریافت می‌کند خواهد توانست کوین‌های مربوط به آن را خرج کند. ولی این شیوه امن نیست. اگر فرستنده که برای نمونه او را «آلیس» می‌نامیم برای گیرنده که او را «باب» می‌نامیم کلید خصوصی بفرستد، باب نمی‌تواند مطمئن باشد که آلیس یک کپی از این کلید را برای خودش نگه نداشته است. ما این کپی از کلید خصوصی را «کلید ترانزیتور» (transitory key) می‌نامیم. آلیس با این کلید ترانزیتور همچنان می‌تواند کوین‌ها را در بلاک چین خرج کند، بنابراین کوین‌ها صرفا در اختیار باب قرار نگرفته است.

نخستین راهکار استیت چین برای این مشکل افزودن یک کلید دیگر به ماجراست. اگر کوین‌ها در یک ساز و کار امضای چندگانه (multisig) دو از دو قرار داده شوند، تنها در صورتی می‌توان آن‌ها را در بلاک چین جابه‌جا کرد که هر دو کلید موافقت‌نامه‌ی این کار را امضاء کنند. این کلید دوم به دست یک فرد بی‌طرف ایجاد می‌شود که در اینجا او را «ویکتور» می‌نامیم. ویکتور برای استیت چین نقش ناظر را دارد. او یک وظیفه‌ی مهم دارد. ویکتور باید تنها در صورتی یک تراکنش را امضاء کند که آخرین دریافت کننده‌ی کلید ترانزیتور از او درخواست نماید.

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

ولی در این میان نقش استیت چین دیده نمی‌شود. آلیس یک فکر بهتر می‌کند. او کلید ترانزیتور را برای باب می‌فرستد و به ویکتور خبر می‌دهد که این کار را انجام داده است. اکنون باب آخرین گیرنده‌ی کلید ترانزیتور است. بنابراین می‌تواند با ویکتور تماس بگیرد و از او بخواهد که برای جابه‌جایی کوین امضاء بدهد.

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

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

اگر به ویکتور اعتماد نکنیم

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

این مشکل را نیز می‌توان حل کرد ولی برای حل آن طراحی استیت چین کمی پیچیده می‌گردد.

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

پرداخت کردن کوین از این آدرس تازه در دو حالت امکان دارد. یکی اینکه در روند نرمال، ویکتور و دارنده‌ی کلید ترانزیتور تراکنش را امضاء کنند و یا اینکه آلیس مثلا پس از یک هفته خودش بتواند کوین را خرج کند. آلیس این تراکنش بکاپ را وارد شبکه‌ی بیت کوین نمی‌کند بکه آن را برای ویکتور می‌فرستد و از او می‌خواهد تراکنش را امضاء کرده و کوین را به او برگرداند.

آلیس تنها زمانی کوین را به آدرس چند امضایی می‌برد که امضای ویکتور در تراکنش بکاپ (که هنوز وارد نشده) را گرفته باشد. به این ترتیب حتی اگر ویکتور ناپدید شود، او می‌تواند تراکنش بکاپ را وارد شبکه کرده و پس از مدت زمانی نزدیک به یک هفته کوین را پس بگیرد.

حال، هنگامی که آلیس می‌خواهد کلید ترانزیتور را برای باب بفرستد ابتدا با ویکتور تماس می‌گیرد و از او می‌خواهد یک تراکنش بکاپ جدید را برای باب امضاء کرده و به او بدهد. بنابراین پس از اینکه باب کلید ترانزیتور را از آلیس گرفت در کنار آن یک تراکنش بکاپ آماده دارد که به دست ویکتور امضاء شده ولی وارد شبکه نشده است. به این ترتیب اگر ویکتور ناپدید شود باب هم می‌تواند برای گرفتن کوین درخواست دهد.

در پایان، آلیس، باب و همه‌ی کسانی که پس از آن‌ها کلید ترانزیتور را دریافت کرده‌اند از ترفندی به نام اِلتو (Eltoo) استفاده می‌کنند که برای شبکه لاتنینگ طراحی شده. باب به کمک التو می‌تواند تراکنش بکاپ خود را بر تراکنش بکاپ آلیس تحمیل کند. بنابراین اگر آلیس بخواهد تقلب کند و تراکنش بکاپ قدیمی خود را وارد شبکه نماید، باب هم می‌تواند از مهلت یک هفته‌ای که آلیس برای هماهنگی با ویکتور نیاز دارد استفاده کند و کوین را بگیرد و هم می‌تواند به سادگی تراکنش خود را بر تراکنش آپدیت کننده‌ی آلیس تحمیل کند و کوین را بگیرد.

به این ترتیب مشکل حل می‌شود.

بی اعتمادی به ویکتور

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

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

یکی از راهکارهای کاهش چنین ریسکی برداشتن ویکتور و گذاشتن چند طرف به جای آن است. به این صورت که کلید ویکتور تقسیم می‌شود و به صورت امضای چندگانه در می‌آید که در آن برای نمونه از 12 فرد مشارکت کننده 8 نفر باید همکاری کنند تا دارنده‌ی کلید ترانزیتور بتواند کوین را جابه‌جا کند. تبانی با 8 نفر به روشنی سخت‌تر از تبانی با یک نفر یعنی ویکتور است.

راهکار دیگر این است که شرایط را آشکار کنیم تا ویکتور نتواند تقلب کند. برای انجام این کار باید یک بلاک چین مینیاتوری (نمونه‌ی کوچک از بلاک چین) ساخت که همان «استیت چین» است. در این استیت چین، آلیس، باب، کارول و دیگران با امضای یک پیام تایید می‌کنند که کوین را برای چه کسی فرستاده‌اند. اکنون اگر ویکتور بخواهد برای نمونه با آلیس تبانی کند و پس از اینکه آلیس در استیت چین کوین را به باب داد، آن را خرج کند، همه متوجه خواهند شد. جزییات این بلاک چین مینیاتوری هنوز به طور کامل ایجاد نشده ولی طراحی آن کار سختی نیست.

راهکار سوم این است که جایگزین‌های ویکتور طرف‌های شناخته شده باشند. برای نمونه یک گروه از کمپانی‌های بیت کوین. از آنجایی که پای اعتبار این کمپانی‌ها در میان است، در صورت انجام تقلب آن‌ها آسیب می‌بینند و حتی اگر این تقلب کوین را نصیب آن‌ها کند باز هم برایشان زیان‌بار است. این شیوه با اینکه به لحاظ کریپتوگرافی بی‌نقص نیست ولی امنیت استیت چین‌ها را به دیگر سایدچین‌ها نزدیک می‌کند. سایدچین‌هایی مانند لیکویید (Liquid) متعلق به بلاک‌استریم (Blockstream) و RSK متعلق به RSK Lab.

افزایش مقیاس پذیری برون زنجیره‌ای بیت کوین

استیت چین‌ها به ما امکان می‌دهند به جای فرستادن کوین به آدرس تازه، کلید‌های خصوصی را به صورت برون زنجیره‌ای ارسال نماییم.

محدودیت‌های استیت چین‌ها (و راه‌کارهای ممکن)

استیت چین‌ها در کنار نیاز به اعتماد به ویکتور و جانشینانش برای تبانی نکردن با دیگر شرکت کنندگان، محدودیت‌های دیگری نیز دارند.

محدودیت‌ها

نخستین محدودیتی که باید به آن اشاره کنیم و در این نوشته شرح داده شده، نیاز استیت چین به دو آپگرید پروتکل است؛ یکی امضای اشنور (Schnorr) و دیگری Sighash_Anyprevout (یا چیزی شبیه آن). کار بر روی هر دوی این ‌آپگرید‌ها هنوز به پایان نرسیده ولی بعید است که با یکدیگر در تناقض باشند.

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

راه‌کارها

با وجود این مشکلات باز هم نباید کل ماجرا را کنار گذاشت. زیرا برای نمونه می‌توان استیت چین را با یک ترفند دیگر به نام «مبادله اتمی» (atomic swaps) درهم آمیخت. با این کار آلیس می‌تواند کل کوین خود را با با فرد دیگری که دو نیم کوین دارد مبادله نماید. در این مبادله نیازی نیست هیچ یک از طرفین به دیگری اعتماد کند که سهم خود را انجام دهد. همچنین نیازی به تراکنش درون زنجیره‌ای هم نیست. بنابراین این راهکار باعث افزایش انعطاف‌پذیری می‌شود.

از سوی دیگر، فرستادن تمام UTXO در برخی موارد می‌تواند بسیار سودمند باشد. جالب اینجاست که شرکت‌ کنندگان با این ساز و کار می‌توانند تمامی کانال‌های لایتنینگ را ارسال کند. آلیس می‌تواند یک کانال لایتنینگ را با یک مقدار مشخص برابر کند (برای نمونه ابتدا در یک کانال دیگر به خودش پرداخت انجام دهد) و با این کار بخشی از کوین خود را به باب بدهد. مزیت این راهکار آن است که باب می‌تواند بی‌درنگ کانال‌های لایتنینگ را باز کند، بدون اینکه نیازی به تراکنش تامین درون زنجیره‌ای داشته باشد (که وقت و کارمزد مصرف می‌کند).

افزون بر این از آنجا که تراکنش‌های لایتنینگ عکس این مشکل را دارند (فرستادن مبالغ زیاد با آن‌ها سخت‌تر از فرستادن مبالغ کم است)، استیت چین و شبکه لایتنینگ می‌توانند به خوبی مکمل یکدیگر باشند.

حریم خصوصی

هنوز به درستی روشن نیست استیت چین‌ها دقیقا تا چه میزان حریم خصوصی افراد را نگه می‌داند. در بدترین حالت، ویکتور و دیگر شرکت کنندگان در استیت چین کاملا می‌فهمند چه کسی به چه کسی پرداخت کرده. البته باید توجه داشت که در واقعیت نام افراد آورده نمی‌شود و به جای این نام‌ها کلید عمومی نمایش داده می‌شود. روش‌هایی وجود دارد که می‌توان با آن‌ها حریم خصوصی را از سمت ویکتور بهبود بخشید. برای نمونه، به کارگیری امضاهای کور؛ ترفند کریپتوگرافیکی که نخستین بار دیوید کاوم (David Chaum) مخترع پول الکترونیک در دهه‌ی 1980 آن را پیشنهاد کرد. به کمک این ترفند می‌توان بار مسئولیت تراکنش‌ها را از دوش ویکتور و جایگزین‌هایش برداشت و بر دوش خود کاربران نهاد (احتمالا ویکتور حتی نمی‌فهمند چه چیزی را امضاء کرده است).

برای بهبود حریم خصوصی از سمت دیگر شرکت کننده‌ها می‌توان از سواپ‌ اتمی استفاده کرد. این کار سبب می‌شود زنجیره‌ی مالکیت مبهم گردد. به احتمال فراوان روش‌های دیگری نیز برای بهبود حریم خصوصی در استیت چین‌ها وجود دارد. مانند ساختارهای کوین‌جوین (CoinJoin) که برای نمونه کیف پول واسابی (Wasabi) برای نگه داشتن حریم خصوصی از آن استفاده می‌کند. ولی جزییات آن هنوز در حال تکمیل شدن است.

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

منبع

شاید از این مطالب هم خوشتان بیاید.

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.