یکی از مفیدترین توابع اسکریپت بیت کوین عبارتند از قفل زمان opcode (OP_CODE) CheckSequenceVerify (CSV) . که همراه با سایر کدهای قفل امکان استفاده از بیت کوین را به عنوان یک پول دیجیتال قابل برنامه ریزی فراهم می کند.

CheckSequenceVerify یک قفل زمانی نسبی است که در سطح اسکریپت عمل می کند. این به ما امکان می دهد لحظه دقیقی را که در آن یک بلوک در یک تراکنش مشخص به پایان می رسد، تعریف کنیم. و اگرچه این مشخصه ای است که بخشی از سافت فورک   ۶۸ BIP بود، اما تا ۱۱۲ BIP که واقعاً به سیستم بیت کوین اضافه شد، نبود.

ابزار CheckSequenceVerify عملکردهای پیشرفته ای را برای سیستم های ساختمانی مانند کانال های پرداخت شبکه لایتنینگ ( LN) فعال می کند. علاوه بر این، درها را برای ایجاد قابلیت های پیشرفته برای مدیریت وجوه به روش غیرمتمرکز باز می کند که برای صرافی های غیرمتمرکز (DEX) یا خدمات صرافی بیمه P2P مفید است.

به همین ترتیب، اگرچه نحوه عملکرد CheckSequenceVerify (CSV) کاملاً شبیه به CheckLockTimeVerify (CLTV) در CSV است، پشته بالایی به جای بررسی زمان، همانطور که در مورد CLTV وجود دارد، با فیلد ورودی بررسی می شود. بنابراین ما می توانیم زمان را بر اساس تعداد بلوک هایی که پس از تایید تراکنش ایجاد شده اند محاسبه کنیم. یعنی قفل های زمانی نسبی مانند CheckSequenceVerify می توانند یک تراکنش را به عنوان نامعتبر علامت گذاری کنند. و برای این کار نظارت می کنند که فاصله زمانی تعیین شده از زمان تایید خروج های قبلی تراکنش گذشته است.

به عبارت ساده‌تر، قفل‌های زمانی نسبی به ما این امکان را می‌دهند که دقیقاً مدت زمان سپری شدن قبل از تأیید تراکنش را تعیین کنیم. برخلاف قفل‌های زمان مطلق که لحظه دقیق (شماره بلوک، یا تاریخ و ساعت) را که در آن بلوک در تراکنش به پایان می‌رسد، تعیین می‌کنند.

CheckSequenceVerify (CSV) چگونه کار می کند؟

قفل‌های زمانی در سطح اسکریپت مانند CheckSequenceVerify (CSV) همراه با قفل‌های سطح تراکنش عمل می‌کنند ، بنابراین، قفل‌های دوم هنگام اعمال قفل CSV مهم هستند. این به این دلیل است که در قفل‌های CSV، اسکریپت‌ها قفل تراکنش را بررسی می‌کنند. برای انجام این کار، بررسی می‌کنند که تراکنش مذکور مسدود شده است و از این قفل‌ها در تراکنش‌ها به عنوان تضمین سن استفاده می‌کنند که نشان‌دهنده سپری شدن زمان تعیین‌شده است.

در بیت کوین ۱۱۲ BIP ، CheckSequenceVerify به عنوان یک کد عملیاتی توصیف می‌شود که تعریف جدیدی از دستور OP_NOP3 موجود می‌دهد. این به روز رسانی به شما امکان می دهد تا یک تراکنش را در سطح اسکریپت بر اساس سن یا سن خروجی مصرف شده مسدود کنید. این عملکرد همراه با BIP 68 اجرا می شود. به این ترتیب، می توانید از گنجاندن تراکنش در یک بلوک نیز جلوگیری کنید. این تا زمانی که زمان یا سن تعیین شده سپری شود.

هنگام بررسی قفل CSV با مقدار nSequence تعیین شده، تأیید می شود که آیا حداقل سن خروجی مصرف شده قبلاً برآورده شده است یا خیر. اگر قبلاً انجام نشده باشد، مسیرهای اجرای اسکریپت که شامل قفل CSV می‌شود را می‌توان تأیید کرد. بنابراین، تراکنش نمی تواند در یک بلوک گنجانده شود تا زمانی که شرط برآورده شود.

بنابراین، هنگامی که کد CSV فراخوانی می شود، باعث از کار افتادن اسکریپت می شود، مگر اینکه شماره دنباله در تراکنش نشان دهد که یک فاصله زمانی در قفل زمانی نسبی سپری شده است، که بزرگتر یا مساوی با نشانگر کد CSV است. بنابراین تضمین می شود که تراکنش تنها زمانی می تواند در یک بلوک معتبر گنجانده شود که زمان مسدودسازی تکمیل شده یا منقضی شده باشد.

هنگامی که این opcode پیاده سازی می شود، CheckSequenceVerify به شما اجازه می دهد تا قفل هایی را روی تراکنش هایی با حداکثر تا ۶۵.۵۳۵ بلاک تنظیم کنید. اما شما همچنین می توانید چنین قفلی را حداکثر تا ۶۵.۵۳۵ * ۵۱۲ ثانیه تنظیم کنید . از سوی دیگر، این قفل ها هنگام ایجاد قفل های زمانی نسبی در تراکنش هایی که تایید یا به شبکه منتقل نشده اند بسیار مفید هستند. از آنجایی که CSV امکان ایجاد تراکنش‌های هوشمند را فراهم می‌کند و تمام دستورالعمل‌هایی را که برای اجرای آن‌ها لازم است، از قبل تعریف و تنظیم می‌کند. بنابراین ما این ضمانت و تضمین را داریم که قرارداد یا معامله مذکور فقط به ترتیب مقرر انجام می شود. همه اینها صرف نظر از زمانی که شروع به اجرا می کند.

اجرای CheckSequenceVerify (CSV).

اجرای کد عملیاتی OP_CSV به تراکنش های زنجیره بلوکی اجازه می دهد تا تاریخ انقضای نسبی داشته باشند. خاصیتی که به نوبه خود اجازه می دهد تا تراکنش ها به طور نامحدود ذخیره شوند. تا زمانی که شرایط مسدودسازی اولیه تعیین شده باقی بماند. اگر از کد عملیاتی OP_CLTV استفاده شود که کل زنجیره تراکنش ها دارای مهلت اجرا و انقضا هستند، برعکس این اتفاق می افتد.

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

آیا وجود CheckSequenceVerify برای شبکه لایتنینگ حیاتی است ؟

درست است،

یکی از الزامات لازم برای عملکرد شبکه لایتنینگ، عملکرد CheckSequenceVerify است، یک ضرورت که در کاغذ سفید شبکه لایتنینگ توضیح داده شده است، به ویژه برای جلوگیری از موقعیت هایی که در آن یکی از طرفین می تواند وجوه را از سیستم بدزدد.

موارد استفاده CheckSequenceVerify (CSV).

حال بیایید موارد استفاده ای را که CSV به لطف ایجاد آن در بیت کوین به ما اجازه می دهد را بررسی کنیم:

ایجاد قرارداد با زمان انقضا

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

  • در صورت استفاده از ۲ شرکت از ۳ شرکت مجاز، می توان در هر زمانی که بخواهید، وجوه را جمع آوری کرد. اینها را می توان به هر طریقی با هم ترکیب کرد (ماریا و پدرو، پدرو و خوان، ماریا و خوان).
  • ماریا می تواند به تنهایی امضا کند و تنها پس از ۳۰ روز از معامله از وجوه استفاده کند.

این قفل زمانی نسبی شروع می شود تا زمانی که تراکنش در آدرس سپرده تایید شود.

ایجاد حمایت های ابطال عطف به ماسبق

اگرچه به دلایل امنیتی و حفاظتی، بلاک چین پس از افزودن داده ها و اطلاعات به آن تغییرناپذیر است. اما موارد زیادی وجود دارد که در آنها ایده آل است که بتوانیم قرارداد را پس از ایجاد تغییر یا لغو کنیم. با این حال، اگرچه نمی‌توانید مستقیماً پس از تأیید داده‌ها در زنجیره بلوک، یک ابطال عطف به ماسبق را انجام دهید، اما چینش مجدد زنجیره لازم دارد. اگرچه انجام این ویژگی نیز بسیار دشوار و بسیار گران است.

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

ایجاد قراردادهای HTLC (قراردادهای قفل شده در زمان هش)

یکی از مهمترین عملکردهای CSV ایجاد قراردادهای قفل شده در زمان هش (HTLC) است. به لطف این قراردادها است که می توان سیستمی را اجرا کرد که به دو کاربر امکان ایجاد یک کانال پرداخت را می دهد. موردی که در آن طرف گیرنده باید شواهد رمزنگاری معتبری ایجاد کند تا پرداختی را که توسط قرارداد متوقف شده است، آزاد کند.

این عملکردی است که به عنوان مثال به ایجاد کانال های پرداخت امن بین دو کاربر اجازه می دهد. این کانال ها قابلیت انجام عملیات روی زنجیره (در یک زنجیره) و زنجیره متقابل (بین دو زنجیره مختلف) را دارند. به این ترتیب، HTLC مکانیسم ایمن را برای انجام مبادلات اتمی فعال می کند .

اما نه تنها این، HTLC نیز همان چیزی است که عملکرد ایمن شبکه لایتنینگ را ممکن می کند. بنابراین تأثیر و سودمندی CSV ها در سراسر اکوسیستم بیت کوین را نشان می دهد.