به محض ورود بیت کوین ، همراه با فناوری نوآورانه بلاک چین، دنیایی از امکانات را باز کرده است. از جمله پول قابل برنامه ریزی بله، پول قابل برنامه ریزی است. بیت کوین بسیاری از توابع را ادغام می کند، و یکی از این توابع به عنوان Check Lock Time Verify (CLTV) شناخته می شود، که این امکان را فراهم می کند تا خروجی های خرج نشده (UTXO) بیت کوین مسدود شده و تا زمانی که یک لحظه از پیش تعیین شده نرسد، نمی توان آن را خرج کرد.

تابع CLTV از طریق سافت فورک BIP-0065 در بیت کوین Core ادغام شد ، که در آن پیتر تاد ، توسعه‌دهنده آن، کد عملیاتی جدید  (OP_CODE) OP_CHECKLOCKTIMEVERIFY را توصیف می‌کند . این ویژگی به تراکنش انجام شده در بیت کوین اجازه می دهد تا در طول زمان مسدود بماند و تا زمانی که به تاریخ، زمان یا ارتفاع بلوک مشخصی نرسیده باشد، موثر نخواهد بود.

بنابراین، تابع CLTV برای موارد استفاده مختلف در سیستم بیت کوین بسیار مفید و مثبت است. به عنوان مثال، برای پس انداز طولانی مدت وجوهی که برای پرداخت دانشگاه یا فارغ التحصیلی یکی از اقوام تعیین شده است. همچنین امکان برنامه ریزی پرداخت های آینده برای تاریخ های خاص، مانند اجاره، خدمات، قرار ملاقات های پزشکی یا حتی ارث هوشمند در میان سایر موارد وجود دارد.

به همین ترتیب، این عملکرد به ویژه برای باز کردن گزینه های پرداخت جدید مهم است. به عنوان مثال ایجاد کانال های پرداخت به سبک CLTV . این کانال‌های پرداخت امکان انجام تراکنش‌های خارج از بلاک چین را فراهم می‌کنند و در عین حال تمام امنیت و مزایای یک تراکنش معمولی را که در زنجیره رخ می‌دهد حفظ می‌کنند. علاوه بر این، عملکرد CLTV همچنین امکان ایجاد گزینه های دیگر مانند بازپرداخت های محدود یا اعتماد را فراهم می کند. برنامه ها و موارد استفاده ای که این تابع دارد واقعاً بی پایان هستند.

CLTV چگونه کار می کند؟

هنگامی که کاربر تراکنشی را با کد OP_CHECKLOCKTIMEVERIFY ایجاد و انجام می‌دهد ، خروجی‌های تراکنش مذکور تنها در لحظه تحقق شرط تعیین‌شده فعال می‌شوند و نه در لحظه انجام تراکنش. این بدان معناست که تراکنش موفقیت آمیز است، اما ارزهای دیجیتال تا لحظه ای آینده مسدود خواهند ماند.

کد OP_CHECKLOCKTIMEVERIFY به عنوان بخشی از یک اسکریپت بیت کوین اجرا می شود و برنامه نویسی آن بر اساس استفاده از زمان های یونیکس (Unix Timestamp) یا در ارتفاعات بلوک در زنجیره بلوک است. یعنی لازم است در هر یک از این پارامترها شرطی ایجاد شود تا با زمان فعلی مقایسه شود. بنابراین او OP_CHECKLOCKTIMEVERIFY عنصر بالای پشته را با قفل زمان ( nLockTime ) که در تراکنش ایجاد شده بود بررسی می کند. اگر با انجام این مقایسه تأیید شد که شرط برقرار است، اسکریپت را می توان اجرا کرد، در غیر این صورت اسکریپت از کار می افتد.

شرایط شکست اسکریپت در تراکنش CLTV به شرح زیر است:

  1. اینکه پشته خالی است و زمان مشخصی برای انجام مقایسه و تایید کد وجود ندارد.
  2. همانطور که قبلاً ذکر شد، عنصر بالایی پشته کمتر از شرایطی است که برای باز کردن قفل خروجی‌های مصرف نشده تعیین شده است. این نشان می دهد که زمان لازم برای باز کردن قفل تراکنش سپری نشده است.
  3. اگر قفل زمان تنظیم شده در ارتفاع بلوک اندازه‌گیری شود و عنصر بالای پشته از اندازه‌گیری زمان (بر حسب ثانیه) استفاده کند، شرایط شکست دیگری رخ خواهد داد یا برعکس.
  4. فیلد nSequence این ورودی روی 0xFFFFFFFF تنظیم شده است.

سپس، تراکنش CLTV تنها زمانی می‌تواند در بلاک چین گنجانده شود که زمان یا شرایط تعیین‌شده منقضی شود. هنگامی که این اتفاق می افتد، تراکنش های CLTV بلافاصله تأیید شده و به زنجیره بلوکی اضافه می شوند و به عنوان هزینه شده در نظر گرفته می شوند.

رابطه CLTV و nLockTime

هر دو CLTV و nLockTime دو تابع هستند که به بیت کوین اجازه می دهند تا اقداماتی را که به زمان یا ارتفاع بلوک برای اجرای صحیح آن بستگی دارد، برنامه ریزی کند. اما رابطه و دامنه هر دو بسیار فراتر می رود. از یک طرف، nLockTime تضمین می‌کند که بیت‌کوین می‌تواند تراکنش‌ها را برای اجرای یک ارتفاع بلوک مشخص (بلوک زمان بلوک) یا با مهر زمانی یا مهر زمانی (بلوک زمانی خاص) برنامه‌ریزی کند. با استفاده از این بیت کوین امکان زمان بندی پرداخت ها با استفاده از این پارامترها را فراهم می کند.

اما از طرف دیگر، CLTV به شما این امکان را می دهد که یک لایه تأیید و برنامه نویسی اضافی به nLockTime اضافه کنید. این به این دلیل است که CLTV nLockTime را می گیرد و تأیید می کند که مجموعه ای از شرایط برنامه ریزی شده برای فعال سازی آن وجود دارد، وضعیتی که با nLockTime اصلی بسیار ساده تر بود. CLTV حتی اجازه می دهد تا در صورت رعایت شرایط خاص، برخی از شرایط اصلی معامله را تغییر دهید.

به عنوان مثال، یک آدرس چند امضایی ۲ از ۳، که در یک بازه زمانی مشخص بسیج نشده است، می تواند پارامترهای احراز هویت خود را به ۱ از ۳ تغییر دهد، به طوری که برخی از افراد مجاز اولیه می توانند وجوه موجود در آن را بسیج کنند. . این قابلیت منحصر به فردی است که CLTV می تواند ارائه دهد و nLockTime به تنهایی نمی تواند.

آیا CLTV قادر است خصوصیات اسکریپت ها را در طول زمان و تحت شرایط خاص تغییر دهد؟

درست است، واقعی!

یکی از بزرگترین ویژگی های CLTV این است که استفاده از آن امکان ایجاد اسکریپت هایی را فراهم می کند که به راحتی می توانند شرایط فعال سازی یک رویداد یا تراکنش را در بلاک چین بیت کوین تغییر دهند.

اجرای CLTV

یکی از بزرگترین و مهم ترین پتانسیل های عملکرد CLTV این است که اجازه ایجاد کانال های پرداخت را می دهد و اینکه این کانال ها می توانند به درستی اجرا شوند. از طریق کانال های پرداخت، می توان تراکنش های خرد را در خارج از بلاک چین ایجاد کرد. همه اینها بدون نیاز به پرداخت کارمزدهای زیادی برای هر کدام و بدون فروپاشی زنجیره بلوکی.

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

نمونه ای از نحوه عملکرد CLTV

اگر ماریا بخواهد یک ویدیو ببیند، اما باید ۱ نشست در هر ثانیه بپردازد. ماریا نمی خواهد این تراکنش های ۱ نشسته در ثانیه را از طریق یک تراکنش معمولی بیت کوین انجام دهد. از آنجایی که برای این کار باید برای هر معامله ای که انجام می دهید، کارمزد کمیسیون را بپردازید. علاوه بر این، باید منتظر بمانید تا تراکنش مذکور در یک بلوک تایید شود. هر ۱۰ دقیقه در بیت کوین چه اتفاقی می افتد

ماریا با دیدن اینکه راحت نیست تصمیم می گیرد یک کانال پرداخت ایجاد کند. در این کانال به آدرس چند امضایی ۰.۵ بیت کوین که معادل ۵۰.۰۰۰.۰۰۰ ساتوشی است واریز می کند. هم تاجر و هم ماریا به آدرس چند امضایی دسترسی خواهند داشت. بنابراین وقتی ماریا شروع به مشاهده ویدیو می‌کند، معامله‌ای را امضا می‌کند که در آن ۱ را برای اولین ثانیه نمایش داده شده به تاجر می‌فرستد. و ۴۹.۹۹۹.۹۹۹ به آدرس تغییر عضویت شما می نشیند.

تا زمانی که ماریا به تماشای ویدیو ادامه دهد، این روند چندین بار تکرار خواهد شد. یعنی به امضای تراکنش‌های خرد و پرداخت مبلغ ساتوشی معادل ثانیه‌هایی که از ویدیو می‌بیند ادامه می‌دهد و لپ‌هایش را در یک آدرس برگشتی واریز می‌کند. اگر ماریا فقط ۲ ثانیه ویدیو را مشاهده کرده باشد، تراکنش جدیدی را امضا خواهد کرد، اما این بار ۲ برای تاجر و ۴۹.۹۹۹.۹۹۸ برای آدرس بازگشت او نشسته است. اگر فقط ۳ ثانیه مشاهده کردید، تراکنش دیگری را امضا می کنید، اما این بار ۳ برای تاجر و ۴۹.۹۹۹.۹۹۷ برای آدرس برگشت شما نشسته است.

در طی این فرآیند، تاجر ۱ سات یا ۲ تراکنش دریافتی را ادعا یا امضا نخواهد کرد. در عوض، او منتظر خواهد ماند تا ماریا هر آنچه را که از ویدیو می خواهد ببیند و پرداخت نهایی را مطالبه کند. یعنی بزرگترین معامله. بقیه معاملات انجام شده در ابتدا امضا نمی شود زیرا هزینه مضاعف را به همراه دارد. بنابراین تاجر باید بزرگترین تراکنش را انتخاب کند که شامل تمام ساتوشی های دریافتی است، در این مثال تراکنش ۳ ساتوشی.

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

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