
الطابع الزمني هو قيمة رقمية متزايدة باستمرار تحدد نقطة معينة في الزمن، وغالبًا ما يتم احتسابها بعدد الثواني أو المللي ثانية منذ "00:00 بالتوقيت العالمي المنسق في 1 يناير 1970". يمكنك اعتباره مقياسًا عالميًا يتيح مزامنة الوقت ومقارنته بين الأنظمة المختلفة.
في تطبيقات البلوكشين، تظهر الطوابع الزمنية في رؤوس الكتل، وتفاصيل المعاملات، وسجلات الأحداث، واستجابات واجهات برمجة التطبيقات (API). ونظرًا لكونها قيمًا رقمية لا تعتمد على اللغة أو المنطقة، فهي مثالية للمعالجة البرمجية والتخزين عبر الأنظمة.
تسجل الطوابع الزمنية "وقت" وقوع الحدث، وتشكل الأساس للعديد من العمليات على السلسلة، مثل جداول فتح الرموز، ومواعيد انتهاء المزادات، وأوقات اللقطات، وانتهاء صلاحية الستيكينج، وإنشاء دفاتر الأوامر ورسوم الشموع (K-lines).
على سبيل المثال، قد يحدد إعلان مشروع وقت "فتح الرموز" باستخدام طابع زمني. من خلال الرجوع إلى الكتلة والحدث المقابلين على السلسلة، يمكنك تحديد نافذة حدوث الحدث بدقة. وعند تحليل بيانات السوق، تعتمد أوقات فتح وإغلاق رسوم K-line على الطوابع الزمنية، مما يسهل توحيد البيانات بين المنصات.
في سلاسل البلوكشين العامة، يُكتب الطابع الزمني للكتلة عادةً في رأس الكتلة بواسطة منتج الكتلة—سواء كان مُعدّنًا أو محقق صحة—وتفرض قواعد الإجماع مقدار الانحراف المسموح به عن ساعة الشبكة. في إيثيريوم، على سبيل المثال، يمثل "block.timestamp" وقت الكتلة الحالي ويمكن الوصول إليه عبر العقود الذكية.
كما تنتج الأنظمة خارج السلسلة طوابع زمنية، مثل أوقات خوادم الأوامر في منصات التداول أو أوقات أخذ عينات بيانات الأسعار. غالبًا ما تكون هذه متوافقة مع UTC، لكنها قد تختلف في الدقة (ثوانٍ أو مللي ثانية)، لذا انتبه إلى الوحدة المستخدمة.
يشير الطابع الزمني إلى "لحظة زمنية محددة"، بينما يشير ارتفاع الكتلة إلى "الرقم التسلسلي للكتلة". وعلى الرغم من ارتباطهما، إلا أنهما ليسا متكافئين: لكل ارتفاع كتلة طابع زمني مقابل، لكن الفواصل الزمنية بين الكتل ليست ثابتة.
عند تحليل فتح الرموز أو اللقطات، إذا استخدمت ارتفاع الكتلة كمرجع، فإن التوقيت سيعتمد على سرعة إنتاج الكتل؛ أما إذا استخدمت الطوابع الزمنية كنقاط ارتكاز، فيجب مراعاة التغيرات العشوائية وهوامش التفاوت في وقت الكتلة. ويعتمد الاختيار على مدى دقة الوقت المطلوبة لتطبيقك.
الخطوات كالتالي: حدد الوحدة (ثوانٍ أو مللي ثانية)، واعتبرها بتوقيت UTC، ثم أضف فرق المنطقة الزمنية (توقيت الصين القياسي هو UTC+8).
الخطوة 1: حدد الوحدة. عادةً ما يكون "block.timestamp" في البلوكشين بالثواني؛ بينما تستخدم بعض استجابات API المللي ثانية.
الخطوة 2: إذا كانت بالمللي ثانية، اقسم على 1.000 للحصول على الثواني؛ وإذا كانت بالفعل بالثواني، اتركها كما هي.
الخطوة 3: حوّل الثواني إلى تاريخ ووقت بتوقيت UTC، ثم أضف 8 ساعات لتحويلها إلى توقيت بكين. معظم مستكشفي الكتل يعرضون التوقيت العالمي المنسق افتراضيًا—فقط أضف 8 ساعات للحصول على التوقيت المحلي.
الخطوة 4: تحقق من الحالات الخاصة. لا تحتاج لمعالجة تغيّر الأيام أو نهاية الأشهر أو الثواني الكبيسة يدويًا؛ إذ تعتمد الأنظمة الرئيسية عد الثواني بتوقيت UTC بشكل موحد، ولا يشكل التوقيت الصيفي مصدر قلق للاستخدام اليومي.
المخاطر الرئيسية هي "إمكانية التلاعب الطفيف"، و"عدم الدقة"، و"انحراف الساعة بين العقد". في سلاسل مثل إيثيريوم، يمكن لمنتجي الكتل تعديل block.timestamp بشكل طفيف ضمن الحدود التي يسمح بها الإجماع.
هذا يعني أن استخدام الطوابع الزمنية لحدود زمنية صارمة (مثل إغلاق المزادات على مستوى الثانية) قد يكون عرضة للتلاعب عند الحدود. وتشمل الاستراتيجيات الأكثر قوة:
الخطوة 1: استخدم ">= طابع زمني معين مع هامش أمان" للعمليات الحساسة للوقت بدلاً من "== طابع زمني معين".
الخطوة 2: حيثما أمكن، قدّر النوافذ باستخدام ارتفاع الكتلة ومتوسط وقت الكتلة، أو اسمح بفترة هامشية.
الخطوة 3: تجنب الاعتماد فقط على الطوابع الزمنية في التحقق من العشوائية أو الأمن الحرج؛ وبدلاً من ذلك، استخدم مصادر عشوائية قابلة للتحقق أو أوراكل.
الخطوة 4: في الإعلانات العامة، وضح "النوافذ المتوقعة" بدلاً من وعود دقيقة على مستوى الثانية لتقليل النزاعات.
الاختلافات الرئيسية تنشأ من قواعد الإنشاء وإيقاع إنتاج الكتل. على سبيل المثال، يبلغ متوسط وقت الكتلة في إيثيريوم حوالي 12 ثانية (Ethereum بيانات عامة وملاحظات العملاء حتى 2024)، بينما يبلغ في بيتكوين حوالي 10 دقائق (توثيقات Bitcoin Core، ثابت تاريخيًا). وبسبب العشوائية في إنتاج الكتل، فإن الطوابع الزمنية لا تتقدم بزيادات خطية صارمة.
تستخدم بيتكوين قاعدة "الزمن الوسيط الماضي" (MTP) المعتمدة على الوسيط الحسابي للطوابع الزمنية لعدد من الكتل الأخيرة للحد من التلاعب من قبل المعدنين الأفراد. أما السلاسل عالية الأداء مثل سولانا، فقد تجمع بين مصادر زمنية خارجية وآليات تحقق لضمان تقدم الوقت إلى الأمام. راجع دائمًا توثيقات المطورين وقواعد الإجماع الخاصة بكل بلوكشين للتفاصيل الدقيقة.
توجد الطوابع الزمنية بكثرة في سجلات الأوامر والصفقات وسجلات الأموال وبيانات السوق على منصات التداول. فعلى Gate، تعرض الواجهات "وقت الصفقة" و"وقت وضع الأمر"، بينما تخزن الأنظمة الخلفية وواجهات API الأوقات غالبًا بتوقيت UTC وبدقة المللي ثانية.
إذا كنت تستخدم واجهات Gate لـ K-line أو الأوامر في التداول الكمي، تأكد من التحقق من وحدات الحقول وتسميات المناطق الزمنية:
الخطوة 1: راجع توثيقات API لمعرفة ما إذا كان "timestamp" بالمللي ثانية.
الخطوة 2: وحّد جميع الأوقات إلى UTC في قاعدة الشيفرة لديك قبل تحويلها إلى منطقتك الزمنية المحلية للعرض إذا لزم الأمر.
الخطوة 3: عند مطابقة مصادر متعددة، استخدم مفتاح مركب من "timestamp + زوج التداول + الاتجاه" للمطابقة بدلاً من المطابقة حسب سلسلة الوقت المحلي فقط.
تعتمد المصداقية على إمكانية التحقق المتقاطع على السلسلة. استخدم مستكشف الكتل لمطابقة طوابع الإعلانات مع الأحداث المقابلة على السلسلة.
الخطوة 1: حدد الطابع الزمني أو ارتفاع الكتلة في الإعلان.
الخطوة 2: افتح مستكشف السلسلة المناسب، وابحث عن الكتلة أو المعاملة المقابلة، واطلع على "وقت/تاريخ الكتلة (UTC)".
الخطوة 3: إذا أدرج الإعلان توقيت بكين، حوّله إلى UTC وتحقق مما إذا كان الفارق ضمن هامش إنتاج الكتل المتوقع.
الخطوة 4: للأحداث الرئيسية (مثل فتح الرموز)، تحقق أيضًا من سجلات أحداث العقود (مثل Transfer أو Unlock) للتأكد من وقوع الأحداث ضمن تلك النافذة.
الخطوة 5: إذا لاحظت فروقًا كبيرة، تحقق مما إذا كان الإعلان قد حدد "نافذة تقديرية" أو إذا كان ازدحام الشبكة سبب التأخير.
تعمل الطوابع الزمنية كجسر عالمي بين الوقت الواقعي والأحداث على السلسلة. وفهم وحداتها (ثوانٍ/مللي ثانية)، والمنطقة الزمنية (UTC/محلي)، والمصدر (بلوكشين/خادم)، والقيود المختلفة في البلوكشين أمر أساسي لتصميم العقود الذكية وتحليل البيانات وإدارة المخاطر.
مسار التعلم الموصى به: ابدأ بطوابع UNIX وتعرف على أساسيات UTC، ثم ادرس "block.timestamp" في إيثيريوم وقواعد الطابع الزمني في بيتكوين. وأخيرًا، مارس تحويل وتنسيق الحقول باستخدام واجهات API الفعلية للمنصات (مثل Gate). وفي العمليات الحساسة للأموال، احرص دائمًا على تطبيق هوامش أمان وخطوات تحقق حول منطق الطوابع الزمنية لتقليل المخاطر الحدية.
يعتمد الطول على الدقة. الرقم المكون من 10 خانات هو طابع زمني بنظام يونكس بدقة الثواني (مثال: 1704067200 يمثل 1 يناير 2024). أما الرقم المكون من 13 خانة فيعني دقة المللي ثانية (مثال: 1704067200000). في البلوكشين، تستخدم معظم طوابع المعاملات 10 خانات (ثوانٍ)، بينما قد تستخدم منصات التداول عالية التردد المللي ثانية لمزيد من الدقة.
يمكنك التمييز بناءً على الطول: 10 خانات تعني عادةً دقة على مستوى الثواني (تتراوح من حوالي 950 مليون إلى 990 مليون—تمثل السنوات بين 1973 و2286)، بينما تعني 13 خانة دقة على مستوى المللي ثانية (أكبر بنحو 1.000 مرة من نظيرتها بدقة الثواني). استخدم أدوات التحويل من منصات مثل Gate لعرض التاريخ والوقت المقابل فورًا—دون الحاجة لحساب يدوي.
من النادر جدًا أن يكون لكتلتين نفس الطابع الزمني تمامًا في الواقع. حتى إذا حدثت معاملتان في نفس الثانية، تميز أنظمة البلوكشين بينهما عبر ارتفاع الكتلة أو ترتيب المعاملة أو آليات أخرى. وتسمح بعض السلاسل بوجود عدة كتل في الثانية الواحدة، لكنها تستخدم بروتوكولات إجماع للحفاظ على التسلسل الزمني وسلامة السجل.
يحدث ذلك لأن كل منصة تسجل مرحلة مختلفة من الحدث. فقد تسجل بورصات مثل Gate وقت إرسال المستخدم للأمر محليًا، أو وقت إرسال الصفقة على السلسلة، أو وقت تأكيد الكتلة للمعاملة. الطابع الزمني الرسمي يتم تحديده من قبل المعدنين/المحققين عند تجميع المعاملة على السلسلة؛ وقد تظهر الفروق بسبب إعدادات المنطقة الزمنية للخوادم أو تأخيرات المزامنة.
يتم تعيين الطوابع الزمنية من قبل المعدنين أو المحققين ومن الصعب تغييرها بشكل خبيث—فأي تلاعب سيتم اكتشافه بسرعة من قبل العقد الأخرى. ومع ذلك، إذا تم التلاعب بالطوابع الزمنية بطريقة ما، فقد يتعطل منطق العقود الذكية الحساسة للوقت (على سبيل المثال، قد تفشل توزيعات الإيردروب المحدودة بالوقت). لهذا السبب لا يجب الاعتماد فقط على الطوابع الزمنية في القرارات الأمنية الحرجة؛ بل يجب دائمًا دعمها بآليات تحقق أخرى مثل ارتفاع الكتلة لضمان صحة المعاملة.


