شیر یا خط فصل ششم - قسمت سوم

شبکة لایتنینگ - راهکار مقیاس‌پذیری بیتکوین (قسمت ۱)


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

🇬🇧 English Summary

The episode “Lightning, Make Bitcoin Scalable - Part 1” kicks off شیر یا خط’s season-six deep dive into Bitcoin scalability and Layer 2 solutions, with host Mehdi joined by Bitcoin Iran experts Zia, Nima, and Amir Hossein (a Bitcoin Core contributor) to unpack the Lightning Network as the first practical off-chain, Layer 2 payment network built on BTC. Framing Lightning against the blockchain trilemma of scalability, security, and decentralization, the hosts explain how it moves cheap, high-throughput microtransactions off-chain while relying on Bitcoin’s base-layer security, using only two on-chain transactions (a funding transaction and a channel-closing transaction) to enable unlimited off-chain payments through an “overlay network.” They walk through the on-chain prerequisites in technical depth—2-of-2 multisig accounts, UTXOs, chainstate, Bitcoin Script with locking/unlocking scripts (pubScript and scriptSig), and the stack-based validation machine with opcodes like OP_CHECKMULTISIGVERIFY, OP_CHECKLOCKTIMEVERIFY (CLTV, via BIP 65) and OP_CHECKSEQUENCEVERIFY (CSV, relative timelocks added around SegWit)—and how these enable bidirectional payment channels. The discussion covers HTLCs (Hash Time Locked Contracts) and OP_IF conditional script paths, channel opening, and commitment transactions that let either party unilaterally reclaim funds if a counterparty goes offline or turns malicious. A central segment details how off-chain payments work by creating and exchanging new commitment transactions that rebalance the channel, how old commitments are revoked via revocation keys and penalty transactions (with watchtowers and game-theoretic anti-fraud incentives), and how the fully interactive nature of Lightning is the trade-off accepted for scalability. The hosts also preview future episodes on payment routing across multi-hop channels and upcoming Bitcoin upgrades like Taproot, PTLCs, and OP_CHECKTEMPLATEVERIFY (OP_CTV), repeatedly using a bank-and-check analogy to make multisig, commitments, and off-chain settlement intuitive.

توضیحات اپیزود

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

ایده اصلی این است که روی شبکه بیتکوین تنها به دو تراکنش نیاز داریم: یک تراکنش فاندینگ (Funding Transaction) که مقداری بیتکوین را به شکل چند امضایی بین دو نفر قفل می‌کند، و در نهایت یک تراکنش بستن کانال (Closing). به ازای این دو تراکنش که فضای ذخیره‌سازی شبکه را اشغال می‌کنند، می‌توان تعداد بسیار زیادی تراکنش را خارج از شبکه و بین طرفین انجام داد و در صورت اتصال افراد دیگر، آن‌ها را مسیریابی کرد. مهمانان تأکید می‌کنند که لایه دوم یک گیم‌چنجر است و نباید آن را با لایه اول مقایسه کرد؛ حتی به‌جای واژه‌هایی مثل «غیرمتمرکزتر» بهتر است از مفهوم تراست‌لس بودن استفاده کنیم، چون در لایه دوم در ازای به دست آوردن مقیاس‌پذیری و خاصیت غیرتعاملی، یک سری تریدآف را می‌پذیریم.

بدنه فنی اپیزود روی پیش‌زمینه‌ها متمرکز است: حساب‌های چند امضایی دو از دو، زبان برنامه‌نویسی اسکریپت بیتکوین و مفهوم Locking Script و Spending Script، نگهداری پازل‌ها در قالب UTXO و chainstate، عملگرهای زمانی و شرطی مورد نیاز، قراردادهای HTLC، و فرآیند باز کردن کانال با تراکنش تعهد (Commitment). در پایان نیز روش تنبیه در صورت تقلب و کلید ریووکیشن توضیح داده می‌شود، اما همان‌طور که خودشان می‌گویند این فقط شالوده و سنگ بنای کار است و مسیریابی پرداخت‌ها، واچ‌تاورها و گیم‌تئوری تقلب به اپیزودهای بعدی موکول می‌شود.

نکات اصلی بحث‌شده

چرا لایه دوم و شبکه لایتنینگ

  • بلاکچین‌ها ذاتاً به‌سختی مقیاس‌پذیرند و اگر بخواهیم خود لایه اصلی را اسکیل کنیم، چیزهایی مثل عدم تمرکز و امنیت زیر سؤال می‌رود.
  • در بیتکوین باور بر این است که تراکنش روی لجر اصلی گران است و باید هم گران باشد؛ به همین دلیل پرداخت‌های خرد و مایکرو تراکنش‌ها به یک لایه دیگر منتقل می‌شوند.
  • مثلث معروف مقیاس‌پذیری، امنیت و عدم تمرکز: بهبود یکی می‌تواند به دیگری آسیب بزند، و راه‌حل لایتنینگ این است که منطق مقیاس‌پذیری را در لایه دیگری abstract کند تا لایه اصلی دست‌نخورده و آپگریدها ساده‌تر بماند.
  • لایتنینگ یک Overlay Network (شبکه انتزاعی) روی بیتکوین است که با استفاده از امنیت شبکه اصلی، تراکنش‌ها را خارج از شبکه انجام می‌دهد.

حساب‌های چند امضایی و زبان اسکریپت بیتکوین

  • تراکنش‌های بیتکوین واحدهای پولی را در یک «صندوق» یا پازل قفل می‌کنند و برای خرج کردن باید پیش‌نیازهای حل آن پازل به شبکه اعلام شود.
  • ساتوشی یک زبان برنامه‌نویسی ساده به نام اسکریپت در بیتکوین قرار داده که با آن می‌توان شرایط مختلف خرج کردن را تعریف کرد؛ ساده‌ترین حالت یک امضا و یک کلید عمومی است.
  • در لایتنینگ از حساب چند امضایی دو از دو استفاده می‌شود؛ یعنی پول مشترک باید با امضای هر دو نفر خرج شود.
  • اصطلاحات کلیدی: Locking Script (پازلی که در خروجی تراکنش قرار می‌گیرد) و Spending/Redeeming Script یا اسکریپت‌سیگ (راه‌حل پازل که هنگام خرج کردن ارائه می‌شود)، به‌علاوه پاب‌اسکریپت.
  • این پازل‌ها به شکل UTXO نگهداری می‌شوند و مجموعه آن‌ها در chainstate است که هر نود بیتکوین بلاک به بلاک آن را لوکال آپدیت می‌کند تا همه نودها chainstate یکسانی داشته باشند.

عملگرهای مورد نیاز لایتنینگ

  • سیستم ولیدیشن بیتکوین یک ماشین استک‌بیس است؛ تراکنش وقتی ولید است که پس از اجرای عملگرها ته استک مقدار یک (true) بماند.
  • CheckMultiSigVerify: بررسی می‌کند که امضاهای لازم (مثلاً دو از دو یا دو از سه) برای باز کردن پازل معتبر باشند.
  • CheckLockTimeVerify (CLTV): به‌صورت مطلق مشخص می‌کند که از یک شماره بلاک یا زمان مشخص به بعد UTXO قابل خرج است.
  • CheckSequenceVerify (CSV): همان کار را به‌صورت نسبی (Relative) انجام می‌دهد؛ مثلاً از هر بلاکی که این تراکنش ماین شد تا ده بلاک بعد قابل خرج نیست.
  • تاریخچه قفل زمانی: پیش از BIP65 قفل کردن پر تراکنش انجام می‌شد و تراکنش اصلاً ماین نمی‌شد؛ BIP65 عملگر CLTV را معرفی کرد که قفل را پر UTXO ممکن می‌کند، و CSV هم پیش از سگویت فعال شد و بعداً لایتنینگ از آن استفاده کرد.

قراردادهای HTLC

  • HTLC مخفف Hash Time Locked Contract است؛ یک اسکریپت با دو مؤلفه: یک هش و یک تایم‌لاک.
  • با استفاده از عملگر OP_IF مسیرهای مختلف اجرا تعریف می‌شود: اگر کاربر هش درست (پیش‌تصویر آن راز) را فراهم کند، یک مسیر خرج می‌شود؛ اگر نتواند، پس از یک مدت معلوم و طی تایم‌لاک قابل خرج می‌شود.
  • این مفهوم ساده کاربردهای خلاقانه گسترده‌ای در مسیریابی تراکنش‌ها و سایر بخش‌های لایتنینگ دارد و در سواپ‌ها و سابمارین سواپ هم استفاده می‌شود.
  • با تپروت مفاهیم جدیدی مثل PTLC هم مطرح شده که مسیر تازه‌ای پیش رو می‌گذارد و می‌تواند HTLCها را ساده‌تر و لایتنینگ را تمیزتر کند.

باز کردن کانال و تراکنش تعهد (Commitment)

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

پرداخت و روش تنبیه در صورت تقلب

  • هر پرداخت روی شبکه لایتنینگ در واقع ساختن یک تراکنش تعهد جدید است که تعهد قبلی را عوض می‌کند و موجودی جدید را بین دو طرف تقسیم می‌کند.
  • تعهد قبلی باید نامعتبر (Invalidate) شود؛ اما این نامعتبر کردن به معنای پاک کردن تراکنش از کامپیوتر طرف مقابل نیست، بلکه با یک اسکریپت درون خود تراکنش انجام می‌شود.
  • خطر تقلب: طرف مقابل ممکن است بخواهد یک تعهد قدیمی‌تر (استیت قبلی) را به نفع خودش روی شبکه منتشر کند.
  • راه‌حل کلید ریووکیشن (Revocation Key): با هر تعهد جدید، کلید ریووکیشن تعهد قبلی رد و بدل می‌شود؛ اگر طرف مقابل تعهد ریووک‌شده را منتشر کند، طرف دیگر می‌تواند با آن کلید کل مبلغ کانال را به حساب خودش برگرداند و او را جریمه کند.
  • این جریمه در یک بازه زمانی محدود (مثلاً تعدادی بلاک) ممکن است و همین انگیزه تقلب را از بین می‌برد؛ تشبیه به گرفتن چک قبلی هنگام صدور چک جدید.

نتیجه‌گیری

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

لینک های این اپیزود:

قسمت‌های مرتبط

  • لایتنینگ - قسمت ۲ — ادامه‌ی مستقیم همین اپیزود؛ همان‌طور که در پایان قول دادند، واچ‌تاورها، تئوری بازی تقلب و کانال‌های پرداخت را باز می‌کند
  • لایتنینگ - قسمت ۳ — سومین قسمت همین سری لایتنینگ که ادامه‌ی جزئیات مسیریابی و شبکه‌ی پرداخت را پوشش می‌دهد
  • مقیاس‌پذیری - قسمت ۲ — اپیزود بلافاصله قبلی که راهکارهای لایه دوم را معرفی کرد؛ در همین قسمت بارها به آن ارجاع داده شد
  • مقیاس‌پذیری - قسمت ۱ — شروع بحث مقیاس‌پذیری و گلوگاه بلاکچین که پیش‌زمینه‌ی چرایی نیاز به لایتنینگ است
  • سگویت و لایتنینگ — معرفی اولیه‌ی شبکه لایتنینگ و سگویت که آپگرید کلیدی و پیش‌نیاز پیاده‌سازی کامل لایتنینگ است
  • سگویت و BIP148 — توضیح سگویت که در این اپیزود به‌عنوان آپگرید لازم برای فعال شدن بهترین حالت لایتنینگ به آن اشاره شد

زمان‌بندی فصل‌ها

  • 00:00 مقدمه و معرفی
  • 04:57 خلاصه اپیزودهای قبل
  • 06:33 معرفی ساده شبکه‌ی لایتنینگ
  • 14:45 پیش زمینه‌های لایتنینگ در شبکه‌ی اصلی بیتکوین
  • 15:45 حساب‌های چند امضایی (Multi-Signature) در بیتکوین
  • 38:30 بیتکوین که از آنها در شبکه‌ی لایتنینگ استفاده می‌شود (Instruction Set) عملگرهای
  • 41:40 در لایتنینگ چگونه است؟ Locking Script
  • 45:35 باز کردن کانال لایتنینگ مرحله به مرحله
  • 58:00 پرداخت و دریافت پول در شبکه‌ی لایتنینگ
  • 01:02:50 تنبیه در صورت تقلب
  • 01:07:50 خلاصه این قسمت