ایران اکسچنج

قرارداد هوشمند بیت کوین چیست؟ Bitcoin Script، Taproot و کاربردها

قرارداد هوشمند بیت کوین چیست؟ Bitcoin Script، Taproot و کاربردها

ترمه افضلی
زمان تقریبی مطالعه: 5 دقیقه
فهرست عناوین

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

به همین دلیل می‌توان روی بیت‌کوین قراردادهای دیجیتال و تراکنش‌های شرطی ساخت؛ اما بهتر است آن‌ها را با Smart Contractهای عمومی و Stateful شبکه‌هایی که ماشین مجازی عمومی دارند یکسان ندانیم. Bitcoin Script عمداً محدودتر طراحی شده و برای اجرای برنامه‌های دلخواه، Loopهای نامحدود یا نگهداری State عمومی مشابه یک VM همه‌منظوره ساخته نشده است.

در این مقاله بررسی می‌کنیم Bitcoin Script چه امکاناتی دارد، multisig و timelock چگونه کار می‌کنند، Taproot و Tapscript چه چیزی اضافه کرده‌اند و چه بخشی از «قرارداد هوشمند بیت‌کوین» مربوط به لایه پایه و چه بخشی مربوط به پروتکل‌های بالاتر است. برای آشنایی با معماری خود شبکه نیز می‌توانید مقاله شبکه بیت‌کوین چیست؟ را مطالعه کنید.

قرارداد هوشمند بیت‌کوین چیست؟

در Bitcoin، هر UTXO دارای یک شرط خرج‌کردن است. زمانی که کاربر می‌خواهد آن خروجی را خرج کند، داده لازم برای برآورده‌کردن آن شرط را ارائه می‌دهد و Nodeها اعتبار آن را طبق قواعد Script و Consensus بررسی می‌کنند.

در ساده‌ترین حالت، شرط می‌تواند فقط «ارائه امضای معتبر برای این کلید» باشد. در حالت‌های پیچیده‌تر می‌توان چند امضا، Hash Lock، Time Lock یا ترکیبی از این شرط‌ها را به کار برد.

بنابراین جمله فعلی «هر تراکنش بیت‌کوین یک قرارداد هوشمند است» بهتر است حذف شود. همه تراکنش‌ها از Script/Spending Conditions استفاده می‌کنند، اما در کاربرد رایج، عبارت Smart Contract معمولاً برای Policyهای شرطی پیچیده‌تر به کار می‌رود.

قرارداد هوشمند بیت‌کوین چه تفاوتی با Smart Contract عمومی دارد؟

تفاوت اصلی در مدل برنامه‌پذیری است. Bitcoin Script یک زبان Stack-based و عمداً محدود است که برای مشخص‌کردن شرایط خرج UTXO طراحی شده است. در مقابل، برخی شبکه‌های Smart Contract محور محیطی عمومی‌تر برای اجرای برنامه‌های Stateful فراهم می‌کنند.

موضوعBitcoin ScriptSmart Contract عمومی
مدل اصلیشرط خرج UTXOاجرای برنامه/State عمومی
Loop عمومینداردبسته به VM ممکن است داشته باشد
دسترسی مستقیم به API خارجینداردمعمولاً همچنان نیازمند Oracle است
تمرکز طراحیاعتبارسنجی قابل پیش‌بینی شرایط پرداختبرنامه‌پذیری عمومی‌تر

برای تعریف عمومی‌تر Smart Contractها، مقاله قرارداد هوشمند چیست؟ مکمل این صفحه است.

P2SH چه نقشی در قراردادهای بیت‌کوین دارد؟

P2SH یا Pay-to-Script-Hash در BIP16 معرفی شد تا فرستنده بتواند به Hash یک Redeem Script پرداخت کند و جزئیات شرایط خرج‌کردن هنگام Spend شدن خروجی ارائه شوند.

هدف اصلی P2SH انتقال مسئولیت تعریف شرایط پیچیده از فرستنده به دریافت‌کننده و کوتاه‌ترکردن اطلاعات لازم برای Funding بود؛ نه تضمین «حریم خصوصی بیشتر» یا «کمترین کارمزد ممکن». BIP16 صریحاً توضیح می‌دهد که P2SH امکان Funding یک Script دلخواه را با یک Hash ثابت‌طول فراهم می‌کند. BIP16 - Pay to Script Hash

همچنین عبارت «P2SH همیشه با عدد 3 شروع می‌شود» فقط درباره آدرس Base58 رایج Mainnet صدق می‌کند و برای درک مفهوم Script ضروری نیست؛ بهتر است محور توضیح مقاله روی Mechanism باشد نه ظاهر Address.

قرارداد چندامضایی یا Multisig در بیت‌کوین

Multisig اجازه می‌دهد خرج‌کردن یک Output به چند کلید وابسته باشد. برای نمونه در Policy دو از سه، هر دو امضا از میان سه کلید تعریف‌شده برای Spend کردن کافی‌اند.

این ساختار می‌تواند برای خزانه سازمانی، نگهداری مشترک یا بازیابی امن‌تر دارایی مفید باشد، اما امنیت آن به نحوه نگهداری کلیدها، Backup و طراحی Policy بستگی دارد. جمله فعلی که «گم‌شدن یک کلید باعث می‌شود سایرین نتوانند آن را دستکاری کنند» دقیق نیست؛ در یک 2-of-3، از دست‌رفتن یک کلید همچنان می‌تواند Spend معتبر را با دو کلید باقی‌مانده ممکن نگه دارد.

در Tapscript، opcode قدیمی OP_CHECKMULTISIG غیرفعال است و ساخت Policyهای چندکلیدی با سازوکارهای جدیدتری مانند OP_CHECKSIGADD انجام می‌شود.

Timelock در قراردادهای بیت‌کوین چگونه کار می‌کند؟

Timelock اجازه می‌دهد یک مسیر خرج قبل از رسیدن به زمان یا ارتفاع بلاک مشخص معتبر نباشد. Bitcoin دو دسته مهم Time Constraint دارد:

  • Absolute Timelock: محدودیت تا یک زمان/ارتفاع مشخص؛ OP_CHECKLOCKTIMEVERIFY در BIP65 این امکان را برای Script فراهم می‌کند.
  • Relative Timelock: محدودیت بر اساس سن خروجی؛ OP_CHECKSEQUENCEVERIFY در BIP112 همراه با BIP68 استفاده می‌شود.

BIP65 تصریح می‌کند که CLTV می‌تواند Output را تا زمان یا Block Height تعیین‌شده غیرقابل Spend کند. BIP65 - CHECKLOCKTIMEVERIFY

BIP112 نیز Relative Timelock را برای Script Pathها تعریف می‌کند و از کاربرد آن در قراردادهای چندمرحله‌ای و HTLCها یاد می‌کند. BIP112 - CHECKSEQUENCEVERIFY

برخلاف متن قبلی، تراکنش Timelocked لزوماً «در حالت انتظار داخل بلاکچین» باقی نمی‌ماند؛ تا پیش از Final شدن ممکن است اصلاً قابل Mining/Relay طبق Policy مربوط نباشد.

HTLC چیست و چه ارتباطی با قرارداد هوشمند بیت‌کوین دارد؟

Hashed Time-Locked Contract یا HTLC ترکیبی از Hash Lock و Time Lock است. یک مسیر Spend با ارائه Secret معتبر فعال می‌شود و مسیر دیگر پس از Timeout قابل استفاده است.

این ساختار یکی از اجزای مهم پروتکل‌های پرداخت لایه بالاتر Bitcoin است. BIP112 نمونه‌ای از HTLC را با ترکیب CHECKSEQUENCEVERIFY و CHECKLOCKTIMEVERIFY نمایش می‌دهد.

HTLC نمونه خوبی است که نشان می‌دهد «Smart Contract روی Bitcoin» بیشتر به ساخت Policyهای پرداخت شرطی مربوط است تا اجرای یک Application عمومی روی Base Layer.

آیا Bitcoin Script مستقیماً به Oracle یا داده بیرونی دسترسی دارد؟

خیر. Bitcoin Script نمی‌تواند مستقیماً API، قیمت بازار، نتیجه مسابقه یا داده خارجی را از اینترنت دریافت کند. بنابراین جمله فعلی که «Oracle کدی است که به بلاکچین بیت‌کوین اجازه دریافت اطلاعات برون‌زنجیره‌ای می‌دهد» باید حذف شود.

یکی از روش‌های استفاده از رویداد خارجی، Discreet Log Contract یا DLC است. در DLC، Oracle نتیجه رویداد را با امضای رمزنگاری‌شده Attest می‌کند و طرفین از آن امضا برای انتخاب Outcome از پیش‌ساخته‌شده قرارداد استفاده می‌کنند؛ Oracle تراکنش را مستقیماً اجرا یا وجوه را Custody نمی‌کند.

Specification رسمی DLC این مدل را برای قراردادهای Bitcoin وابسته به رویدادهای واقعی توضیح می‌دهد. معرفی فنی Discreet Log Contracts

Taproot و Tapscript چه چیزی به قراردادهای بیت‌کوین اضافه کردند؟

Taproot در Mainnet بیت‌کوین فعال شد و BIP341/BIP342 مدل جدیدی برای Spend کردن Outputهای SegWit v1 فراهم کردند. یک Taproot Output می‌تواند از Key Path یا از Script Path خرج شود.

در Script Path، شرط‌های مختلف می‌توانند در یک Merkle Tree قرار بگیرند و هنگام Spend فقط شاخه لازم آشکار شود. این طراحی می‌تواند Privacy و Efficiency Policyهای چندشاخه را نسبت به آشکارکردن همه شرط‌ها بهتر کند.

BIP342 نیز Tapscript را به‌عنوان سیستم Script مربوط به Taproot تعریف می‌کند و مسیر ارتقای opcodeها را ساده‌تر می‌سازد. BIP342 - Validation of Taproot Scripts

برای جزئیات بیشتر خود ارتقا، مقاله Taproot بیت‌کوین چیست؟ را مطالعه کنید.

Miniscript چیست و چه کمکی به قراردادهای Bitcoin می‌کند؟

Miniscript یک زبان ساختاریافته برای بیان Subset مشخصی از Bitcoin Script است. هدف آن این است که Policyهای ترکیبی از Signature، Hash Lock و Time Lock راحت‌تر تحلیل، Compose و Sign شوند.

BIP379 Miniscript را برای نوشتن ساختاریافته Bitcoin Script تعریف می‌کند. BIP379 - Miniscript

Miniscript یک تغییر Consensus یا ماشین مجازی جدید نیست؛ ابزاری در سطح Wallet/Policy است که ساخت Scriptهای قابل تحلیل را ساده‌تر می‌کند. طبق مستند فعلی Bitcoin Core، پشتیبانی Miniscript از نسخه 26 به‌صورت کامل پیاده‌سازی شده است. وضعیت پیاده‌سازی BIPها در Bitcoin Core

کاربردهای واقعی قراردادهای بیت کوین چیست؟

مقاله فعلی کاربردهایی مانند رأی‌گیری ملی، پرونده سلامت، مالیات و زنجیره تأمین را به‌صورت مستقیم به Smart Contractهای Bitcoin نسبت می‌دهد. این موارد کاربردهای عمومی فناوری Blockchain/Smart Contract هستند و نباید بدون نمونه فنی مشخص به قابلیت Native لایه پایه Bitcoin نسبت داده شوند.

کاربردهایی که مستقیماً با قابلیت‌های Script و Protocolهای Bitcoin هم‌خوانی دارند عبارت‌اند از:

  • Multisig Treasury: کنترل مشترک وجوه با چند کلید.
  • Timelocked Recovery: مسیر بازیابی که پس از زمان مشخص فعال می‌شود.
  • Escrow-like Policies: طراحی مسیرهای Spend با چند طرف و Timeout.
  • HTLC: پرداخت‌های شرطی بر اساس Secret و Time.
  • Payment Channels: قراردادهای لایه بالاتر که Settlement نهایی را روی Bitcoin انجام می‌دهند.
  • DLC: قراردادهای وابسته به Event با استفاده از Oracle Signature.
  • Taproot Policies: شرط‌های چندشاخه که فقط مسیر Spendشده را آشکار می‌کنند.

محدودیت‌های قرارداد هوشمند بیت‌کوین چیست؟

  • برنامه‌پذیری محدودتر: Script برای General-purpose computation طراحی نشده است.
  • عدم دسترسی مستقیم به داده بیرونی: برای Event خارجی به Protocolهایی مانند DLC و Oracle Signature نیاز است.
  • State عمومی محدود: مدل UTXO با Account/Contract State دائمی متفاوت است.
  • هزینه Block Space: Script و Witness پیچیده‌تر می‌توانند فضای بیشتری مصرف کنند.
  • پیچیدگی Key Management: Multisig یا Policy پیچیده در صورت Backup ضعیف می‌تواند ریسک عملیاتی ایجاد کند.
  • Immutable Spending Condition: پس از ایجاد Output، شرط آن Output عوض نمی‌شود؛ برای Policy جدید باید UTXO جدید ساخته شود.

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

آیا قرارداد هوشمند بیت‌کوین بدون ریسک است؟

خیر. Consensus Security بیت‌کوین خطاهای طراحی Policy، از دست‌رفتن Key، Backup ناقص، انتخاب Timelock اشتباه یا Bug در نرم‌افزار Wallet را حذف نمی‌کند.

برای Policyهای پیچیده باید از Software و Libraryهای بررسی‌شده استفاده کرد و شرایط Spend، Recovery Path و Backup کلیدها پیش از Funding آزمایش شوند. برای شناخت نرم‌افزار مرجع پروتکل، مقاله Bitcoin Core چیست؟ مکمل این بخش است.

آیا توسعه Smart Contract در بیت‌کوین به معنی رشد قیمت BTC است؟

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

اگر هدف بررسی Market Value است باید قیمت بیت‌کوین و عوامل مستقل عرضه، تقاضا، نقدینگی و شرایط بازار بررسی شوند. بخش فعلی مقاله که Bitcoin را به دلیل «خاصیت ضدتورمی» به‌صورت کلی مناسب سرمایه‌گذاری معرفی می‌کند باید از این مقاله فنی حذف شود.

جمع‌بندی؛ قرارداد هوشمند بیت‌کوین یعنی برنامه‌پذیری شرایط خرج

قابلیت قرارداد در Bitcoin بر پایه Script و مدل UTXO ساخته شده است. Multisig، Timelock، Hashlock، HTLC و Taproot نمونه‌هایی هستند که اجازه می‌دهند Bitcoin فقط با یک امضای ساده Spend نشود و شرایط پیچیده‌تری برای انتقال ارزش تعریف شود.

این قابلیت‌ها قدرتمندند اما با محیط‌های General-purpose Smart Contract متفاوت‌اند. برای تحلیل درست باید قابلیت Native Bitcoin، ابزارهایی مانند Miniscript و Protocolهای بالاتر مانند DLC از یکدیگر تفکیک شوند و درباره کاربردهایی که واقعاً روی Base Layer پیاده نشده‌اند اغراق نشود.

سوالات متداول

آیا بیت‌کوین Smart Contract دارد؟

بله، Bitcoin می‌تواند شرایط خرج برنامه‌پذیر مانند multisig، timelock، hashlock و Taproot script path داشته باشد؛ اما مدل آن از ماشین‌های مجازی عمومی Smart Contract متفاوت است.

آیا Bitcoin Script تورینگ کامل است؟

خیر. Script عمداً مجموعه عملیات محدود و بدون Loop عمومی دارد تا Validation تراکنش‌ها قابل پیش‌بینی باقی بماند.

آیا هر تراکنش بیت کوین Smart Contract است؟

هر Spend باید شرایط Script خروجی قبلی را برآورده کند، اما در کاربرد رایج بهتر است Smart Contract را برای Policyهای شرطی پیچیده‌تر به کار ببریم.

Taproot چه نقشی در Smart Contractهای بیت‌کوین دارد؟

Taproot امکان Key-path و Script-path spending را فراهم می‌کند و در Policyهای چندشاخه می‌تواند فقط مسیر استفاده‌شده را آشکار کند.

آیا Bitcoin Script می‌تواند قیمت دلار یا نتیجه یک رویداد را مستقیماً بخواند؟

خیر. برای وابسته‌کردن پرداخت به داده خارجی باید از ساختارهایی مانند Oracle Signature و DLC استفاده شود.

Miniscript جایگزین Bitcoin Script است؟

خیر. Miniscript روش ساختاریافته‌ای برای بیان و تحلیل Subset مشخصی از Bitcoin Script است و Consensus جدیدی ایجاد نمی‌کند.

نظرسنجی