مشکلات شبکه لایتنینگ(Lightning Network) از نگاه SHINOBI


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

کانال‌های لایتنینگ عملا و به طور کلی عبارتند از:

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

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

مسائلی در رابطه با کنترل‌های رابط کاربری

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

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

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

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

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

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

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

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

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

و در آخر، موضوع دیگری که فکر می‌کنم می‌تواند در این داینامیک باعث بروز مشکل شود برج‌های مراقبت هستند. اکثر افراد نمی‌توانند همواره و در ۲۴ ساعت روز و ۷ روز هفته بیدار بمانند تا مبادا طرفهای مقابلشان در کانالهای پرداخت اقدام به سوء استفاده و کلاهبرداری از آن‌ها کنند. به همین علت بحث برج‌های مراقبت (Watchtowers) پیش می‌آید. برج‌های مراقبت کار مراقبت و نگهبانی را برای شما انجام می‌دهند. اما برای اینکه بتوانند این کار را انجام دهند نیاز به ذخیره‌سازی همان داده‌هایی دارند که شما در صورت تقلب طرف مقابلتان برای جریمه کردنش به آنها نیاز دارید. برج‌های مراقبت هنوز خیلی توسعه داده نشده‌اند و یا خیلی به کار گرفته نشدند اما در بلند‌مدت آنها یکی از کلیدی‌ترین و حیاتی‌ترین زیرساخت‌ها برای افراد محسوب می‌شود که بتوانند به گونه‌ای امن از شبکه لایتنینگ استفاده کنند.

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

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

خوشبختانه این مسئله قرار است با ارتقای پیشنهادی در شبکه بیت‌کوین که موسوم به ANYPREVOUT است و راه اندازی کانال‌های پرداخت بر اساس eltoo حل شود، کانال‌های پرداخت که بر اساس eltoo هستند این امکان را فراهم می‌آورد تا یک داده با اندازه ثابت بتواند همان نقش بازدارندگی از انجام تقلب را ایفا کند که کلیدهای جریمه داشته اند. اما تا آن زمان که این امکان جدید در شبکه بیت‌کوین پیاده‌سازی شود، کانالهای لایتنینگ کنونی با این مسئله مقیاس‌پذیری روبرو هستند.

مسائلی در خصوص قراردادهای هش گذاری شده دارای قفل زمان‌دار (HTLC)

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

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

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

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

داینامیک بلاک‌چین بیت‌کوین هم میزان ارزشی که HTLCها دارند را مد نظر قرار می‌دهد. اگر یک HTLC تنها ۱۰ ساتوشی را فوروارد می‌کند اما اضافه‌کردن این مقدار ارزشی که این HTLC قصد انتقال آن به خروجی اش روی شبکه بلاک‌چین را دارد، ۱۰۰ ساتوشی هزینه کارمزد می‌طلبد، آیا اگر مجبور بودید این تراکنش روی شبکه (On-Chain) را به اجرا در می‌آوردید؟ نه، چرا که اجرای آن به معنی از دست دادن پول از سوی شماست، هیچ مشوق اقتصادی برای اجرای آن وجود ندارد و هیچ منطقی وجود ندارد که در این محیطی که کارمزدها بالا است، اصلا در وهله اول چنین HTLC ایجاد شود. انتظار می‌رود که در بلندمدت، کارمزدهای شبکه بیت‌کوین بصورت مستمر افزایش یابند، لذا این مسئله بر میزان ارزشی که می‌توان منطقا از طریق شبکه لایتنینگ و با استفاده از HTLCها منتقل نمود اثر گذار است.

راهکاری برای این مسئله وجود دارد که البته آن هم نقایص خاص خودش را دارد: خرد خرد کردن پرداخت‌ها به صورت بسته‌های پرداخت کوچکتر (Packetized Payments). در این روش، بجای اینکه پرداخت را با استفاده از زنجیره‌ای از HTLCها و بصورت یکباره و کامل مسیردهی کنیم و انتقال دهیم، آن را به پرداخت‌های مجزای متعددی تقسیم کنیم که از HTLC‌ها استفاده نمی‌کنند. این کار این امکان را فراهم می‌آورد تا در هر بار درصد کوچکی از پول را به دریافت کننده مورد نظر برسانیم و این کار را بارها و بارها تکرار کنیم تا پرداخت تکمیل شود. اما از آنجا که در این روش دیگر خبری از HTLC نیست، ممکن است هر کدام از این بسته‌های پرداختی خرد شده‌تان به سرقت بروند. اگر حتی یکی از این پرداخت‌های بخش بخش شده انتقال را با موفقیت انجام ندادند، می‌توانید دیگر از آن مسیر استفاده نکنید و مسیر دیگری را امتحان کنید. مشکلی که هست این است که وقتی حتی یکی از این پرداخت‌های خرد شده ناموفق شوند شما نمی‌دانید که در زنجیره مسیردهی چه کسی را مقصر قلمداد کنید. بنابراین مجبورید مسیر جدیدی را از نو خودتان بازسازی کنید و دیگر به هیچ کسی در مسیر قبلی اعتماد نکنید. این راهکار در محیطی که خصومت و دشمنی در آن وجود دارد به خوبی عمل نمی‌کند.

تاخیر در پرداخت

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

اگر به صورت مکرر از شبکه لایتنینگ استفاده می‌کنید، ممکن است متوجه شده باشید که گاهی اوقات چند ثانیه و در بدترین حالت ثانیه‌های زیادی طول می‌کشد تا والت‌ها پس از اینکه پرداختتان انجام شده، مانده حساب‌ها را بروز کنند. تنها والت سبکی که من با آن آشنایی دارم والت Breeze است که پس از زدن دکمه Send بین ۵ تا ۲۰ ثانیه طول می‌کشد تا مانده حساب را بروز کند.

در حال حاضر این مسئله به چیزی بیش از اصطکاک ناچیزی که در UX وجود دارد ارتباط داده نمی‌شود و فرقی هم با همان معطلی‌هایی که پای دستگاه‌های پوز فروشگاه‌ها تجربه می‌کنیم تا تراکنش به درستی انجام شود ندارد. اما پیشنهاد پرداخت‌های خرد خرد شده که در بالا از آن بعنوان راه حلی برای پرداخت‌های کوچکی که ارزش استفاده از HTLC را ندارند اسم برده شد، به یاد بیاورید. این معطلی‌ها و تاخیر‌ها در پرداخت‌هایی که با استفاده از HTLC انجام می‌شوند مسأله قابل توجهی به شمار می‌روتد چه برسد به اینکه تصور کنید که به جای فقط دو بار امضا‌کردن یک HTLC تنها، با صدها امضا برای انتقال همان پرداختی روبرو باشید که حالا بدل به خرده پرداخت‌های متعددی شده است. در این شرایط، این مسأله بدل به مسأله خیلی بزرگتری به لحاظ UX می‌شود و تنگنای مقیاس‌پذیری را برای نودهای مسیردهی مطرح می‌کند. عملیات‌های امضا‌ی رمزنگاری شده(Cryptographic signing) قطعا خیلی ارزان و سریع هستند اما در جهانی که شبکه لایتنینگ برای آن ساخته شده تا همه جور ریزپرداخت و پرداخت‌های کوچک و مستمر(streaming payments) را پوشش دهد و پرداخت‌های بزرگتر مرسوم هم می‌بایست به خرده پرداخت‌های در سطح ساتوشی تبدیل شوند، این موضوع بدل به تنگنای بزرگی برای نودهای مسیردهی می‌شود. این داینامیک می‌تواند در بلندمدت ایده راه اندازی یک نود مسیردهی سودده (یا حداقل یک نود قابل اتکا که بتوان به صورت گسترده از آن استفاده نمود) بر روی سخت افزار ارزانی همچون رسپبری پای ( Raspberry Pi) و یا دیگر رایانه‌های تک بردی را از بین می‌برد.

قرارداد‌های HTLC تنها چیزی نیستند که تحت تاثیر شدید نوسانات و افزایش کارمزد تراکنش‌های روی شبکه هستند بلکه خود کانالهای لایتنینگ هم قربانی چنین داینامیکی هستند. فرض کنید می‌خواهید یک کانال لایتنینگ با ظرفیت ۱۰ دلار بیت‌کوین باز کنید اما کارمزد آن تراکنش روی شبکه بیت‌کوین یک دلار است. این کانال برای اینکه در وهله اول ایجاد شود نیازمند ده درصد فی و کارمزد شبکه است. اما اگر در یک کانال ۱۰۰ دلار قرار دهید، نرخ کارمزدی که عملا می‌پردازید یک درصد می‌شود. این مسأله باعث ایجاد کف بازار واقعی برای افرادی می‌شود که سعی دارند مستقیما با شبکه لایتنینگ تعامل داشته باشند اگر نرخ کارمزد شبکه برای باز‌کردن یک کانال خیلی بالا باشد، هیچ کس آن را باز نمی‌کند.

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

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

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

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

اتکا به فناوری TOR

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

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

شبکه TOR در معرض آسیب پذیری‌های زیادی در مقابل حملات هم قرار دارد. سر و کله زدن با حملات DDOS در TOR نسبت به سایر فضاها در اینترنت دشوارتر است. در اینترنت معمولی، سرویس‌هایی وجود دارند که افزایش یکباره و ناگهانی ترافیک سایت‌ها را کنترل می‌کنند. همچنین، در اینترنت محافظت نشده، می‌توان ترافیکی که از سوی نقاطی که مخرب هستند را رد کرد. اما در TOR شما بنا به طراحی آن نمی‌دانید که ترافیک از کجا می‌آید در نتیجه کنترل و مهار حملات DDOS خیلی دشوارتر است. بنا به همین مسائل سیستمی است که توسعه دهندگان TOR به فکر استفاده از Anonymization یا هش‌کش‌های شبیه به اثبات انجام کار (PoW) به منظور مقابله با این نوع حملات هستند. سیستمی که تا این حد در مقابل این نوع حملات آسیب پذیر است، قابلیت اتکای نودهای لایتنینگ را که بر روی این سیستم TOR به اجرا در می‌آیند را زیر سوال می‌برد.

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

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

جمع‌بندی

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

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


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

صفحه توییتر:

http://twitter.com/BitcoinBreads

کانال تلگرام:

https://t.me/BitcoinBreads