قفل زمانی یک قرارداد هوشمند در شبکه بلاکچین بیت کوین است که به شما امکان میدهد یک تراکنش را امروز ثبت کرده و زمانی دیگر در آینده تراکنش را انجام دهید. برای فهم دقیقتر قفل زمانی تصور کنید که شما میخواهید هر ماه به کارمندان خود حقوق پرداخت کنید از طرفی قصد ندارید یک حسابدار استخدام کنید. بنابراین از بانک خواهش میکنید که به صورت خودکار هرماه از حساب شما پول برداشت کرده و به حساب کارمندان شما مبلغ مشخصی واریز کند. این دقیقا همان کاری است که قفل زمانی بلاک چین انجام میدهد.
ویژگی های قفل زمانی چیست؟
نحوه عملکرد قفل زمانی به این صورت است که باید خواستههایی در زمانی مشخص برآورده شود تا تایم لاک (Time Lock) باز شده و تراکنش انجام گیرد. این خواستهها به سه طبقه تقسیم بندی میشوند.
- مکان (location)
- هدفگذاری (targeting)
- معیار (metric)
در ادامه به توضیح هرکدام از این ویژگیها میپردازیم.
مکان: قفل تراکنش یا قفل اسکریپت
قفلهای زمانی را میتوان بر اساس مکان به دو صورت قفل زمانی تراکنش و تایم لاک (Time Lock) اسکریپت تقسیمبندی کرد. اگر تایم لاک (Time Lock) را در سطح تراکنش ایجاد کنید، تراکنش تا زمانی که تایم لاک (Time Lock) باز نشده است، انجام نمیپذیرد و تراکنش وارد بلاک چین نمیشود حتی اگر امضاها و اسکریپتها معتبر باشند. اما در تایم لاک (Time Lock) اسکریپت تراکنش وارد بلاکچین میشود ولی تا زمانی که قفل زمانی باز نشده است، اسکریپت ارزیابی نمیشود بنابراین نمیتوان آن را خرج کرد.
اگر بخواهیم به زبان ساده بگوییم، قفل زمانی در سطح تراکنش مشخص میکند که چه زمان تراکنش انجام شود، در حالی که قفل زمانی سطح اسکریپت مشخص میکند که چه زمانی تراکنش میتواند بر روی بلاک چین اعتبارسنجی شود.
هدفگذاری: قفل زمانی مطلق یا قفل زمانی نسبی
از نظر هدفگذاری، شما میتوانید قفلهای زمانی را به صورت مطلق یا نسبی تعیین کنید. قفل زمانی مطلق اینگونه است که زمان دقیق انجام تراکنش را ارائه کرده، امضا را انجام داده و در آن زمان تراکنش انجام میگیرد. اما قفل زمانی نسبی به این صورت است که شما مشخص میکنید از یک لحظه به خصوص چقدر زمان بگذرد تا تراکنش انجام شود.
بگذارید با یک مثال ساده بیشتر توضیح بدهیم. به عنوان مثال شما با دوست خود قرار دارید. به او میگویید که ساعت ۱۵ سر قرار حاضر خواهید شد. این نمونهای از قفل زمانی مطلق است. اما حال فرض کنید که قبل از ملاقات با دوستتان یک جلسه مهم کاری دارید. به او میگوید به محض تمام شدن جلسه به سمت او حرکت خواهید کرد و ۱۵ دقیقه بعد سر قرار حاضر خواهید شد. در این حال اینکه چه زمانی به سر قرار برسید رابطه مستقیمی با این موضوع دارد که چه زمان جلسه تمام خواهد شد.
در واقع کاربرد قفل زمانی نسبی دقیقا همین است. شما میخواهید چندین تراکنش با فاصله زمانی مشخص داشته باشید اما نمیخواهید منتظر انجام تراکنشها به صورت یک به یک باشید تا تراکنش بعدی را انجام دهید. بنابراین یک قفل زمانی نسبی ایجاد میکنید تا پس از مدت زمان مشخص از گذشت تراکنشهای قبلی خود به خود تراکنش بعدی را انجام دهد.
معیار: شماره بلاک یا برچسب زمانی
در شبکه بلاک چین، تراکنشها بر اساس ساعت انجام نمیشوند به عنوان مثال ماینر به ساعت خود نگاه نمیکنند تا در ساعت مشخص تراکنش را انجام دهند. در بلاک چین اساسا زمانی وجود ندارد بلکه ما خود باید زمان را تعیین کنیم. به دو روش میتوان زمان انجام تراکنش را تعیین کرد. اول ارائه شماره بلاک و دوم ایجاد برچسب زمانی برای بلاک چین.
در روش استفاده از شماره بلاک، شما محاسبه میکنید که اگر به طور متوسط هر ۱۰ دقیقه یک بلاک تولید شود، تراکنش شما که قرار است ۳ ماه بعد انجام گیرد، در کدام بلاک انجام خواهد گرفت. این روشی ساده است اما نیاز به محاسبات زیاد و گیج کنندهای دارد.
اما در روش استفاده از برچسب زمانی شما میانگین زمان چند بلاک قبلی را در نظر گرفته و به شبکه میگویید پس از گذشته ضریب مشخصی از میانگین زمان تایید چند بلاک گذشته، تراکنش را تایید کند. این میانگینگیری به خاطر آن است که تایید هر تراکنش دقیقا ۱۰ دقیقه طول نمیکشد و گاهی بیشتر یا کمتر است.
انواع قفل زمانی
حال که با ویژگیهای قفل زمانی آشنا شدید بهتر است با انواع قفلهای زمانی نیز آشنا شوید. در زمان نگارش این مقاله، بیتکوین ۴ روش مختلف برای قفل زمانی ارائه میدهد که در ادامه به آنها میپردازیم:
nLockTime: قفل زمانی مطلق در سطح تراکنش
این تایم لاک (Time Lock) اولین قفل زمانی است که در بیت کوین ایجاد شد. nLockTime میتواند یک تراکنش را تا ۹۵۰۰ سال با استفاده از عدد بلاک و ۲۱۰۰ سال با استفاده از برچسب زمانی به تعویق بیندازد. توجه داشته باشید که تمام تراکنشها در بلاک چین بیت کوین این قفل زمانی را دارا هستند اما به طور پیشفرض عدد این تایم لاک (Time Lock) روی صفر تنظیم شده است تا تراکنش در اولین فرصت تایید شود.
nSequence: قفل زمانی نسبی در سطح تراکنش
قفل زمانی nSequence در سال ۲۰۱۶ معرفی شد. این تایم لاک (Time Lock) به شما اجازه میدهد تا شرایط مشخصی را برای انجام تراکنش در نظر بگیرید که درصورت برآورده شدن تمام شرایط، تراکنش انجام پذیرد. تنها در صورتی تراکنش انجام میشود که تمام شرایط براورده شده باشد در غیر این صورت کل تراکنش کنار گذاشته میشود. این قفل زمانی حداکثر برای ۶۵۵۳۵ بلاک بعدی کاربرد دارد یعنی تنها میتواند برای حدود ۱۸ ساعت انجام تراکنش را به تعویق بیندازید.
CLTV: CheckLockTimeVerify: تایم لاک (Time Lock) مطلق در سطح اسکریپت
این قفل با استفاده از دستور OP_CHECKLOCKTIMEVERIFY (CLTV) در اسکریپت ایجاد میشود و باعث میشود که تا زمانی که شرط مورد نظر برقرار نشده، خروجی تراکنش قابل خرج کردن نباشد. این قفل زمانی، برای ایجاد قراردادهای هوشمند مانند تأخیر پرداخت، قراردادهای چند امضا و حفاظت از کوینها کاربرد دارد.
CSV:CheckSquenceVerify :قفل زمان نسبی در سطح اسکریپت
این نوع قفل زمانی بر اساس مدت زمانی که از تایید شدن تراکنش قبلی گذشتهاست، محاسبه میشود. این قفل با استفاده از دستور OP_CHECKSEQUENCEVERIFY (CSV) در اسکریپت ایجاد میشود و باعث میشود که تا زمانی که شرط مورد نظر برقرار نشود، خروجی تراکنش قابل خرج نباشد. این قفل زمانی برای ایجاد قراردادهای هوشمند مانند شبکه لایتنینگ ، کانالهای پرداخت و حفاظت از کوینها کاربرد دارد.
قفل زمانی در کدام شبکهها کارایی دارد؟
قفل زمانی یا TimeLock یک ویژگی مخصوص بیتکوین است و کمتر شبکه بلاک چینی از این قابلیت بهرهمند است. حتی بلاک چین اتریوم هم از این قابلیت بهرهمند نیست. با این حال، تایم لاک (Time Lock) یک قرارداد هوشمند است بنابراین میتوانید با استفاده از انواع قراردادهای هوشمند، تایم لاک (Time Lock) مخصوص به خود را در شبکههای مختلف ایجاد کنید. همچنین لایههای دیگر بیتکوین مانند بیتکوین کش یا لایت کوین نیز ویژگیهای مشابه قفل زمانی را در خود گنجاندهاند اگرچه تفاوتهایی با مدل بیتکوین دارد.
چگونه قفل زمانی بیتکوین ایجاد کنیم؟
برای ایجاد قفل زمانی در شبکه بیت کوین، شما نیاز به داشتن یک کلید عمومی و یک تاریخ یا یک ارتفاع بلاک مشخص دارید. سپس میتوانید با استفاده از یکی از روشهای زیر، یک آدرس تایم لاک (Time Lock) ایجاد کنید.
الف: استفاده از وبسایت Coinb.in که به شما امکان میدهد به صورت آنلاین و بدون نیاز به دانلود نرمافزار، یک آدرس قفل زمانی بسازید. برای این کار، مراحل زیر را دنبال کنید:
- به وبسایتin بروید و بر روی گزینه New و سپس Time Locked Address کلیک کنید.
- کلید عمومی آدرس خود را وارد کنید (کلیدی که برای امضای تراکنش نیاز دارید و بتوانید کوینها را خرج کنید).
- تاریخ زمان یا ارتفاع بلاکی را که میخواهید کوینها را آزاد کنید و آنها را خرج کنید، وارد کنید.
- بر روی گزینه Submit کلیک کنید و آدرس قفل زمانی خود را دریافت کنید.
ب: استفاده از نرمافزار Electrum که یک کیف پول بیت کوین محبوب و قدرتمند است. برای این کار، مراحل زیر را دنبال کنید:
- نرمافزار Electrum را دانلود و نصب کنید و یک کیف پول جدید بسازید یا از کیف پول قبلی خود استفاده کنید.
- بر روی گزینه Tools و سپس Pay to Many کلیک کنید.
- در فیلد Outputs، آدرس مقصد، مقدار کوین و تاریخ زمان یا ارتفاع بلاک را به صورت زیر وارد کنید: address, amount, locktime برای مثال، اگر میخواهید 0.01 بیت کوین را به آدرس A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa بفرستید و تا تاریخ 2024-03-02 قفل کنید، باید این را وارد کنید: A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa, 0.01, 2024-03-02
- بر روی گزینه Preview کلیک کنید و تراکنش خود را بررسی کنید. اگر همه چیز صحیح باشد، بر روی گزینه Sign کلیک کنید و تراکنش خود را امضا کنید.
- بر روی گزینه Broadcast کلیک کنید و تراکنش خود را به شبکه بیت کوین ارسال کنید.
سخن پایانی
قفل زمانی یک قابلیت بسیار کاربردی است که به کاربران امکان میدهد تا از کلاهبرداری جلوگیری کنند، حسابهای پسانداز مخصوص خود ایجاد کنند، کانالهای پرداخت مستقیم ایجاد کنند، تراکنشهای خاص و چند امضایی بسازند و بسیاری قابلیتهای دیگر. مزیت قفل زمانی بیتکوین نسبت به قرارداد هوشمند اتریوم این است که در بیتکوین همه چیز به سادگی انجام میپذیرد. درک آنچه پشت بیتکوین در حال انجام است بسیار سادهتر از اتریوم است و همین مساله نقطه قوت مهم بیتکوین است.
سوالات متداول
انواع قفل زمانی تایم لاک (Time Lock) کداماند؟
چهار نوع تایم لاک (Time Lock) تا امروز در بیتکوین وجود دارد که عبارتاند از: تایم لاک (Time Lock) مطلب در سطح تراکنش، قفل زمانی نسبی در سطح تراکنش، تایم لاک مطلق در سطح اسکریپت و قفل زمانی نسبی در سطح اسکریپت.
کدام قفل زمانی بیتکوین مناسبتر است؟
تمام قفلهای زمانی کارکرد مخصوص به خود را دارند. با این همه nLockTime پرکاربردترین تایم لاک (Time Lock) بیتکوین شناخته میشود.
آیا در اتریوم هم میشود قفل زمانی ایجاد کرد؟
تایم لاک (Time Lock) یک قابلیت مخصوص شبکه بیتکوین است و در اتریوم چنین قابلیتی وجود ندارد. اما میتوانید با استفاده از قرارداد هوشمند اتریوم نوعی قفل زمانی شخصی سازی شده طراحی کنید.











