تابع زمانی CLTV در بیت کوین یک قابلیت جالب برای زمان بلاک در بلاک چین بیت کوین است که برای انجام تراکنشها توسط اسکریپت، یک زمانبندی موقت پیشرفته طراحی میکند. تابعی که به شما امکان میدهد اسکریپتهای پیشرفته متناسب با زمان در بیت کوین را برنامهریزی کنید.
توابع زمانی در بیت کوین
ظهور بیت کوین، همراه با فناوری بلاکچین، دنیایی از فرصتها را به ارمغان آورده است. ازجمله پول قابلبرنامهریزی. در بیت کوین توابع زمانی زیادی وجود دارند. Timelock نوعی قرارداد هوشمند ابتدایی است که مصرف برخی بیت کوینها را تا زمان یا ارتفاع بلاک مشخصی در آینده محدود میکند. Timelock ها در بسیاری از قراردادهای هوشمند بیت کوین، ازجمله کانالهای پرداخت و قراردادهای زمانبندیشده، بکار میرود. همچنین میتواند برای قفلکردن بیت کوینهایی که بهعنوان سرمایهگذاری برای مدت چند ماه یا چند سال نگهداری میشوند، استفاده شود. بیت کوین بسیاری از توابع را با هم ادغام میکند.
[irp posts=”10720″ name=”قرارداد هوشمند یا اسمارت کانترکت چیست؟”]
تابع CLTV در بیت کوین
یکی از این توابع به نام Check Lock Time Verify (CLTV) شناخته میشود، که خروجیهای خرج نشده (UTXO) را قفل میکند و تا رسیدن به زمان از پیش تعیینشده نمیتوان آنها را خرج کرد.
تابع CLTV از طریق سافت فورک BIP-0065 در بیت کوین ادغام شد که توسعهدهنده آن پیتر تاد کدعملیاتی جدید OP_CHECKLOCKTIMEVERIFY را در آن تعریف میکند. این ویژگی به تراکنش انجام شده در بیت کوین اجازه میدهد تا قفل شود و تا رسیدن به یک تاریخ، زمان یا ارتفاع بلاک مشخص قابل اجرا نباشد.
بنابراین، تابع CLTV برای موارد استفاده مختلف در سیستم بیت کوین بسیار مفید و مثبت است. بهعنوان مثال، میتوان برای اجاره، قرار ملاقات پزشکی یا حتی ارثیه در آینده، برنامه پرداخت تعیین کرد.
این تابع بهویژه برای باز کردن گزینههای جدید پرداخت بسیار مهم است. بهعنوان مثال ایجاد کانالهای پرداخت به سبک CLTV. این کانالهای پرداخت ضمن حفظ امنیت و مزایای یک تراکنش معمولی که در این زنجیره اتفاق افتاده است، امکان انجام تراکنشهای خارج از بلاکچین را فراهم میکنند. علاوه بر این، تابع CLTV همچنین امکان ایجاد گزینههای دیگری مانند بازپرداخت با محدودیت زمانی یا اعتبار را فراهم میکند. برنامهها و موارد استفادهای که این تابع دارد واقعاً بیپایان هستند.
تابع CLTV چگونه کار میکند؟
وقتی کاربر با کد OP_CHECKLOCKTIMEVERIFY تراکنش انجام میدهد، خروجیهای تراکنش مذکور فقط در لحظه تحقق شرط تعیینشده فعال میشوند و نه در لحظه انجام تراکنش. این بدان معناست که تراکنش موفقیتآمیز است اما ارزهای دیجیتال تا زمان مشخص مسدود میشوند.
کد OP_CHECKLOCKTIMEVERIFY بهعنوان بخشی از یک اسکریپت بیت کوین اجرا میشود و برنامهنویسی آن براساس استفاده از زمانهای UNIX (یونیکس تایم استامپ) یا در ارتفاع بلاک در بلاکچین است. یعنی ایجاد یک شرط در هر یک از این پارامترها برای مقایسه با زمان فعلی ضروری است. بنابراین کد OP_CHECKLOCKTIMEVERIFY عنصر بالای پشته را با قفل زمان (nLockTime) که در تراکنش ایجاد شده است مقایسه میکند. اگر با انجام این مقایسه تأیید شود که شرط برآورده شده است، میتوان اسکریپت را اجرا کرد، در غیر این صورت اسکریپت از کار میافتد.
در صورتی که یکی از موارد زیر اتفاق بیافتد اسکریپت اجرا نمیشود:
- اینکه پشته خالی است و زمان مشخصی برای انجام مقایسه و تأیید کد وجود ندارد.
- مقدار عنصر بالایی پشته کمتر از شرایط تعیینشده برای باز کردن قفل UTXO است. این نشان میدهد که زمان لازم برای باز کردن قفل تراکنش سپری نشده است.
- اگر قفل زمان تنظیمشده در ارتفاع بلوک اندازهگیری شود و عنصر بالای پشته از اندازهگیری زمان (در چند ثانیه) استفاده کند یا بالعکس، وضعیت خرابی دیگری رخ خواهد داد.
پس، یک تراکنش CLTV میتواند فقط در زمان مشخص یا شرایط تعیینشده در زنجیره لحاظ شود. پس از این اتفاق، تراکنشهای CLTV بلافاصله تأیید شده و به بلاکچین اضافه میشوند و بهعنوان خروجیهای خرج شده در نظر گرفته میشوند.
رابطه CLTV و nLockTime
CLTV و nLockTime هر دو تابعی هستند که به بیت کوین اجازه میدهند اقداماتی را که برای اجرای صحیح آن به زمان یا ارتفاع بلوک بستگی دارد، برنامهریزی کند. اما رابطه و دامنه هر دو بسیار فراتر است. از یک طرف، nLockTime تضمین میکند که بیت کوین میتواند تراکنشها را برای انجام در یک ارتفاع بلاک مشخص (block time block) یا با مهر زمانی (timestamp) برنامهریزی کند. با استفاده از این تابع بیت کوین امکان برنامهریزی پرداخت ها را با استفاده از این پارامترها فراهم میکند.
اما از طرف دیگر، CLTV به شما امکان میدهد یک لایه تأیید و برنامهنویسی اضافی به nLockTime اضافه کنید. دلیل این امر آنست که CLTV nLockTime را میگیرد. و تأیید میکند که مجموعهای کلی از شرایط برنامهریزیشده برای فعال شدن آن وجود دارد. وضعیتی که با nLockTime اصلی بسیار سادهتر بود. CLTV حتی در صورت تحقق برخی شرایط میتواند برخی از شرایط اصلی تراکنش را تغییر دهد.
اجرا و پیاده سازی تابع CLTV
یکی از بزرگترین و مهمترین پتانسیلهای تابع CLTV اجازه ایجاد کانالهای پرداخت و اجرای صحیح آنها است. از طریق کانالهای پرداخت میتوان تراکنشهای خرد را در خارج از بلاکچین ایجاد کرد. بدون نیاز به پرداخت هزینههای کارمزد زیادی برای هر یک از تراکنشها و بدون پراکندگی در بلاکچین!
در کانالهای پرداخت، کاربر میتواند با واریز مقدار مشخصی ارزهای دیجیتال در یک آدرس چند امضایی (MultiSig) تراکنشی را برای شخص دیگری ارسال کند. هر دو کاربر به آن آدرس دسترسی خواهند داشت. و کاربری که تراکنش را انجام میدهد میتواند تراکنشهای کوچکی را امضا کند. که از طریق آن وجوه به کاربر دیگر ارسال میشود. تا زمانی که شخص گیرنده محصول مورد نظر را دریافت نکند. وجوه باقیمانده در ازای تراکنش برگشتی برای هر تراکنش خردی که انجام می دهید به شما بازگردانده میشود.
نتیجه گیری
در بیت کوین توابع زمانی زیادی وجود دارند. یکی از این توابع به نام Check Lock Time Verify (CLTV) شناخته میشود. که خروجیهای مصرف نشده (UTXO) را قفل میکند و تا رسیدن به زمان از پیش تعیینشده نمیتوان آنها را خرج کرد.
CLTV یک تابع است که برای تراکنش در شبکه بیت کوین، یک زمانبندی پیشرفته طراحی میکند.
Timelock نوعی قرارداد هوشمند ابتدایی است که مصرف برخی بیت کوینها را تا زمان یا ارتفاع بلاک مشخصی در آینده محدود میکند.