در دنیای بیتکوین، گاهی برای افزودن قابلیتهای جدید نیاز به ارتقاءهایی است که با قوانین فعلی شبکه سازگار باشند. یکی از بحثهای داغ این روزها OP_CAT و موج جدیدی از سافتفورکهای بیتکوین است که برای بهبود تواناییهای فنی بیتکوین پیشنهاد شدهاند. OP_CAT یک opcode بیتکوین (دستور عمل در زبان اسکریپت بیتکوین) است که پس از سالها دوباره مورد توجه توسعهدهندگان قرار گرفته است. در این مقاله سعی میکنیم با زبانی ساده توضیح دهیم که OP_CAT چیست، چرا مهم شده، سافتفورک چه مفهومی دارد و موج جدید سافتفورکها چه اهدافی را دنبال میکنند. همچنین به مفهوم لایه دو بومی در بیتکوین و نقش OP_CAT در آن، مثالهای کاربردی ساده، ریسکها و نگرانیها، و مسیر پیشنهادی پیادهسازی این تغییرات از طریق BIP بیتکوین (پیشنهادهای بهبود بیتکوین) و اجماع جامعه میپردازیم.
فهرست مطالب
- OP_CAT چیست و چگونه کار میکند؟
- چرا OP_CAT در بیتکوین اهمیت پیدا کرده است؟
- سافتفورک چیست و موج جدید سافتفورکهای بیتکوین چه اهدافی دارند؟
- لایه۲ بومی روی بیتکوین چیست و OP_CAT چگونه میتواند به آن کمک کند؟
- سناریوهای کاربردی ساده برای OP_CAT
- ریسکها و نگرانیها درباره OP_CAT و تغییرات در بیتکوین
- مسیر پیادهسازی پیشنهادی از طریق BIPها و اجماع جامعه بیتکوین
- جمعبندی
- سوالات متداول
OP_CAT چیست و چگونه کار میکند؟
OP_CAT (برگرفته از واژه Concatenate به معنی بههم چسباندن) یک دستور عملیاتی در زبان اسکریپت بیتکوین است که وظیفه آن اتصال دو قطعه داده به یکدیگر است. به زبان ساده، OP_CAT دو داده را میگیرد و آنها را پشت سر هم قرار میدهد و نتیجه را در بالای پشتهی اسکریپت قرار میدهد. برای مثال، اگر دو دادهی A
و B
در اختیار داشته باشیم، اجرای OP_CAT حاصل را به صورت AB
ترکیب میکند. این قابلیت به ظاهر ساده میتواند تأثیر بزرگی در تواناییهای اسکریپت بیتکوین داشته باشد.
نکته تاریخی مهم این است که OP_CAT در نسخههای اولیه بیتکوین وجود داشت اما در سال ۲۰۱۰ توسط ساتوشی ناکاموتو غیرفعال شد. علت این تصمیم نگرانیهای امنیتی بود؛ در آن زمان ممکن بود با استفاده از OP_CAT حجم بسیار زیادی داده به بلاکچین بیتکوین تزریق شود و گرههای شبکه را دچار اختلال یا حملهی منع سرویس (DoS) کند. برای مثال، ترکیب OP_CAT با دستوراتی مثل OP_DUP اجازه میداد اسکریپتهای عظیمی ساخته شود (تا حد ۲۰۰۰ بایت در دورهی ساتوشی) که میتوانست عملکرد نودها را مختل کند. ساتوشی برای حفظ سادگی و پایداری شبکه این دستور را حذف کرد.
اکنون پس از سالها، شرایط تغییر کرده است. در بهروزرسانی بیتکوین Taproot (اجرایی در سال ۲۰۲۱) محدودیتی برای اندازه اسکریپتها در نظر گرفته شد (حداکثر ۵۲۰ بایت در هر استک تپاسکریپت) که خطر سوءاستفادهی قبلی را برطرف میکند. به همین دلیل توسعهدهندگان با اطمینان بیشتری به بازگرداندن OP_CAT فکر میکنند. پیشنهاد رسمی برای فعالسازی دوبارهی OP_CAT به عنوان یک سافتفورک بیتکوین ارائه شده است. این پیشنهاد که توسط ایتن هایلمن (Ethan Heilman) و آرمین صبوری نوشته شده، قصد دارد با استفاده از یک سافتفورک و تعریف مجدد opcode رزروشدهای به نام OP_SUCCESS126، دستور OP_CAT را در تپاسکریپت فعال کند. جالب است بدانید شماره BIP در نظر گرفتهشده برای این طرح BIP-420 است که به طور طنزآمیزی انتخاب شده و توجه جامعه را به خود جلب کرده است.
چرا OP_CAT در بیتکوین اهمیت پیدا کرده است؟
دلیل اصلی اهمیت یافتن دوبارهی OP_CAT این است که این opcode در را به روی قابلیتهای پیشرفته (covenants) در اسکریپت بیتکوین باز میکند. کووننت (covenant) به زبان ساده یعنی امکان تعیین شرایط و محدودیتهایی برای خرج شدن یک خروجی بیتکوین در آینده. در وضعیت فعلی بیتکوین، اسکریپتها عمدتاً فقط میتوانند مشخص کنند چه کسی یا با چه کلیدی یک کوین را خرج کند. اما با covenants میتوان مشخص کرد چگونه و کجا کوین میتواند خرج شود. این قابلیت اجازه میدهد نوعی قرارداد هوشمند سبک در بیتکوین داشته باشیم که بسیار کاربردی است.
OP_CAT با چسباندن دادههای دلخواه به هم، امکان پیادهسازی covenants را فراهم میکند. به عنوان مثال، میتوان بخشی از جزئیات خرج یک تراکنش (مثل آدرس مقصد یا مقدار وجه) را با دادههای دیگر ترکیب و هش کرد و در خروجی قفل کرد، بهطوریکه فقط اگر تراکنش آینده منطبق بر آن جزئیات باشد بتواند کوین را خرج کند. چنین قابلیتی پایهای برای ساخت والتهای هوشمند یا Vault است. والت خزانه (Vault) نوعی قفل هوشمند روی کوینهاست که مثلاً تراکنش برداشت را تا چند بلوک به تأخیر میاندازد و در این مدت امکان برگشت یا تغییر مسیر وجوه وجود دارد. در حال حاضر هیچ روش آنچین مستقیم برای ساخت vault یا covenant وجود ندارد، اما OP_CAT میتواند این امکان را به صورت بومی فراهم کند.
از سوی دیگر، OP_CAT امکان پیادهسازی قراردادهای غیرتقلب (non-equivocation) را فراهم میکند. این اصطلاح در شبکههایی مثل لایتنینگ به معنای مکانیسمی است که اگر یکی از طرفین بخواهد خرج تقلبی یا دوگانه انجام دهد، جریمه شود. در لایتنینگ این کار با امضای مضاعف و افشای کلید خصوصی متقلب انجام میشود. با OP_CAT میتوان اسکریپتی ساخت که مثلاً استفاده مجدد از یک nonce (عدد تصادفی در امضا) را تحمیل میکند و در صورت تلاش برای خرج دوباره، امنیت کلید را به خطر میاندازد. به بیان ساده، OP_CAT میتواند ابزار بهتری برای مجازات تقلب در کانالهای پرداخت (مانند شبکهی لایتنینگ) فراهم کند و امنیت لایه دو را بالاتر ببرد.
مزایای دیگر OP_CAT شامل اشتراکگذاری مالکیت UTXOها و بهبود راهکارهای مولتیسیگ پیچیده است. برای نمونه، با بهرهگیری از ایدهی امضای درختی (Tree Signature) میتوان چندین کلید عمومی را به شکل یک ساختار درختی منطقی ترکیب کرد که فقط در صورت فراهم شدن شرایط خاصی خرج ممکن باشد. این یعنی میتوان چندین امضا و شرط را در تراکنشی گنجاند که اندازهی آن فقط اندکی بزرگتر از یک امضای معمولی است (به شکل لگاریتمی نسبت به تعداد امضاکنندگان). چنین قابلیتی میتواند برای کیف پولهای گروهی یا قراردادهای چندامضایی بزرگ بسیار مفید باشد.
در یک کلام، فعالسازی OP_CAT راه را برای ویژگیهایی مثل قراردادهای هوشمند ساده، پلهای امن بین شبکهای و معاملات پیشرفته روی زنجیره باز میکند. گزارشها اشاره میکنند که با covenants مبتنی بر OP_CAT میتوان کاربردهایی چون ایجاد والتهای امن («خزانهها» برای تراکنشهای بازگشتپذیر)، پرداختهای دورهای خودکار، انتقالهای زمانبندیشده برای ارث، و ابزارهای مالی پیچیده مثل امانتگذاریها (escrow) و اوراق قرضه را ممکن ساخت. چنین امکاناتی تاکنون در بیتکوین میسر نبوده و عمدتاً در بلاکچینهای پیشرفتهتری مانند اتریوم دیده میشد. از این رو بسیاری از توسعهدهندگان امیدوارند که بیتکوین با حفظ امنیت و سادگی خود، از طریق OP_CAT و امثال آن، بهروزرسانی بیتکوین را به سمت کاربردهای گستردهتر پیش ببرد.
سافتفورک چیست و موج جدید سافتفورکهای بیتکوین چه اهدافی دارند؟
برای ایجاد تغییراتی مانند OP_CAT در پروتکل بیتکوین، باید از روشهای سازگار با شبکه استفاده کرد. سافتفورک (Soft Fork) به ارتقایی گفته میشود که با نسخههای قبلی سازگار است. یعنی قوانین جدید به شکلی اعمال میشوند که نودهای قدیمی (که بهروزرسانی نکردهاند) همچنان بلاکهای حاوی این تغییرات را معتبر میبینند، هرچند ممکن است جزئیات جدید را درک نکنند. این برعکس هاردفورک است که مستلزم سازگارینداشتن با نسخههای قبلی و احتمال انشعاب زنجیره است. خوشبختانه اکثر ارتقاءهای مهم بیتکوین در سالهای اخیر از نوع سافتفورک بودهاند (مثل SegWit در ۲۰۱۷ و Taproot در ۲۰۲۱).
موج جدید سافتفورکهای بیتکوین به مجموعهای از پیشنهادهای ارتقاء گفته میشود که پس از تپروت مطرح شدهاند و هدفشان افزایش قابلیتهای بیتکوین بدون لطمه به سازگاری گذشته است. این موج عمدتاً بر بهبود اسکریپت بیتکوین و افزودن امکانات برنامهنویسی به آن متمرکز است. همانطور که گفته شد، زبان اسکریپت بیتکوین عمداً محدود طراحی شده تا امنیت و سادگی شبکه حفظ شود. اما این محدودیتها باعث شده برخی کاربردهای پیشرفته (مثلاً قراردادهای هوشمند یا ارتباطات لایهدو) روی بیتکوین دشوار یا غیرممکن باشد. از سال ۲۰۲۰ به بعد، توسعهدهندگان بهدنبال راههایی برای رفع این محدودیتها بودهاند و کمکم به این اجماع رسیدهاند که افزودن چند opcode جدید از طریق سافتفورک میتواند بهترین راه باشد.
از جمله مهمترین پیشنهادهای این موج میتوان به OP_CTV (CheckTemplateVerify) و OP_CAT اشاره کرد که هر دو برای پیادهسازی انواعی از covenants طراحی شدهاند. OP_CTV (پیشنهاد BIP-119) به فرستنده اجازه میدهد یک الگوی مشخص برای خرج شدن کوینها تعیین و در قالب یک هش در خروجی ثبت کند؛ در نتیجه گیرنده تنها وقتی میتواند کوین را خرج کند که قالب از پیش تعیینشده رعایت شود. این روش نوعی covenant محدود (غیر بازگشتی) ایجاد میکند که موارد استفادهی خاص خود را دارد. OP_CAT نیز (طبق BIP-420) روش دیگری برای دستیابی به covenants است که قابلیتهای متفاوتی ارائه میدهد (مانند امکان ایجاد vault با شرایط پیچیدهتر). علاوه بر اینها، پیشنهادهای دیگری نیز مطرحاند: به عنوان مثال ANYPREVOUT (BIP-118) برای بهبود کانالهای لایتنینگ (اجازهی تغییر امضاها در تراکنشهای بدون تغییر بقیه بخشها) و یا طرحهایی برای vaultسازی با رویکردهای متفاوت. هدف مشترک همه این بهروزرسانیهای بیتکوین آن است که بدون تغییر اصول بنیادی شبکه، قابلیتهای جدیدی اضافه شود تا استفاده از بیتکوین در مقیاس گستردهتر و کاربردهای نوین ممکن گردد.
البته این موج جدید با دیدگاههای متفاوتی در جامعه مواجه شده است. یک دیدگاه محافظهکارانه معتقد است هرگونه افزودن پیچیدگی به بیتکوین میتواند ریسکآفرین باشد و با فلسفه مینیمالیستی بیتکوین در تضاد است. در مقابل، گروه دیگری باور دارند که بیتکوین برای حفظ جایگاه خود در آینده مالی نیاز به ارتقاء و بهبود تدریجی دارد و افزودن امکاناتی نظیر covenants، لایهدو بومی و غیره نه تنها تهدید نیست بلکه ضروری است. بنابراین، بحثها و بررسیهای فراوانی در جریان است تا جوانب مثبت و منفی هر پیشنهاد سنجیده شود.
لایه۲ بومی روی بیتکوین چیست و OP_CAT چگونه میتواند به آن کمک کند؟
منظور از لایه۲ بومی روی بیتکوین راهحلهایی است که امکان انجام تراکنشها و قراردادهای پیچیدهتر را خارج از زنجیره اصلی فراهم میکنند، اما امنیت آنها همچنان توسط بلاکچین بیتکوین تضمین میشود. شبکهی لایتنینگ مشهورترین لایه ۲ بیتکوین است که تراکنشهای سریع و ارزان را خارج از بلاکچین ممکن میکند و فقط در صورت نیاز تسویه را به زنجیره اصلی میکشاند. با این حال، لایتنینگ و طرحهای مشابه تاکنون بیشتر به روشهای خارج از پروتکل متکی بودهاند و محدودیتهای زبان اسکریپت بیتکوین مانع برخی پیشرفتها شده است.
یک لایه دو واقعاً بومی یعنی بتوان با ابزارها و اسکریپتهای خود بیتکوین، بدون نیاز به واسطههای اعتمادمحور یا تغییرات بنیادی، تعاملات لایهدو را مدیریت کرد. برای مثال، پلهای trustless (غیرامانی) را در نظر بگیرید که بین بیتکوین و زنجیرههای جانبی (sidechain) برقرار میشوند. در حالت عادی، برای منتقل کردن بیتکوین به یک شبکه جانبی، نیاز به یک متصدی یا مکانیزم چندامضایی داریم که کوین را قفل کرده و نمایندهای از آن را در شبکه دوم ایجاد کند. اما اگر بتوانیم با یک اسکریپت پیشرفته (شامل covenants) بیتکوین را طوری قفل کنیم که تنها در صورت ارائهی یک مدرک رمزنگاری مشخص یا تحقق یک شرط معین آزاد شود، در عمل یک پل غیرامانی ساختهایم. OP_CAT به عنوان ابزاری برای ساخت چنین اسکریپتهای پیچیده بسیار مفید است. توسعهدهندگان مطرح کردهاند که ترکیب OP_CAT با قابلیتهای تپروت (مثلاً ساخت درخت مرکل از شرایط خروج) میتواند ساخت پلهای زنجیرهای را ممکن کند، بهنحویکه بیتکوین لایه۱ و شبکههای لایه۲ بتوانند بدون نیاز به اعتماد به شخص ثالث با یکدیگر ارتباط برقرار کنند. هرچند این ایدهها هنوز در مرحلهی پژوهش و آزمایش هستند، اما نویدبخشند که در آینده میتوان لایه۲هایی داشت که مستقیماً توسط خود پروتکل بیتکوین پشتیبانی میشوند.
در مورد شبکه لایتنینگ نیز OP_CAT میتواند نقش حمایتکننده داشته باشد. همانطور که گفته شد، یکی از کاربردهای OP_CAT ایجاد قراردادهای جلوگیری از تقلب در کانالهای پرداخت است. با یک اسکریپت هوشمند مبتنی بر OP_CAT، میتوان اطمینان حاصل کرد که اگر یکی از طرفین کانال لایتنینگ تلاش کرد وضعیت قدیمی کانال (به نفع خود) را خرج کند، کلید خصوصیاش افشا و داراییاش تنبیه خواهد شد. این مکانیسم در حال حاضر هم در لایتنینگ وجود دارد اما OP_CAT میتواند آن را به شکل سادهتر و امنتری روی زنجیره مدیریت کند. علاوه بر این، طرحهای مقیاسپذیری دیگری مانند کانالهای زنجیرهای اشتراکی (Channel Factories) یا کوینپول (CoinPool) مطرح هستند که اجازه میدهند چندین کاربر UTXOهای خود را به صورت اشتراکی استفاده کنند. پیادهسازی مطمئن این ابتکارات نیز نیازمند انعطاف بیشتر در زبان اسکریپت است که OP_CAT و دوستانش فراهم میکنند.
به طور خلاصه، OP_CAT یکی از ابزارهایی است که میتواند پلی میان لایه۱ و لایه۲ بیتکوین بسازد. این دستور با افزایش قابلیت برنامهنویسی در اسکریپت، امکان خلق راهکارهای لایه۲ را در دل خود شبکه بیتکوین میدهد. نتیجه این که در آینده شاید نیازی نباشد برای هر قابلیت پیشرفته به زنجیرههای دیگر یا راهحلهای متمرکز تکیه کنیم؛ بلکه بیتکوین با اتکا به قواعد خودش آنها را مدیریت خواهد کرد.
سناریوهای کاربردی ساده برای OP_CAT
برای درک بهتر کاربرد OP_CAT، چند مثال در دنیای واقعی را در نظر بگیریم که با استفاده از این opcode قابل پیادهسازی هستند:
- کیف پول خزانه (Vault Wallet): تصور کنید میخواهید بیتکوینهای خود را در کیف پولی نگهداری کنید که حتی در صورت دزدیدهشدن کلیدهای اصلی، باز هم امکان نجات دارایی وجود داشته باشد. یک والت خزانه به شما اجازه میدهد برداشت از کیف پول را با تاخیر و شرایط خاص انجام دهید. مثلاً هر برداشت باید ابتدا یک تراکنش قفلشده ارسال کند و بعد از ۱۰۰ بلاک تأیید شود. در این مدت اگر صاحب اصلی متوجه اقدام غیرمجاز شد، میتواند تراکنش را لغو یا وجوه را به آدرس امنتری منتقل کند. پیادهسازی چنین چیزی مستلزم آن است که خرج نهایی کوین مقید به شرایط از پیش تعیینشده باشد. OP_CAT دقیقاً این امکان را فراهم میکند که دادههای مربوط به شرایط (مثل ارتفاع بلاک ۱۰۰ بلاک بعد) با جزئیات تراکنش ترکیب و به صورت یک هش در خروجی اولیه قفل شود. تنها زمانی که تراکنش خرج مطابق همان هش باشد، اجازه خرج خواهد داشت. این یعنی با OP_CAT میتوان یک کیف پول ساخت که عملاً مانند خزانه عمل کرده و سرقت را بیاثر میکند (چون دزد برای خرج نیاز به رعایت شرایط شما دارد).
- کانال پرداخت سادهتر: در شبکه لایتنینگ، کانالهای پرداخت برای دو طرف امکان تبادل سریع را فراهم میکنند اما راهاندازی و مدیریت آنها نیازمند تراکنشهای پیچیده و مکانیزمهای تنبیهی است. با OP_CAT، میتوان یک کانال پرداخت را طوری طراحی کرد که قوانین خرج در خود بلاکچین تضمین شود. به عنوان مثال، یک قرارداد هوشمند کوچک بین آلیس و باب تنظیم میشود که سپرده اولیه را قفل میکند و شرط میگذارد «این سپرده فقط در صورتی خرج میشود که یا هر دو نفر امضا کنند، یا اگر یکی خواست یکطرفه ببندد باید X مبلغ به طرف مقابل پرداخت کند». چنین شرطی را میتوان با ترکیب امضاها و مقادیر با OP_CAT در اسکریپت کانال قفل کرد. در نتیجه، اگر باب بخواهد کانال را زودتر ببندد و سهم بیشتری بردارد، اسکریپت اجازه نمیدهد مگر اینکه شرط پرداخت جریمه رعایت شود. این یک سناریوی فرضی ساده است که نشان میدهد OP_CAT میتواند کانالهای پرداخت ایمنتر و خودکارتر را ممکن کند. همچنین همانطور که گفته شد، OP_CAT میتواند جلوی تقلب در کانال را با افشای کلید متقلب بگیرد که امنیت شبکههایی مثل لایتنینگ را افزایش میدهد.
- قراردادهای هوشمند ساده: فرض کنید میخواهید نوعی قرارداد امانی (Escrow) روی بیتکوین ایجاد کنید: مثلاً پرداخت وجه به یک فروشنده منوط به تأیید دریافت کالا توسط خریدار باشد، و در صورت اختلاف یک شخص ثالث داوری کند. در حال حاضر چنین سناریوهایی را باید با ترکیب چندین تراکنش و احتمالاً اعتماد به شخص ثالث مدیریت کرد. اما با افزودهشدن covenants، میتوان یک اسکریپت پیچیدهتر نوشت که مبلغ پرداختی را قفل میکند و فقط در صورتی اجازه خرج میدهد که یا خریدار تأیید کند، یا پس از مدت زمان مشخصی داور امضا کند. OP_CAT به ما اجازه میدهد قطعات مختلف این شرطها (کلید خریدار، کلید داور، تایملاک زمانی) را کنار هم قرار داده و یک قفل واحد بسازیم. در نتیجه قراردادهای چندامضایی و شرطی به شکل مستقیمتری قابل اجرا روی زنجیره خواهند بود. این کاربرد شبیه ایجاد یک قرارداد هوشمند ساده روی بیتکوین است که نیاز به یک opcode انعطافپذیر مانند OP_CAT دارد.
- پرداختهای دورهای و برنامهریزیشده: یکی دیگر از کاربردهای جذاب covenants امکان ایجاد پرداختهای خودکار دورهای (مانند اشتراک ماهانه) یا انتقال دارایی در تاریخ معین (مثلاً برای ارث) است. به طور سنتی بیتکوین چنین قابلیتی ندارد مگر با راهحلهای خارج از زنجیره یا اعتماد به سرویسهای واسط. اما یک اسکریپت covenant میتواند مثلاً کوین را قفل کند تا هر ماه مقدار مشخصی را به آدرسی بفرستد (با استفاده از ترکیب شرط زمان و آدرس مقصد)، یا دارایی را تا زمانی معین غیرقابل خرج نگه دارد و سپس آزاد کند. OP_CAT با فراهم کردن امکان ترکیب اطلاعات زمان (ارتفاع بلوک یا زمان Unix) با آدرسها/مقادیر، ساخت این سناریوهای پیچیده را آسانتر میکند. هرچند اجرای دقیق چنین طرحهایی نیازمند جزئیات فنی بیشتری است و شاید به opcodeهای مکمل هم نیاز باشد، اما OP_CAT قدم اول و اساسی در این مسیر است.
به طور کلی، سناریوهای کاربردی OP_CAT از کیف پولهای هوشمند و امنتر گرفته تا قراردادهای پیچیده مالی روی زنجیره را شامل میشود. بسیاری از این موارد پیشتر صرفاً در حد تئوری بودند یا نیاز به اعتماد به نهادهای بیرونی داشتند، اما با پیادهسازی OP_CAT (و احتمالاً چند بهبود مکمل دیگر) میتوانند مستقیماً توسط پروتکل بیتکوین پشتیبانی شوند.
ریسکها و نگرانیها درباره OP_CAT و تغییرات در بیتکوین
افزودن هر قابلیت جدید به بیتکوین با دقت و حساسیت زیادی همراه است، چرا که ثبات و امنیت شبکه در اولویت قرار دارد. پیرامون OP_CAT و سایر پیشنهادهای موج جدید نیز نگرانیهایی مطرح شده که در ادامه به آنها میپردازیم:
- خطر باگها و سوءاستفادههای غیرمنتظره: هر سافتفورک جدید از لحاظ فنی ممکن است دارای باگهای پنهان باشد یا کاربردهایی به همراه آورد که طراحان اولیه پیشبینی نکرده بودند. یک نمونه تاریخی، ماجرای بهروزرسانی SegWit و Taproot است که سالها بعد توسعهدهندگان خلاق راهی برای ذخیرهسازی دادههای دلخواه (تصاویر، متنها) در فضای شاهد تراکنشها پیدا کردند و پدیده Ordinals/Inscription (ضبط NFTها روی بیتکوین) شکل گرفت. این کاربرد هرچند خارج از نیت اصلی آن سافتفورکها بود، ولی نشان داد که تغییرات پروتکل ممکن است پیامدهای غیرمنتظره داشته باشد. در مورد OP_CAT نیز برخی نگراناند که شاید covenants به شکلهای پیشبینینشدهای مورد استفاده قرار گیرند یا ترکیب با ویژگیهای دیگر مشکلاتی ایجاد کند. البته تاکنون OP_CAT و OP_CTV به طور گسترده روی شبکههای آزمایشی و Signet آزموده شدهاند و سند جامعی هم برای فهرست کردن انواع ریسکهای ممکن تهیه شده است. با این وجود، احتیاط حکم میکند جامعه قبل از پذیرش نهایی، همه جوانب را به دقت بررسی و آزمایش کند.
- تأثیر برfungibility و آزادی در خرج: یکی از انتقادهای مطرح درباره covenants این است که ممکن است ابزاری برای محدودکردن آزادی خرج کردن بیتکوینها فراهم کند. به بیان دیگر، عدهای نگراناند که covenants منجر به «شمارهسریالدار شدن» سکهها شود؛ مثلاً دولتها یا صرافیها فشار بیاورند که سکه فقط به آدرسهای خاصی قابل خرج باشد و این محدودیت در طول تراکنشهای بعدی نیز ادامه یابد. این نگرانی به خصوص درباره covenants بازگشتی (recursive) مطرح است که میتوانند به طور دائم روی UTXOها اثر بگذارند. خوشبختانه طرحهایی مانند OP_CTV و OP_CAT عمداً covenantهای غیربازگشتی (pre-computed) را هدف گرفتهاند که محدود به یک یا چند مرحله خرج هستند و به صورت همیشگی ادامه نمییابند. همچنین بسیار مهم است توجه کنیم که شرطهای covenant همیشه توسط مالک اولیهی کوین تعیین میشوند، نه یک شخص ثالث. یعنی کاربر خودش انتخاب میکند که مثلاً این خروجی فقط به آدرسهای مشخصی قابل خرج باشد یا تا مدت معینی قفل بماند. هیچ نهاد خارجی نمیتواند پس از خرج شدن کوین، دوباره روی آن قید بگذارد یا محدودیتی تحمیل کند. بنابراین، ترس از این که دولتها با OP_CAT بتوانند سکهها را لیستسفید/سیاه کنند بیمورد است، چون چنین قابلیتی در این proposals گنجانده نشده است. به طور خلاصه، covenants پیشنهادی قدرت را به کاربر میدهند نه به نهادهای بیرونی.
- مغایرت با فلسفه مینیمالیستی بیتکوین: همانطور که اشاره شد، بخشی از جامعه بیتکوین با هر تغییری که پیچیدگی شبکه را افزایش دهد مخالفت اصولی دارند. از دید این افراد، بیتکوین قرار نیست همهکاره باشد و قراردادهای پیچیده یا امکانات پیشرفته را میتوان روی لایههای بالاتر یا در بلاکچینهای دیگر انجام داد. آنها نگراناند افزودن opcodeهای جدید دری را به روی تغییرات پیدرپی باز کند و سادگی آزمودهشدهی بیتکوین را خدشهدار کند. استدلال میکنند که ساتوشی خود این دستورات را حذف کرد تا شبکه قابلبررسی و ایمن بماند و حال بازگشتشان ممکن است خلاف چشمانداز ساتوشی باشد. هرچند مخالفان پاسخ میدهند که شرایط شبکه با ۱۲ سال پیش فرق کرده و محدودیتهای فنی گذشته مرتفع شده است، با این وجود این دغدغه فلسفی در بحثهای جامعه پررنگ است. پذیرش OP_CAT مستلزم اقناع این گروه است که مزایای عملی covenants ارزش افزودن چند دستور محدود و کنترلشده را دارد و خطری برای ماهیت بیتکوین ایجاد نمیکند.
- امنیت و حملات احتمالی: توسعهدهندگان هسته بیتکوین به امنیت شهرت دارند و هر تغییر کوچکی را با دید موشکافانه بررسی میکنند. در مورد OP_CAT نیز سوالاتی پیرامون امنیت مطرح شده، مثلاً اینکه آیا ترکیب آن با سایر opcodeها میتواند راهی برای حملات جدید باز کند؟ همانطور که گفته شد، محدودیت اندازه اسکریپت در تپروت نگرانی DoS گذشته را برطرف کرده است. اما باید اطمینان یافت که پیادهسازی OP_CAT خودش باگ نداشته باشد یا مثلاً در تحلیل و اعتبارسنجی تراکنشها مشکل کارایی ایجاد نکند. خوشبختانه تاکنون هیچ اشکال فنی جدی در این زمینه گزارش نشده و کد OP_CAT به طور گسترده بازبینی و تست شده است. با این حال، هرچه کاربردهای بیشتری برای آن پیدا شود (مثل پلهای بینزنجیرهای)، نیاز به بررسی امنیتی بیشتری هم خواهد بود چون پلها ذاتاً مستعد آسیبپذیری و هک هستند.
در مجموع، رویکرد جامعه بیتکوین نسبت به OP_CAT محتاطانه و همراه با تحقیق و بحث فراوان است. بسیاری معتقدند این تغییر «کوچک اما پربازده» است و با انجام آزمایشهای کافی میتوان ریسکها را به حداقل رساند. از سوی دیگر، تجربهی بهروزرسانیهای قبلی نشان داده که همیشه باید آمادگی مواجهه با پیامدهای پیشبینینشده را داشت. تصمیم نهایی درباره فعالسازی OP_CAT وابسته به اجماع گسترده جامعه است و تا زمانی که مخالفان قانع نشده یا ریسکها برطرف نشده باشند، این سافتفورک اجرایی نخواهد شد.
مسیر پیادهسازی پیشنهادی از طریق BIPها و اجماع جامعه بیتکوین
هر ویژگی جدید در بیتکوین باید مسیر مشخصی را از ایده تا اجرا طی کند. این مسیر معمولاً در قالب فرایند پیشنهاد بهبود بیتکوین (BIP) انجام میشود. در مورد OP_CAT نیز ابتدا پیشنهاد فنی آن به صورت یک پیشنویس BIP مطرح شد (در لیست پستی توسعهدهندگان در اکتبر ۲۰۲۳) و سپس شماره BIP رسمی به آن اختصاص یافت (BIP-420). پس از نگارش و انتشار BIP، مراحل متعدد بازبینی فنی، آزمایش روی شبکههای آزمایشی و گفتگو در جامعه توسعهگران انجام میگیرد تا اطمینان حاصل شود ایده از نظر فنی sound بوده و پیادهسازی آن بدون اشکال است. به موازات این کار فنی، اجماع اجتماعی نیز باید شکل بگیرد؛ یعنی کاربران، کسبوکارها، ماینرها و سایر ذینفعان اصلی بیتکوین قانع شوند که این تغییر به نفع شبکه است.
در مراحل اولیه، معمولاً بحثها در انجمنهای تخصصی و نزد توسعهدهندگان جریان دارد. به تدریج پای رسانهها و افراد تاثیرگذار هم وسط میآید. جالب است بدانید در مورد OP_CAT گروهی از علاقهمندان با نام Taproot Wizards در شبکههای اجتماعی و نشستها به تبلیغ فواید OP_CAT پرداختهاند و تلاش میکنند حمایت عمومی را جلب کنند. چنین حرکتهای اجتماعی میتواند نظر افراد بیشتری (از جمله توسعهدهندگان هسته) را به طرح جلب کند و بررسی آن را در اولویت قرار دهد. در واقع، در مرحله ایدهپردازی و ایجاد توجه، نفوذ رسانهای و جامعه بسیار مهم است؛ به طوری که گفته میشود در اوایل سال ۲۰۲۴ با کمپین «گربههای کوانتومی» Taproot Wizards، بحث OP_CAT به شدت بر سر زبانها افتاد و توجه بسیاری را جلب کرد.
پس از آنکه بررسیهای فنی کامل شد و نسخه نهایی کد آماده گردید، نوبت به روش فعالسازی در شبکه اصلی میرسد. همانطور که گفته شد بهترین راه، سافتفورک است که سازگاری با گذشته را حفظ میکند. برای فعالسازی یک سافتفورک روی شبکه بیتکوین معمولاً از مکانیزم سیگنالدهی ماینرها استفاده میشود. به این صورت که ماینرها در قالب بیتهای سیگنال در بلاکهایی که میسازند، حمایت خود را اعلام میکنند. اگر طی یک بازهی مثلاً دوهفتهای، درصد مشخصی (معمولاً ۹۰٪) از بلاکها سیگنال موافق داشت، ارتقاء “قفلشده” و پس از چند هفته به طور رسمی فعال میشود. این روش که در بهروزرسانی Taproot به کار گرفته شد به Speedy Trial معروف است و در سال ۲۰۲۱ موفقیتآمیز بود. البته انتقاداتی هم به آن وارد شد که مبادا اختیار بیش از حد به ماینرها بدهد و آنان بتوانند جلوی ارتقاءهای مطلوب کاربران را بگیرند. روش آلترناتیو دیگری به نام سافتفورک فعالشونده توسط کاربران (UASF) هم وجود دارد که در آن نودهای شبکه، بدون توجه به ماینرها، بعد از تاریخ معینی تنها بلاکهای مطابق با قوانین جدید را میپذیرند. این روش در مورد سگویت با تهدید به کارگیری توسط جامعه، ماینرها را مجاب به پذیرش کرد.
این که برای OP_CAT کدام روش انتخاب خواهد شد هنوز مشخص نیست. زیرا هنوز در مرحلهی توافق اجتماعی قرار داریم و اختلافنظرها باقی است. برخی پیشبینی میکنند حداقل یکی از پروپوزالهای covenants (مثل OP_CTV یا OP_CAT) احتمالاً در سال ۲۰۲۵ به اجماع توسعهدهندگان برسد. اما همانطور که تجربه نشان داده، حتی پس از توافق توسعهدهندگان، جلب همکاری شبکه گستردهی نودها و ماینرها زمانبر خواهد بود. ممکن است یکی دو سال طول بکشد تا یک ارتقاء از مرحله کدنویسی به مرحله اجرا در شبکه اصلی برسد. این تاخیر البته نشانهای از رویکرد محتاطانه و کند و ثابت بیتکوین است که قصد دارد هر تغییر با کمترین ریسک و بیشترین توافق صورت پذیرد.
جمعبندی
در پایان، مسیر پیادهسازی OP_CAT را میتوان چنین جمعبندی کرد: تدوین و تصویب BIP در جامعهی توسعهدهندگان، آموزش و اجماعسازی در کل جامعه بیتکوین، و سپس طی کردن فرآیند فعالسازی از طریق یک سافتفورک ایمن. در هر گام شفافیت و مشارکت جامعه اهمیت زیادی دارد. اگر OP_CAT موفق شود این مسیر را با موفقیت طی کند، گامی تاریخی در تکامل بیتکوین خواهد بود که در عین حفظ اصول بنیادین، قابلیتهای جدید و هیجانانگیزی به این شبکه اضافه میکند. با این بهبودها، بیتکوین بیش از پیش میتواند نقش زیرساختی خود را در آیندهی مالی ایفا کند و کاربردهای متنوعتری (از لایه دو بیتکوین گرفته تا قراردادهای پیچیده) را مستقیماً روی شبکه خود ممکن سازد. مهم آن است که این تحولات با اجماع و درک درست جامعه همراه باشد تا شبکهی بیتکوین همچنان پایدار، امن و مورد اعتماد باقی بماند.