قفل زمانی در بیت کوین؛ راه حلی که از کلاهبرداری های ارز دیجیتال جلوگیری میکند
قفل زمانی در بیت کوین روشی برای محدود کردن زمان تایید تراکنش است که از طریق تعیین یک تاریخ یا یک ارتفاع بلاک خاص، انجام میشود. به عبارتی، قفل زمانی (Time Lock) را میتوان به عنوان یک قرارداد هوشمند ساده در نظر گرفت که شرایط خاصی برای تراکنش تعیین میکند و تا زمانی که این شرایط فراهم نشوند، از تایید شدن آن توسط ماینرها جلوگیری خواهد کرد. برای اطلاع از جزئیات کارکرد Time Lock در بلاکچین بیت کوین، با ما در ادامه این مقاله همراه باشید.
قفل زمانی در بیت کوین چگونه کار میکند؟
از زمان آغاز فعالیت بیت کوین، تمام تراکنشهای این شبکه رمز ارزی حداقل حاوی یک فیلد مخصوص قفل زمانی بودهاند. جالب است بدانید که این فیلدها تا پیش اعمال چندین پروپوزال بهبود بیت کوین (BIP)، کاربرد خاصی نداشتند.
مکان (Location)
قفلهای زمانی بر اساس مکان (در تراکنش یا اسکریپت) ایجاد میشوند. این قفلها اگر چه یک نوع محدودیت به شمار میآیند، اما برای اهداف متنوعی مورد استفاده قرار میگیرند. Time Lock در سطح تراکنش تضمینی برای تایید نشدن آن تا یک زمان مشخص است؛ حتی اگر امضاهای دیجیتال هم درست باشند. در مقابل، قفل زمانی در سطح اسکریپت باعث میشود تا زمانی که تراکنش در حالت قفل شده قرار دارد، امضاهای دیجیتال مورد بررسی قرار نگیرند.
بنابراین قفل در سطح تراکنش، زمان اجرا آن را مشخص میکند و قفل در سطح اسکریپت اجرا شدن یا نشدن را تعیین خواهد کرد.
هدف (Target) یا گرایش (Orientation)
قفل زمانی در بیت کوین میتوانند مطلق (Absolute) یا نسبی (Relative) باشد. قفلهای مطلق از تایید تراکنش تا یک زمان مشخص (مثلا تا ساعت ۱ بعد از ظهر) جلوگیری میکنند. اما قفلهای نسبی بر اساس یک شمارش معکوس (Countdown) فعالیت کرده و تنها پس از اتمام آن، امکان تایید تراکنش را فراهم میکنند. برای مثال اگر قفل نسبی یک تراکنش بر اساس یک شمارش معکوس ۲ ساعته باشد، تراکنش دقیقا پس از اتمام ۲ ساعت قابل تایید خواهد بود.
معیار (Metric)
زمان در بلاکچین بیت کوین بر اساس دو معیار بیان میشود: شماره بلاک و برچسب زمانی بلاک (Timestamp). بنابراین، قفلهای زمانی را میتوان با توجه به شماره یک بلاک، یا برچسب زمانی آن ایجاد کرد. تراکنش مربوطه نیز تا زمانی که بلاک مشخص شده استخراج نشود، یا زمان تعیین شده فرا نرسد، قابل تایید نخواهد بود.
معرفی انواع قفل زمانی در بیت کوین
در حال حاضر ایجاد قفل زمانی در بیت کوین به چهار روش قابل انجام است که دو مورد در سطح تراکنش (nLocktime و nSequence)، و دو مورد در سطح اسکریپت (CheckLockTimeVerify و CheckSquenceVerify) اعمال میشوند.
nLocktime
nLocktime به عنوان اولین Time Lock شبکه بیت کوین شناخته میشود که مقدار آن، زمان اضافه شدن تراکنش به یک بلاک معتبر را مشخص میکند. البته مقدار nLocktime میتواند دو معنی متفاوت داشته باشد:
- کمتر از ۵۰۰ میلیون: شماره بلاکی که پس از آن، امکان اضافه شدن تراکنش به یک بلاک معتبر وجود خواهد داشت.
- بیشتر از ۵۰۰ میلیون: برچسب زمانی یونیکس (UNIX) که زمان قابل تایید شدن تراکنش را نشان میدهد.
این Time Lock میتواند با استفاده از برچسب زمانی یونیکس یا شماره بلاک، تراکنش را به ترتیب تا ۲۰۰۰ یا ۹۰۰۰ سال قفل کند.
nSequence
nSequence در سال ۲۰۱۶ و طی سافت فورک BIP68 معرفی شد و نزدیکترین زمان ممکن برای اضافه شدن تراکنش به یک بلاک را مشخص میکند. این قفل شباهت زیادی به nLocktime داشته، ولی فقط از ۳۲ بیت تنها ۱۸ بیت را مورد استفاده قرار میدهد. ۱۴ بیت دیگر در حالت رزرو قرار دارند و از آن ۱۸ بیت، ۱۴ بیت برای رمزگذاری زمان بلاک مورد استفاده قرار میگیرند. این یعنی قفل nSequence حداکثر برای ۶۵۵۳۵ بلاک یا ۱۸ ساعت (۶۴۸۰۰ ثانیه) بعدی کاربرد خواهد داشت.
هنگام تعیین یک nSequence، میتوان چند شرط زمانی مختلف را به صورت همزمان تعیین کرد که تنها در صورت برقراری همه آنها، تراکنش قابل تایید شدن خواهد بود.
Check Lock Time Verify
در اواخر سال ۲۰۱۵ میلادی و طی سافت فورک BIP65، آپ کد NOP2 به کد تراکنش CheckLockTimeVerify یا همان CLTV تبدیل شد. CLTV در سطح اسکریپت اجرا شده و خروجی تراکنش را تا زمان یا رسیدن به یک ارتفاع بلاک خاص قفل میکند. دو کاربرد اصلی این قفل به شرح زیر است:
- مشخص کردن روزی که تراکنش باید در آن انجام شود.
- تغییر پارامترهای احراز هویت با استفاده از آدرسهای چند امضایی برای بازیابی دارایی.
برای مثال اگر یک آدرس چند امضایی بر پایه ۲ از ۳ امضا ایجاد شده است، CLTV میتواند این پارامتر را در شرایط خاص به ۱ از ۳ امضا تبدیل کند، تا امکان دسترسی به دارایی وجود داشته باشد. البته برای انجام چنین کاری، شرایط لازم باید از قبل توسط هر ۳ امضا پذیرفته شده باشد.
Check Sequence Verify
Check sequence verify یا همان CSV بخشی از سافت فورک BIP68 بود و یک نوع قفل نسبی محسوب میشود. البته CSV صرفا بر اساس تعداد بلاک کار میکند. برای مثال با استفاده از CSV میتوان یک تراکنش را تا زمانی که ۶۵ هزار بلاک بعدی استخراج نشدهاند، قفل کرد. با توجه به میانگین زمان استخراج در شبکه بیت کوین، این قفل نسبی میتواند تراکنش را تقریبا تا ۴۶۰ روز بعدی قفل کند.
اهمیت استفاده از قفل زمانی در بیت کوین
با تعیین Time Lock برای یک تراکنش بیت کوین، میتوان به سطح امنیت بیشتری دست پیدا کرد. برای مثال اگر رضا پس از خرید بیت کوین، از اتفاقات چند روز آینده مطمئن نیست و احساس خطر میکند، میتواند دارایی خود را با یک قفل زمانی ۱۰ روزه برای علی ارسال کند. در این حالت رضا پیش از به پایان رسیدن مدت قفل و تایید شدن تراکنش در شبکه بیت کوین، توانایی لغو آن را دارد. اگر هم مشکلی برای رضا پیش آمد، دارایی او پس از ۱۰ روز در اختیار علی قرار خواهد گرفت.
در مثالی دیگر، علی میتواند بیت کوینهایش را با قفل یک ساله برای وارثان خود ارسال کند. بدین ترتیب در صورت فوت وی، داراییهای او بدون نیاز به دخالت وکیل یا سازمانهای دولتی، در دسترس افراد از پیش تعیین شده قرار خواهند گرفت. در ضمن پیش از پایان یک سال، علی توانایی لغو تراکنش یا تمدید قفل را هم خواهد داشت.
نیاز به دانش فنی نسبتا بالا، بزرگترین مانع ایجاد تراکنش با قفل زمانی است. علاوه بر این، قفل کردن دارایی برای مدت زمان طولانی هم یک ریسک بزرگ محسوب میشود، چون احتمال تغییر ساختار شبکه و غیر قابل استفاده شدن داراییها وجود خواهد داشت.
شما به عنوان یک کاربر دنیای ارز دیجیتال، در چه شرایطی استفاده از قفل زمانی در بیت کوین را ضروری میدانید؟