وصول كامل مُقيَّد بالقراءة فقط إلى واجهات برمجة تطبيقات ADAMANT Node
تُتيح حزمة adamant-api SDK الآن سطحًا كاملًا مُقيَّدًا بالأنواع لواجهات برمجة تطبيقات ADAMANT Node APIs كثيفة القراءة، والتي تستخدمها المستعرضات وخدمات المراقبة والمحافظ والروبوتات وغيرها من التكاملات. لم يعد المستهلكون بحاجة إلى استدعاءات api.get() عامة أو تحويلات استجابة محلية لاستعلامات الحساب الرئيسي والكتل والمفوّضين والأقران والمجموعات وحالة الشبكة التي أُدخلت أو وُسِّعت في ADAMANT Node v0.10.2.
التغطية
تُتيح الحزمة getTopAccounts() مع ترقيم صفحات مُقيَّد بالأنواع وتصفية المفوّضين. تتضمن الاستجابة ترتيب الأرصدة الحتمي للعقدة وبيانات ترقيم الصفحات الوصفية؛ وطلبات limit: 0 تُرجع بيانات وصفية للعد فقط دون إرجاع صفوف الحسابات.
const topDelegates = await api.getTopAccounts({
limit: 50,
offset: 0,
isDelegate: 1,
});
const countOnly = await api.getTopAccounts({limit: 0});
تغطي أنواع الخيارات العامة الآن قوائم الكتل والبحث عنها، وقوائم المفوّضين مع بحث مفوّض واحد، والبحث عن أسماء المستخدمين، وإحصاءات التعدين، والمصوّتين، وتوقعات المُعدِّن التالي، وقوائم الأقران المتصلين والبحث الدقيق عن الأقران، وقوائم المعاملات المجمّعة والبحث عنها، ونطاقات وقت المعاملات الشاملة. هذا يجعل الحزمة قابلة للاستخدام كحد مُقيَّد بالأنواع للخدمات التي تعمل بالقراءة فقط بدلاً من كونها مساعدًا للتوقيع والبث فحسب.
تُتيح العقود المُولَّدة الآن consensusCodeName وconsensusSchedule الفعّال وmilestoneSchedule الكامل لمكافآت الكتل وقيم forged مدى حياة المفوّض كسلاسل أعداد صحيحة بالنظام العشري. تستبدل خاصية producedblocks في وقت التشغيل الخطأ الإملائي producedlocks المُولَّد سابقًا. يمكن للخدمة الحصول على إسقاط السلسلة العام دون إعادة تعريف الاستجابة محليًا:
const [network, node] = await Promise.all([
api.getStatus(),
api.getNodeStatus(),
]);
console.log(network.consensusCodeName);
console.log(node.consensusSchedule, node.milestoneSchedule);
دلالات الاستعلام الواعي بنقطة النهاية
لغة استعلام معاملات ADAMANT Node مسطّحة وليست شجرة تعبيرات منطقية متداخلة. فهي تُسلسل الشروط في تعبير SQL واحد بترتيب سلسلة الاستعلام، مع أسبقية SQL العادية ودون إضافة أقواس لكائنات and: {} أو or: {}. لذلك تجمع الحزمة SDK المرشحات العادية على المستوى الأعلى مع and افتراضيًا، وتحافظ على ترتيب إدراج كائنات JavaScript أثناء التسلسل، وتُحذِّر عندما تجعل شروط and / or المختلطة ترتيب النقل ذا دلالة دلالية. تُقيِّد عناصر التحكم مثل includeDirectTransfers وreturnAsset وuserId بنقاط النهاية المتوافقة، وتزيل عناصر التحكم غير المدعومة المعروفة قبل إرسال الطلب، وتسمح بمرشحات المبالغ فقط على /api/transactions حيث تُطبِّقها العقدة فعلًا. هذا أكثر صرامة عمدًا من تمرير كل خيار مشترك إلى كل نقطة نهاية — فاستدعاء مُقيَّد بالأنواع يجب أن يمثل سلوكًا يُنفِّذه مسار العقدة المحدد فعلًا.
أصل المخطط والتوافق
يُولَّد src/api/generated.ts بشكل قابل للتكرار من Adamant-im/adamant-schema@f35b8ddb5597a8f1a80a3a670bedb003af65ef90. يتحقق المستودع من الملف المُولَّد باستخدام npm run api-types:check، بينما تُجمِّع اختبارات مستهلك الحزمة التصريحات المُصدَّرة وتُجرِّب نقاط دخول ESM وCommonJS المبنية. تصحيح producedlocks إلى producedblocks هو تغيير توافق في وقت التجميع؛ قد يحتاج المستهلكون الذين يُنشئون تركيبات مفوّضين أو حالة يدويًا إلى إضافة الحقول المطلوبة حديثًا. معالجة الاستجابة في وقت التشغيل تبقى كما هي — لا تُحوَّل استجابات العقدة الأقدم أو تُرفض بواسطة الحزمة SDK.
الحالة الحية مع قراءات اللقطة
يضيف توافق ADAMANT Node v0.10.2 نفسه معالجات WebSocket اختيارية لأحداث newBlock المدمجة وأحداث balances/change المؤكدة أو غير المؤكدة. تُستعاد الاشتراكات بعد إعادة الاتصال، وقيم الرصيد هي استبدالات مطلقة وليست فروقات. تكمل هذه الأحداث قراءات REST المُقيَّدة بالأنواع لكنها لا تحل محلها: لا توجد إعادة تشغيل أو لقطة رصيد أولية، وقد تحتوي حمولة الرصيد فقط على الحقول التي تغيرت، ولا تُعبَّأ الأحداث المُرسَّلة أثناء انقطاع الاتصال بأثر رجعي. يجب على العملاء الحرجين التوفيق بين الكتل والأرصدة عبر REST بعد إعادة الاتصال.
حدود التوافق
تتطلب القدرات الجديدة للحسابات العليا وحالة الشبكة والمفوّضين والكتل وأحداث الأرصدة ADAMANT Node v0.10.2. بناء المعاملات الحالي وتخطيط البايت والتجزئة والمعرّفات والتوقيعات والتشفير وإعادة المحاولة والتحويل الاحتياطي واختيار العقدة النشطة كلها دون تغيير. يبقى جذر الحزمة مركّزًا على ADM؛ وتستمر مساعدات العملات الخارجية في استخدام تصدير المسار الفرعي الصريح. تتطلب الحزمة SDK Node.js 22.12.0 أو أحدث، بينما يجب على مشغّلي ADAMANT Node v0.10.2 اتباع متطلبات العقدة 22.13.0 أو أحدث.