ADAMANT Exchange Bot v3.0.0: تحديث بيئة التشغيل وضمانات أمان الأموال بمستوى الإجماع
ADAMANT Exchange Bot هو برنامج ذاتي الاستضافة لإجراء عمليات تبادل فورية ومجهولة للعملات المشفرة داخل محادثات ADAMANT Messenger المشفرة من طرف إلى طرف. يعمل البرنامج باستخدام محافظ ساخنة (hot wallets) لعملات Bitcoin وEthereum وDash وDogecoin وADAMANT دون الحاجة إلى جهات حفظ خارجية أو واجهات ويب مكشوفة. يعمل الإصدار 3.0.0 على تحديث بيئة التشغيل (runtime stack)، ونقل التشفير وتكامل البلوكشين إلى مكتبات حديثة، وفرض ثوابت أمان الأموال بمستوى الإجماع (consensus-grade) من خلال قفل UTXO وقفل المزامنة (mutex) على مستوى الطلب، كما يضيف مراقباً خارجياً لمطالبات الإيداع مع نافذة نزاع مدتها 5 دقائق. تتولى cryptofoundry عمليات التدقيق الأمني والصيانة بالتعاون مع مجتمع مطوري ADAMANT.
تحديث البنية والتقنيات
تستهدف قاعدة الأكواد الآن Node.js 22.13+ LTS، مع تحديث محركات package.json وقيود .nvmrc. تستبدل تفاعلات Ethereum وERC-20 مكتبات web3-eth وweb3-utils القديمة بمكتبة ethers v6، مما يوفر استدعاءات عقود حتمية، وتقدير دقيق لرسوم الغاز، وإدارة موثوقة لـ nonce. تم ترحيل بناء معاملات Bitcoin وDash وDogecoin إلى معاملات البيتكوين الموقعة جزئياً (PSBT) عبر bitcoinjs-lib 7، مما يلغي استخدام TransactionBuilder المهمل. تستخدم استعلامات MongoDB 7 عبر مجموعات payments وincomingtxs وsystems نمط async/await القائم على الوعود (Promises)، مما يلغي أنماط رد الاتصال (callback). تمت ترقية تكامل عميل Node إلى adamant-api 3.x باستخدام AdamantApi وWebSocketClient مع مساعدات اشتقاق المفاتيح الحديثة. تم حذف دعم Lisk (LSK) القديم بالكامل، بما في ذلك تبعيات @liskhq/* وlsk_utils.js وlskBaseCoin.js وخيارات التكوين ذات الصلة. تتبنى أدوات التطوير تكوين ESLint 9 المسطح، وPrettier 3، وJest 30.
ضمانات التزامن وثوابت أمان الأموال
تتطلب عمليات التبادل غير المراقبة أماناً مالياً بمستوى الإجماع: يجب أن تكون الأسعار والرسوم والكسور العشرية والأرصدة دقيقة، ويجب أن تظل عمليات الدفع أو الاسترداد غير متكررة (idempotent) بشكل صارم.
في السلاسل القائمة على UTXO، كانت عمليات الدفع أو الاسترداد المتزامنة تخاطر سابقاً بظروف السباق (race conditions) حيث تحاول معاملات متعددة إنفاق نفس المخرجات غير المنفقة. يقدم الإصدار 3.0.0 قفل مزامنة (mutex) ذاكرة غير متزامن في helpers/mutex.js وbtcBaseCoin.js يقوم بقفل مخرجات UTXO المحددة أثناء إنشاء وتوقيع PSBT. تظل مخرجات UTXO مقفلة حتى يتم التحقق من تأكيد البث على الشبكة. في حال فشل تجميع المعاملة أو بثها، يتم تحرير مخرجات UTXO المقفلة بأمان إلى المجمع المتاح، مما يمنع تجمد الأرصدة دون المخاطرة بالإنفاق المزدوج.
تتم مزامنة أوامر المحادثة الواردة، وأحداث التحويل الجديدة، وطلبات الإلغاء من نفس المستخدم من خلال قفل مزامنة لكل مرسل في incomingTxsParser.js، مما يلغي ظروف السباق عندما يرسل المستخدمون تحويلات متزامنة أو يطلقون عمليات استرداد أثناء تغييرات الحالة. يمر كل سجل دفع عبر حالات حتمية (inProcessing وneedToSendBack وsent وrefunded) يتم حفظها في MongoDB قبل النقل عبر الشبكة. إذا تمت إعادة تشغيل البوت أو فقد الاتصال أثناء التحويل، يتم تسوية المدفوعات المعلقة واستئنافها دون إنفاق مزدوج.
مراقب الإيداع ودورة حياة المطالبات
تتطلب الإيداعات الخارجية ربط معاملات البلوكشين بهويات محادثات ADAMANT. يقوم modules/depositWatcher.js بمراقبة المعاملات غير المؤكدة والواردة عبر تنفيذ getPendingIncomingTransactions الخاص بكل محول دون الحاجة إلى خطافات ويب (webhooks) مركزية. يتتبع modules/depositClaims.js مطالبات الإيداع عبر دورة حياتها لمنع المطالبة المكررة بنفس هاش المعاملة على البلوكشين. تحمي نافذة نزاع إلزامية مدتها 5 دقائق ضد إعادة تنظيم البلوكشين (reorgs)، وهجمات السباق، واستغلال المطالبات المزدوجة قبل تنفيذ الدفع. يقوم modules/deepExchangeValidator.js بالتحقق تشفيرياً من الإيداعات مقابل سجلات عناوين تخزين المفاتيح والقيم (KVS) الخاصة بمرسل ADAMANT، مع التخزين المؤقت ومنطق إعادة المحاولة التلقائي.
تحسينات تجربة المستخدم وأوامر المحادثة
يمكن للمستخدمين الذين يرسلون إيداعاً دون تحديد زوج تبادل إصدار أمر /cancel (أو cancel) في المحادثة لإلغاء التبادل المعلق واستلام الإيداع تلقائياً، مطروحاً منه رسوم معاملة الشبكة. إذا أرسل مستخدم لديه إيداع في حالة inUpdateState تحويلاً لاحقاً بدلاً من توضيح العملة المستهدفة، يقوم البوت الآن بوضع الإيداع السابق في قائمة الانتظار للاسترداد التلقائي بدلاً من تجاهله. تمت إعادة هيكلة مساعد utils.formatNumber لتوسيع التدوين العلمي (e+ / e-) إلى سلاسل عشرية كاملة قابلة للقراءة قبل تجميع الأرقام وتنسيقها بالخط العريض، مما أدى إلى إصلاح المسافات المشوهة أو رموز الأسس في الأرقام ذات المقادير الكبيرة أو العملات ذات الكسور العشرية العالية. تمت إضافة دعم التكوين الأصلي والسجل لعملة Onyxcoin (XCN) من نوع ERC-20.
مخطط التكوين وتجاوز الفشل متعدد العقد
يتم التحقق من ملفات التكوين (config.jsonc وconfig.default.jsonc) بدقة مقابل مخططات تصريحية في modules/configSchema.js عند بدء التشغيل. تؤدي المفاتيح المفقودة، أو العملات المشفرة غير المعروفة في accepted_crypto، أو العملات التي تم تكوينها بدون عقد إلى حدوث أخطاء فورية. يقوم العميل المرن متعدد العقد في helpers/cryptos/nodeClient.js تلقائياً بتوزيع الأحمال (round-robin) وتجاوز الفشل في استدعاءات HTTP وJSON-RPC عبر نقاط النهاية المكونة، مع التعامل مع عقد البلوكشين غير المتصلة أو غير المتزامنة. يمكن للمشغلين تحديد تجاوزات خاصة بكل عملة لرسوم الشبكة (exchange_fee_<COIN>)، والتأكيدات المطلوبة (min_confirmations_<COIN>)، وحدود الحجم اليومي بالدولار (daily_limit_usd_<COIN>)، وحدود التسعير (fixed_buy_price_usd_<COIN> وmin_sell_price_usd_<COIN>).
الاختبار ودليل التشغيل بالذكاء الاصطناعي
تتكون مجموعة الاختبار من 31 مجموعة اختبار Jest و690 اختباراً وحدوياً تغطي وحدات التبادل الأساسية، ومحولات العملات المشفرة، ومخططات التكوين، والمرافق دون الحاجة إلى عقد حية، أو MongoDB، أو مفاتيح خاصة حقيقية. تم إضفاء الطابع الرسمي على اتفاقيات المستودع، والبنية التقنية، وإرشادات الثوابت، وقواعد انضباط التغيير في AGENTS.md.