قفل زمانی در بیت کوین؛ تعیین زمان تایید تراکنش با TimeLocks
تاریخ انتشار: 18 مرداد 1402 | آخرین بهروزرسانی: 8 آذر 1402
زمان مطالعه:
6 دقیقه
در دیفای، سایت های اسکم زیادی راهاندازی شدهاند که گاهی کلاه بزرگی بر سر سرمایهگذاران میکنند. بهاینترتیب که با وعدههای دروغین اما وسوسهانگیز، توجه سرمایهگذاران را برای واریز ارزهای دیجیتال جلب میکنند. سپس در یک حرکت ناگهانی وبسایت را بسته و کلیه ارزهای دیجیتال واریز شده را به سرقت میبرند. قفل زمانی (Time Lock) راهحلی برای جلوگیری از این اتفاق است، اما قفل زمانی در بیت کوین چیست؟
قفل زمانی قطعهای از کد درقرارداد هوشمندی است که میتواند عملکرد یک برنامه را برای مدت زمان مشخصی قفل کند.
به بیان ساده، قفلهای زمانی نوعی قرارداد اولیه هوشمند هستند که به طور کامل یا جزئی مانع از تأیید یک معامله خاص توسط ماینرها میشوند تا زمانی که شرایط خاصی برآورده شود. مقدار زمان را میتوان با ارتفاع بلاک (block height) یا برچسب زمانی Unix مشخص کرد.
قفلهای زمانی اغلب برای پشتیبانی از قراردادهای هوشمند مسترشف (masterchef) استفاده شده و از اهمیت بسیار زیادی برخوردارند؛ زیرا سطح امنیت بالایی را در برابر راگ پول ارائه میدهند. لازم به ذکر است که TimeLock توسط خالق آن، ساتوشی ناکاموتو، برای اولینبار به نرمافزار اصلی بیت کوین اضافه شد.
هر تراکنش بیت کوینی، از همان زمان انتشار اولین بیت کوین، حاوی حداقل یک فیلد قفل زمانی هستند که در حالت پیشفرض خود به شکل زیر قرار دارند:
[ 0x00000000 (0) or 0xFFFFFFFF (4294967295) ]
قفل زمانی چگونه کار میکند؟
برای تجسم نحوه عملکرد قفل زمانی در بیت کوین، اجازه دهید از یک موقعیت روزمره در دنیای واقعی مثال بزنیم. فرض کنید میخواهید قرار ملاقاتی را با یکی از مسئولین بانک تنظیم کنید تا درباره وام مسکن خود صحبت کنید. با بانک تماس میگیرید و برای هفته بعد قرار ملاقاتی تنظیم میکنید. این قرار ملاقات تا هفته آینده در صف مراجعین بانک قرار خواهد گرفت. از لحظه ورود شما به بانک، این قرار به حالت اجرا درمیآید.
قفلهای زمانی نیز به روشی مشابه کار میکنند. به طور معمول، اگر توسعهدهندگان پروژه کلاهبرداری بخواهند موردی را در masterchef تغییر دهند، میتوانند مستقیماً این کار را انجام دهند، اما با اجرای قفل زمانی، توسعهدهنده ابتدا باید تراکنش صف حاوی تغییرات قرارداد را فراخوانی کند. از طرفی، فرض کنید دوره قفل زمانی 3روزه باشد؛ بنابراین، ۳ روز طول میکشد تا اصلاح قرارداد ساخته شده توسط توسعهدهنده با استفاده از تراکنش اجرایی، اجرا شود. با این حساب، سرمایهگذار فرصت خوبی برای نشاندادن واکنش و جلوگیری از این اتفاق را دارد.
به عبارت دیگر، اگر سرمایهگذار بتواند قبل از رسیدن به زمان از پیش تعیین شده، بهموقع واکنش نشان دهد، میتواند از سرقت داراییهای خود جلوگیری کند.
ویژگی قفل های زمانی
قفلهای زمانی دارای سه ویژگی بسیار مهم هستند:
مکان
گرایش
متریک
از پیوند بلاکچین و هوش مصنوعی، به پول میرسیم؟
جوابت تو شماره ۱۴ ماهنامه دامیننسه!
مکان؛ قفل زمانی در سطح تراکنش و در سطح اسکریپت
همانطور که قبلاً اشاره کردیم، Timelock را میتوان در همه تراکنشها پیدا کرد، حتی اگر از آن استفاده نشود. همچنین میتوان آن را در اسکریپتها گنجاند. در نتیجه دو مکان برای تعیین قفل زمانی وجود دارد. هر دو این مکانها بسیار شبیه هم هستند، اما عملکردهای کاملاً متفاوتی از هم دارند.
قفلهای زمانی در سطح تراکنش به این معنی است که تا وقتی که به زمان مشخص یا به ارتفاع بلاک معینی نرسد، نمیتوان تراکنش را تأیید کرد؛ اگرچه امضاهای دیجیتال و اسکریپتهای آن معتبر باشند. در مقابل، قفل زمانی در سطح اسکریپتها تعیین میکند که آیا اسکریپتی معتبر است یا نه.
درحالیکه اولی (قفل زمانی در سطح تراکنش) زمان اجرای تراکنش را مشخص میکند، دومی (قفل زمانی در سطح اسکریپت) تراکنشهایی را که میتوان روی بلاک چین اعتبارسنجی کرد، دیکته میکند.
گرایش؛ قفل زمانی مطلق و نسبی
قفلهای زمانی را میتوان به دو نوع مطلق و نسبی تقسیم کرد. هر دو زمان مشخصی را در آینده معین میکنند که یک تراکنش باید اعتبارسنجی شود. با این تفاوت که در نوع مطلق زمان تعیین شده مشخصی وجود دارد که تراکنش تا وقتی به این زمان نرسد، نامعتبر تلقی میشود.
در حالی که قفل زمانی نسبی از شمارش معکوس استفاده میکند؛ بهعنوانمثال، یک تراکنش فقط پس از تعداد X ساعت یا روز میتواند تأیید شود.
متریک؛ شماره بلاک و برچسب زمانی
در بیت کوین دو راه برای اندازهگیری زمان وجود دارد: شماره بلاک و برچسب زمانی (timestamp).
از هر دو این معیارها میتوان برای ایجاد قفل زمانی در بیت کوین استفاده کرد. هنگامی که یک قفل زمانی بر اساس شماره بلاک ایجاد شود، ماینرها برای تأیید عملیات، باید منتظر رسیدن به آن شماره بلوک باشند. برعکس، هنگامی که قفل زمانی بر اساس برچسب زمانی تنظیم شود، ماینرها منتظر میمانند تا زمان تعیینشده سپری شود.
نحوه استفاده از قفل زمانی در بیت کوین چگونه است؟
فرض کنید میخواهید روی ارز دیجیتال خاصی سرمایهگذاری کنید. برای اطمینان از اینکه در معرض راگ پولها قرار نگیرید، میتوانید مراحل زیر را دنبال کنید:
همانطور که پیش از این هم گفتیم، قفل زمانی در بیت کوین دارای دو دسته اصلی است: قفل زمانی مطلق و نسبی. هر یک از این دستهها دارای دو نوع قفل هستند که در زیر آنها را شرح میدهیم:
nLocktime
nLocktime نوعی از قفلهای زمانی مطلق در سطح اسکریپت است. این نوع اولین موردی بود که توسط ساتوشی ناکاموتو در نرمافزار اصلی بیت کوین پیادهسازی شد. هنگامی که این پارامتر در یک تراکنش استفاده میشود، تراکنش تا زمان تعیین شده نامعتبر میماند.
اگر nLocktime مشخص شده کمتر از 500 میلیون باشد، پارامتر به عنوان ارتفاع بلاک تفسیر میشود؛ به این معنی که تراکنش تنها پس از رسیدن به یک شماره بلاک خاص، اعتبارسنجی میشود، در غیر این صورت اگر مقدارش بیشتر از ۵۰۰ میلیون باشد، بهعنوان زمان UNIX تفسیر میشود. در این حالت، تراکنش تا زمانی که برچسب زمانی مشخصی سپری نشود، بیاعتبار میماند.
nSequence
nSequence جزو قفلهای زمانی نسبی در سطح تراکنش است که از اعداد دنبالهای برای ایجاد آن استفاده میشود. این نوع قفل برای هر ورودی تراکنش اعمال میشود، زیرا زمان زودتر یا نزدیکتری را برای افزودن به برخی از بلاکهای بلاک چین تعیین میکند.
به نظر شبیه nLocktime است، اما وجه تمایز آنها این است که زمان مذکور در nSequence بسیار کوتاهتر از nLocktime است؛ زیرا 18 بیت از ۳۲ بیت استفاده کرده و به ۶۵۵۳۵ واحد بلاک و تنها ۱۸ ساعت (۶۴۸۰۰ در ثانیه) محدود هستند.
در این نوع قفل، تراکنش تنها زمانی معتبر است که همه شرایط برآورده شود، در غیر این صورت نامعتبر است.
Checklocktimeverify (CLTV)
CLTV، قفل زمانی مطلقی است که سطح اسکریپت را فراهم میکند. این نوع قفل در اواخر سال ۲۰۱۵ در BIP 65 پیادهسازی شد. میتوان از آن برای قفل زمانی یک تراکنش تا تاریخ خاصی استفاده کرد که تراکنش فقط پس از طی این زمان، میتواند اعتبارسنجی شود. از این قفل معمولاً برای قفلکردن وجوه ارسال شده به گیرنده استفاده میشود؛ تا وقتی که زمان معین شده سپری نشود، گیرنده نمیتواند این وجوه را خرج کند.
قفلهای زمانی CLTV به کاربران اجازه میدهند تا پارامترهای احراز هویت را برای آدرسهای کیف پول چند امضایی تغییر دهند. موردی را در نظر بگیرید که در آن آدرس کیف پول چند امضایی ۲-از-۳ داریم، CLTV میتواند در صورت رعایت شرایط، برای تغییر پارامتر و تبدیل آن به ۱-از-۳ استفاده شود. در این حالت، شخص میتواند وجوه خود را تحت شرایط از پیش تعریف شده که در معامله مشخص شده است، بازیابی کند.
Checksequenceverify (CSV)
CSV هم جزو دسته قفلهای زمانی نسبی در سطح اسکریپت به شمار میرود. CSV شبیه به CLTV است؛ با این تفاوت که به جای بررسی زمان، مقدار بالای استک (Stack) و فیلدهای ورودی را بررسی میکند و تا قبل از استخراج تعداد معینی از بلاکها، نمیتوان آنها را خرج کرد.
هنگامی که این کد عملیاتی فراخوانی میشود، اسکریپت با شکست مواجه میشود، مگر اینکه nSequence نشان دهد که مقدار نسبی زمان قفل که برابر یا بیشتر از پارامتر ارائه شده در opcode CSV است، سپری میشود تا از گنجانده شدن تراکنش در بلاکی معتبر در زمان انقضای CSV اطمینان حاصل کند.
با این نوع قفل، تراکنشها میتوانند حداکثر برای ۶۵۵۳۵ بلاک (۴۵۵ روز) یا حداکثر ۳۸۸ روز (۳۳۵۲۳۲۰۰ ثانیه) مسدود شوند.
گفتار پایانی
قفل زمانی در بیت کوین، اولین زمانی را که یک تراکنش میتوان به بلاک چین اضافه شود، مشخص میکند. وقتی روی ۰ تنظیم میشود، به این معنی است که تراکنش باید بلافاصله انجام شود، در غیر این صورت اگر قفل زمانی روی مقداری غیرصفر و کمتر از ۵۰۰ میلیون باشد، تراکنشها تا زمان تعیین شده به بلاک چین اضافه نمیشوند.
این ویژگی باعث میشود تا شناسایی افراد سودجو راحتتر شده و قبل از وقوع کلاهبرداری، از آن جلوگیری کنید. آیا راه دیگری برای جلوگیری از کلاهبرداری میشناسید؟ نظرات و تجربیات خود را در بخش کامنتها با ما به اشتراک گذارید.
سؤالات متداول
منظور از قفل زمانی در بیت کوین چیست؟
با استفاده از قفل زمانی، میتوانید بیت کوینها را به صورت موقتی قفل کرده و تراکنشی را تنها پس از سپریشدن مدت زمانی مشخصی اجرا کنید.
آیا قفل زمانی امنیت را افزایش میدهد؟
بله، قفل زمانی میتواند به افزایش امنیت تراکنشها کمک کند، زیرا تراکنشها تا پایان مدت زمان تعیین شده قابل اجرا نخواهند بود.
آیا قفل زمانی در همه کیف پولها پشتیبانی میشود؟
بله، اکثر کیف پولهای بیت کوین قابلیت قفل زمانی را پشتیبانی میکنند.
عارفه رهبری
تکنولوژی، نویسندگی و صدای کیبورد، من رو به وجد میارن. واسه همینم توی اکثر حوزههای تکنولوژی از جمله کریپتو غرق میشم، یاد میگیرم و مینویسم. حدود 2 سالی هست که در حوزه تولید محتوای صنعت کریپتو فعالیت میکنم و در تلاشم تا مفاهیم بلاک چین و کریپتو رو با زبانی ساده به مخاطبها ارائه بدم.