نکات کلیدی
- بیت کوین از طریق زبان بومی خودش به نام "اسکریپت"، از قراردادهای هوشمند پشتیبانی میکند که امکان اجرای چند تراکنش را فراهم میکند.
- اسکریپت، یک زبان تورینگ کامل نیست؛ در نتیجه قراردادهای هوشمند بیت کوین قابلیتهای محدودی دارند.
- یکسری راهکار و بلاکچین لایه دوم برای بیت کوین وجود دارند که قابلیتهای این ارز دیجیتال را برای قراردادهای هوشمند افزایش داده و در عین حال، امنیت آن را حفظ میکنند.
بیت کوین، اولین ارز دیجیتال و بلاکچین جهان است. کاربرد اصلی بیت کوین، انتقال وجه به صورت نظیر به نظیر است. از بیت کوین به عنوان طلای دیجیتال یاد میشود که روشی امن و غیرمتمرکز برای ذخیره و مدیریت ارزش فراهم کرده است. همین ویژگی خاص بیت کوین، باعث شده که این ارز دیجیتال تا به امروز پرکاربردترین و محبوبترین شبکه کریپتو را به خود اختصاص دهد. بسیاری دیگر از شبکههای بلاکچین هم سعی داشتهاند با الهام از همین ویژگیها، کاربردها و ابتکارات جدیدی را ارایه دهند.
لازم به ذکر است که بیت کوین صرفاً برای ذخیره و مدیریت ارزش به روش غیرمتمرکز ساخته شده اما سایر شبکهها، وارد قلمروهای دیگر شده و راهکارهای جدیدی را برای میزبانی از اپلیکیشنهای غیرمتمرکز ابداع کردهاند. اپلیکیشنهای غیرمتمرکز (DApp) غوغایی در جهان برپا کردهاند و همین موفقیت آنها منجر به شروع تلاشهایی برای ساختن اپلیکیشنهایی شده که از محبوبترین شبکه بلاکچین یعنی بیت کوین استفاده میکنند. اما، همانطور که اشاره شد، انگیزه ساختن بیت کوین متفاوت بوده در نتیجه کار با این شبکه نسبت به شبکههای آماده برای قراردادهای هوشمند مثل اتریوم، کمی پیچیدهتر است.
در ادامه مطلب توضیح میدهیم که طرز کار قراردادهای هوشمند بیت کوین به چه صورت است و چه قابلیتهایی را ارایه میدهند.
آیا بیت کوین هم قرارداد هوشمند دارد؟
بله، بلاکچین بیت کوین هم از قراردادهای هوشمند پشتیبانی میکند. توسعه دهندگان میتوانند از یک زبان کدنویسی به نام اسکریپت برای نوشتن و استقرار قراردادهای هوشمند در شبکه بیت کوین استفاده کنند.
اما چرا وقتی صحبت از قراردادهای هوشمند باشد، به ندرت اسم بیت کوین را میشنویم؟ اغلب اوقات، تصور میشود که دلیل استفاده کمتر از قراردادهای هوشمند بیت کوین، تورینگ کامل نبودن زبان اسکریپت است اما مشکل اصلی، مربوط به آپکد (opcode) است که در بیت کوین وجود ندارد.
آپکدها، یکسری قطعه کد کوچک هستند. این قطعه کدها مشخص میکنند که در یک شبکه خاص، چه توابعی را میتوان اجرا کرد. در بعضی از بلاکچینها مثل اتریوم، بعضی از آپکدها قابلیت خواندن و نوشتن وضعیت بلاکچین را دارند. میتوان با ترکیب تعدادی از آپکدها، قابلیتهای پیچیدهتری را تشکیل داد که توسط یک تراکنش بلاکچین تریگر میشوند. این گروه از آپکدها بیشتر به نام قرارداد هوشمند شناخته میشوند و در بسیاری از پلتفرمها و اپلیکیشنهای بلاکچین کاربرد دارند.
اما اسکریپت بیت کوین شامل چنین آپکدهایی نیست. این یعنی وضعیت بلاکچین بیت کوین در هر لحظه، جایی نوشته نمیشود بلکه فقط مشخص میشود که چه شخصی مالک چه چیزی است و به افراد امکان میدهد که از طریق UTXOها، کوین ارسال و دریافت کنند؛ با یکسری شرط و معیار محدود درباره اینکه این انتقال وجه چطور انجام میشود.
در ادامه، با طرز کار قراردادهای هوشمند بیت کوین آشنا میشویم.
قرارداد هوشمند بیت کوین چیست و چطور کار میکند؟
قراردادهای هوشمند بیت کوین هم مثل قراردادهای سایر شبکهها هستند؛ یعنی یکسری کد که وقتی شرایط از قبل مشخص شده برقرار باشد، اجرا میشوند. بنابراین، طرز کار این قراردادها هم به همان صورت است.
اما همانطور که اشاره شد، بیت کوین با زبان خاص خودش به نام اسکریپت کار میکند و اسکریپت هم برای اجرای قراردادهای هوشمند، از سیستم قفل و کلید استفاده میکند. فرستنده، مجموعه شرایط یا قوانین را برای اجرای تراکنش مخشص میکند - که به نوعی نقش قفل را دارند. گیرنده هم باید یک کلید سازگار با قفل را ارایه دهد - یک قطعه کد به زبان اسکریپت - که شرایط تعیین شده توسط فرستنده را دارد.
در ادامه، این شرایط را بررسی میکنیم.
انواع قراردادهای هوشمند بیت کوین
اسکریپتهای هش کلید Pay-to-public (P2PKH)
P2PKH مهمترین نوع تراکنشهای بیت کوین را تشکیل میدهد. فرستنده، بیت کوین را برای هش کلید عمومی گیرنده ارسال میکند. گیرنده باید برای دسترسی به این کوینها، اثبات کند که کلید خصوصی متناظر با آن کلید عمومی را دارد.
این سیستم به نوعی شبیه به قفل کردن یک جعبه و دادن کلید آن به یک شخص است.
اسکریپتهای چند امضایی (MultiSig)
در روش MultiSig، برای معتبر بودن تراکنش نیاز به بیشتر از یک امضاء وجود دارد. یک نمونه از چنین تراکنشهایی، تراکنشهای چند امضایی 2 به 3 هستند که برای اجرای تراکنش، حداقل به دو امضاء از یک گروه سه نفره نیاز دارند. این سیستم، امنیت بیشتری دارد و معمولاً مشاغل از آن استفاده میکنند.
این روش به نوعی مثل یک گاو صندوق است که برای باز کردن آن، باید همزمان دو یا چند کلید را حرکت داد.
تراکنشهای بیت کوینی با قفل زمانی (nLockTime و nSequence)
با این مدل، میتوان در هر زمان دلخواهی تراکنش ایجاد کرد اما این تراکنشها فقط در یک تاریخ مشخص در آینده یا در یک ارتفاع بلاک خاص معتبر خواهند بود. این روش برای اجرای تراکنشهای بیت کوین در آینده مفید است و میتوان در انواع توافقنامههای اقتصادی از آن استفاده کرد. این سیستم شبیه به یک قفل زمانی است که به یک تراکنش خاص ربط دارد.
تراکنشهایی با قفل زمانی، پس از پیاده سازی پیشنهادهای BIP-65 و BIP-112 ممکن شدند که یکسری آپکد جدید را اضافه میکنند.
هش پرداخت برای اسکریپت (P2SH – BIP16)
P2SH به جای قفل کردن خروجیها با یک کلید عمومی، آنها را با یک هش اسکریپت قفل میکند. فرستنده باید اسکریپت قابل تطبیق با این هش را ارایه داده و شرایط آن را برآورده کند. این سیستم امکان اجرای اسکریپتهای پیچیده را بدون نیاز به درگیری فرستنده با جزئیات فراهم میکند. P2SH با آپگرید BIP-16 اجرایی شد.
مثلاً میتوانید یک معما برای دوستان بفرستید تا در صورت حل کردن آن، بیت کوین دریافت کند.
Pay-to-taproot (P2TR)
P2TR یک اسکریپت پیچیده با قابلیت حفظ حریم خصوصی است که باعث میشود چند نفر همزمان بتوانند یک امضاء ایجاد کنند تا حریم خصوصی و کارایی افزایش پیدا کند.
این سیستم به نوعی مثل ترکیب P2PKH و P2SH است؛ اما با حریم خصوصی بیشتر. این مدل هم بخشی از پیشنهاد ارتقای BIP-341 موسوم به آپگرید تپروت بود.
Miniscript
Miniscript با این هدف طراحی شده بود که توسعه دهندگان بتوانند راحتتر از مدلهای خرج کردن پیچیده استفاده کرده و آنها را پیاده سازی کنند. به طور خلاصه Miniscript یک زبان کدنویسی ساده است که امکان ایجاد قابلیتهایی خاص را فراهم کرده و این امکان را ایجاد کرده که والت بیت کوین شما بتواند شرایط پیچیدهتر را هم مدیریت کند؛ مثل اجبار به استفاده از چند کلید برای یک حساب کاربری یا تعیین شرایطی خاص برای خرج کردن موجودی والت.
گرچه این مدل در اصل قرارداد هوشمند نیست، اما یکی از طرحهای کاستدی انعطاف پذیر ایجاد شده توسط miniscript است.
حالا که با برخی از قابلیتهای پیشرفته آشنا شدیم، در ادامه نگاهی به قابلیتهای ملموستر بیت کوین داریم مثل NFTها.
توکنها و NFTها در بیت کوین
پروتکل اوردینالز (Ordinals) در ژانویه 2023 روی شبکه بیت کوین راهاندازی شد و امکان ایجاد NFTهای اوردینال را با اتصال دادههای آنها به ساتوشی فراهم کرد. هر ساتوشی، با استفاده از یک سیستم ترتیبی مشخص، یک عدد منحصربفرد دریافت میکند.
NFTهای اوردینال کاملاً بر اساس بلاکچین بیت کوین طراحی شدهاند و نیاز به یک توکن مجزا ندارند. اما این یعنی حالا رقابت بر سر فضای بلاک در شبکه برای ساتوشیها بیشتر شده؛ در نتیجه امکان افزایش کارمزدهای شبکه وجود دارد.
BRC-20 - که یک استاندارد توکن برای اوردینالهای بیت کوین است - از دادههای JSON برای تسهیل انواع قابلیتهای مربوط به توکنها استفاده میکند. در حال حاضر، استاندارد توکن BRC-20 سه قابلیت اصلی را ایجاد کرد:
- استقرار: این قابلیت به کاربران امکان میدهد که قراردادهای توکن BRC-20 جدید ایجاد کنند.
- مینت کردن: کاربران میتوانند از تابع mint برای تولید مقدار مشخصی توکن BRC-20 استفاده کنند.
- انتقال: تابع Transfer به کاربران امکان میدهد که مقدار خاصی توکن BRC-20 را به یک آدرس دیگر ارسال کنند.
استاندارد توکن BRC-20 نسبتاً جدید است؛ در نتیجه قابلیتهای آن محدودتر بوده و کاملاً کاربر پسند نیستند.
راهکارهای لایه 2 بیت کوین میتوانند به غلبه بر چنین محدودیتهایی کمک کنند.
قراردادهای هوشمند در راهکارهای لایه دوم بیت کوین
قراردادهای هوشمند بیت کوین قابلیتهای محدودی دارند؛ اما بلاکچینهای لایه دوم بیت کوین، به توسعه دهندگان امکان میدهند که قراردادهای هوشمند پیچیدهتری را طراحی کنند.
برای درک بهتر طرز کار این زنجیرهها، در ادامه نگاهی به بعضی از آنها داریم.
شبکه لایتنینگ
شبکه لایتنینگ (به اختصار LN) یک راهکار مقیاس پذیری لایه دوم برای بیت کوین است که با اجرای بعضی از تراکنشها به صورت برون زنجیرهای، امکان افزایش سرعت و کاهش هزینه اجرای تراکنشها را فراهم میکند. شبکه لایتنینگ با استفاده از کانالهای پرداختی کار میکند که مثل یکسری تونل برون زنجیرهای خصوصی بین کاربران هستند و امکان اجرای تراکنش را فراهم میکنند.
LN به غیر از کاهش کارمزد و افزایش سرعت اجرای تراکنش، امکان اجرای قراردادهای هوشمند پیچیدهتر را فراهم میکند؛ مثل قراردادهای دارای قفل زمانی هش شده. این قراردادها، قابل برنامه نویسی هستند و اغلب برای اجرای کارهایی مثل میکروتراکنش و سوآپ فوری کاربرد دارند.
هم چنین، شبکه لایتنینگ میزبان قراردادهای Discreet Log است که امکان شرط بندی را بین دو نفر فراهم میکنند.
استکس (Stacks)
استکس زنجیرهای است که در کنار بیت کوین کار میکند و به توسعه دهندگان امکان میدهد که روی شبکه بیت کوین قرارداد هوشمند و اپلیکیشن غیرمتمرکز بسازند.
استکس با استفاده از سیستم "اثبات انتقال"تراکنشها را پردازش کرده و در عین حال از امنیت بیت کوین بهره میبرد.
قراردادهای هوشمند در استکس
توسعه دهندگان میتوانند با استفاده از استکس انواع اپلیکیشنهای غیرمتمرکز را طراحی کنند؛ از جمله پلتفرمهای اقتصاد غیرمتمرکز، توکنهای تعویض ناپذیر و شبکههای اجتماعی غیرمتمرکز.
استکس، نقش یک اکوسیستم متنوعتر و وسیعتر را بازی کرده و در عین حال، قدرت و امنیت بیت کوین را به عنوان لایه پایه حفظ میکند.
دو کاربرد اصلی قراردادهای هوشمند مبتنی بر استکس در بیت کوین عبارتند از:
هیرو والت: هیرو والت، یک والت غیرکاستدی است که امکان اجرای تراکنش و ارتباطاتی امن را در اکوسیستم استکس فراهم میکند. کاربران بیت کوین میتوانند در سیستم پاداش دهی موسوم به استَکینگ شرکت کنند که برای کاربرانی که از شبکه حمایت کرده و توکنهای STX را برای مدت مشخصی قفل میکنند، پاداش در نظر میگیرد.
سرویس نامگذاری بیت کوین (BNS): BNS یک سیستم نام غیرمتمرکز برای بیت کوین و شبیه به سیستم ENS اتریوم است که اخیراً شاهد افزایش کاربرد آن بودیم. کاربران باید برای خرید یک نام BTC، با قرارداد هوشمند BNS در زنجیره استکس کار کنند.
استفاده از قراردادهای هوشمند در بیت کوین
آشنایی با طرز کار قراردادهای هوشمند بیت کوین، برای استفاده از امکانات این اکوسیستم اهمیت زیادی دارد. همچنین آشنایی با چگونگی ارزیابی امنیت این قراردادها هم میتواند بسیار مفید باشد.
در این شبکه هم مثل هر شبکه دیگری، هنگام استفاده از قراردادهای هوشمند باید برای امنیت خودتان اولویت قائل شوید. به غیر از افزایش آگاهی و اطلاعات خودتان درباره قراردادهای هوشمند، بهترین راه حفظ امنیت خودتان، استفاده از اپلیکیشنهای بیت کوین با والتهای امن به خصوص والتهای سختافزاری است.