قفل زمانی یا Time Lock در بیتکوین یک روش برای محدود کردن زمان تایید تراکنش است که از طریق تعیین یک تاریخ یا ارتفاع خاص بلاک انجام میشود. به طور خلاصه، میتوان قفل زمانی (Time Lock) را به عنوان یک نوع قرارداد هوشمند ساده در نظر گرفت که شرایط خاصی برای تراکنش تعیین میکند و تا زمانی که این شرایط فراهم نشوند، از تائید توسط ماینرها جلوگیری میکند. برای اطلاعات بیشتر درباره کارکرد قفل زمانی در بلاکچین بیتکوین، ما را در ادامه این مقاله همراهی کنید.
در طول تاریخ فعالیت بیتکوین، تمام تراکنشهای این شبکه رمزارزی حداقل یک فیلد مخصوص برای قفل زمانی داشتهاند. ارزش این فیلدها به پیش از اجرای چندین پیشنهاد بهبود بیتکوین (BIP) کمتر بود.
موقعیت (Location)
قفلهای زمانی بر اساس محل قرار گرفتن آنها (در تراکنش یا اسکریپت) ایجاد میشوند. این قفلها، علیرغم اینکه یک نوع محدودیت هستند، برای اهداف متعددی مورد استفاده قرار میگیرند. در سطح تراکنش، Time Lock یک تضمین برای عدم تایید تراکنش تا زمان معینی است، حتی اگر امضاهای دیجیتال درست باشند. به عنوان مقابل، قفل زمانی در سطح اسکریپت باعث میشود تا در این حالت، امضاهای دیجیتال بررسی نشوند.
بنابراین، قفل در سطح تراکنش زمان اجرا آن را مشخص میکند و قفل در سطح اسکریپت تصمیمگیری درباره اجرا یا عدم اجرای آن را تعیین میکند.
هدف یا گرایش
قفلهای زمانی در بیتکوین میتوانند مطلق یا نسبی باشند. قفلهای مطلق از تایید تراکنش تا یک زمان مشخص (مثلا تا ساعت ۱ بعد از ظهر) جلوگیری میکنند. در حالیکه قفلهای نسبی بر اساس یک شمارش معکوس فعالیت میکنند و تا پایان این زمان، امکان تایید تراکنش را ایجاد نمیکنند. بهعنوان مثال، اگر یک قفل زمانی نسبی بر اساس یک شمارش معکوس ۲ ساعته باشد، تراکنش دقیقا پس از گذشت این مدت زمان قابل تایید خواهد بود.
معیار
زمان در بلاکچین بیتکوین بر اساس دو معیار بیان میشود: شماره بلاک و برچسب زمانی بلاک (Timestamp). بنابراین، قفلهای زمانی میتوانند با توجه به شماره بلاک یا برچسب زمانی آن ایجاد شوند. تراکنش مربوطه نیز تا زمانی که بلاک مشخص شده استخراج نشود یا زمان مشخص شده فرا نرسد، قابل تایید نخواهد بود.
در حال حاضر، ایجاد قفلهای زمانی در بیتکوین به چهار روش ممکن است که دو مورد در سطح تراکنش (nLocktime و nSequence) و دو مورد در سطح اسکریپت (CheckLockTimeVerify و CheckSequenceVerify) اعمال میشوند.
nLocktime
nLocktime به عنوان اولین Time Lock در شبکه بیتکوین شناخته میشود که مقدار آن زمان اضافه شدن تراکنش به یک بلاک معتبر را مشخص میکند. مقدار nLocktime میتواند دو معنی متفاوت داشته باشد: اگر کمتر از ۵۰۰ میلیون باشد، شماره بلاکی که پس از آن اجازه اضافه شدن تراکنش به یک بلاک معتبر را دارد؛ اگر بیشتر از ۵۰۰ میلیون باشد، برچسب زمانی یونیکس (UNIX) را که زمان قابل تایید شدن تراکنش را نشان میدهد. این روش میتواند تا ۲۰۰۰ یا ۹۰۰۰ سال به ترتیب تراکنش را قفل کند.
nSequence
nSequence در سال ۲۰۱۶ و طی سافت فورک BIP68 معرفی شد و نزدیکترین زمان ممکن برای اضافه شدن تراکنش به یک بلاک را مشخص میکند. همچنین، این قفل قابلیت چندین شرط زمانی را به صورت همزمان در یک تراکنش فراهم میکند.
CheckLockTimeVerify (CLTV)
CLTV در سطح اسکریپت اجرا شده و خروجی تراکنش را تا زمان یا رسیدن به یک ارتفاع بلاک خاص قفل میکند. این امکان را ایجاد میکند که زمان اجرای تراکنش یا تغییر پارامترهای احراز هویت را تعیین کند.
CheckSequenceVerify (CSV)
CSV نوعی قفل نسبی است که بر اساس تعداد بلاک کار میکند. این قفل امکان قفل کردن تراکنش تا زمانی که تعداد بلاک مشخصی استخراج نشده باشد را فراهم میکند.