عن المشروع

NanoPay هي مكتبة Node.js و TypeScript لشبكة العملات الرقمية Nano. يصف ملف README الخاص بها نوعين من الوضع الاستخدام: عميل عالي المستوى لأتمتة العمليات الكاملة، ووظائف مُصدَّرة للتحكم خطوة بخطوة. كلاهما يستخدم نفس التشفير وبناء الكتل في Nano. يمكن تثبيت المكتبة باستخدام npm install nanopay. الإصدار 0.2.0 يستخدم خدمة RPC العامة لشبكة Nano الرئيسية من BerryPay عند استدعاء createClient() أو createRpcClient() بدون عنوان URL؛ بينما الإصدار 0.1.0 يتطلب تحديد عنوان URL صريحًا. تدعم Node.js 22+، ESM، CommonJS، TypeScript، والمتصفحات الحديثة. يمكن استخدام حزمة سكريبت للمتصفح لتوفير NanoPay. يمكن إنشاء الحسابات أو استردادها باستخدام createWallet، walletFromSeed، accountFromPrivateKey، و walletFromMnemonic. تستخدم البذور الثنائية (hex) في Nano طريقة BLAKE2b للحصول على البذور، بينما تتبع البذور المكونة من كلمات BIP39 مسار Nano SLIP-0010 m/44'/165'/index'. يحذّر README من ضرورة نسخة احتياطية لبذرة المحفظة أو جملة المرور الخاصة بها، وأن المفتاح الخاص يتحكم فقط في حساب واحد. يجب الحفاظ على البذور والمفاتيح الخاصة خارج السجلات وطلبات RPC. بالنسبة لإرسال واستقبال وتتبع التأكيدات، يعيد createClient عميلًا يحتوي على getBalance، send، waitForConfirmation، receiveAll، وchangeRepresentative. يقوم العميل بقراءة حالة الحساب، وبناء كتلة، والتوقيع محليًا، وطلب العمل، والتحقق منه، ثم إرساله مرة واحدة. تُنفذ عمليات الكتابة على نفس الحساب ضمن مثيل العميل؛ أما القراءات المختلفة والحسابات المستقلة فتتم بشكل متزامن. يشير الحالة "submitted" إلى قبول العقدة للبلوك، ولكن يجب استخدام waitForConfirmation قبل اعتباره مُثبتًا. يحتفظ TransactionError بالهش والكتلة الموقعة بدقة. يحافظ ReceiveAllError.completed على الإرسالات الناجحة السابقة. لا يتم إعادة المحاولة تلقائيًا، وفشل الإرسال يمنع عمليات الكتابة المستقبلية لهذا الحساب حتى يتم حل المعاملة الفاشلة باستخدام client.resumeAccount. للحصول على السيطرة الكاملة، تعرض المكتبة وظائفًا مثل generateSeed، derivePrivateKey، derivePublicKey، deriveAddress، buildSendBlock، hashBlock، signHash، attachSignature، getWorkRoot، attachWork، و createRpcClient. تحتاج وظائف البناء إلى مفاتيح خاصة. تجمع signBlock بين التجزئة والتوقيع. تجمع createSendBlock، createReceiveBlock، و createChangeBlock البناء والتوقيع ويُرجع كائنًا يحتوي على hase و block. هذه الوظائف لا تتصل بالعقدة. تضيف prepareSend، prepareReceive، و prepareChangeRepresentative قراءات السجل ويُرجع معاملات غير موقعة. يُمكن للتوقيعات الخارجية تنفيذ publicKey و sign(hash). يجب أن تكون التوقيعات باستخدام Ed25519-BLAKE2b الخاص بـ Nano وليس Ed25519-SHA512 القياسي. تُنفذ مزودو العمل باستخدام root و threshold و signal، ويمكنهم استخدام WASM المحلي أو خدمة GPU أو عقدة عمل منفصلة. تستخدم الكميات سلاسل نصية بدلاً من الأرقام العشرية. تتوفر nanoToRaw و rawToNano، حيث تعني amount Nano، و amountRaw أو balanceRaw تعني raw. يساوي Nano واحد 10^30 من الـ raw. ترفض الكسور من raw وتجاوز uint128. تعني الوحدة التاريخية Unit.nano 10^24 من الـ raw، لذلك يجب استخدام nanoToRaw للكميات العادية من Nano. تُدعم روابط الدفع والتأكيدات المباشرة عبر createPaymentUri، parsePaymentUri، و watchConfirmations. ترمز روابط الدفع إلى الـ raw كما هو مطلوب في Nano. يمكن أن تتكرر إشعارات WebSocket، لذا يجب على المستخدمين تجنب التكرار باستخدام الهش. يؤدي انقطاع الاتصال أو رسالة غير صحيحة أو تعبئة المخزن المؤقت إلى حدوث خطأ. لا تحتوي التدفق على إعادة اتصال تلقائية أو حساب دفع دائم. نقاط الدخول المركزة تشمل nanopay/keys، nanopay/blocks، nanopay/work، nanopay/amounts، nanopay/mnemonic، nanopay/rpc، nanopay/payments، و nanopay/confirmations، وكل منها يدعم ESM وCommonJS وTypeScript. لا تحتوي نقطة الدخول keys على WASM أو قائمة كلمات المحفظة. يُترجم محرك WASM عمل مرة واحدة لكل نطاق، ويُعزل المكالمات المتزامنة، ويُعطي الفرصة بين الدفعات. workerIndex و workerCount تقسيم مساحة nonce ويجب تشغيلهما في عمليات Worker منفصلة. العمل في الشبكة الرئيسية احتمالي؛ يُوصى باستخدام خدمة GPU لعمليات العمل المستمرة. النطاق والتوافق: تغطي الأداة الحسابات المحلية، واستخلاص البذور الطبيعية والكلمات، والكتل الحالة، والتوقيع، والعمل، وقراءات السجل، وعمليات الإرسال والاستقبال والتغيير، وتتبع التأكيدات، وروابط الدفع. يعرض client.request و rpc.request أوامر RPC الإضافية المدعومة من العقدة. لا تعمل كعقدة اتفاقية، ولا تختار ممثلًا، ولا تُخزن أو تشفّر الأسرار، ولا تدير حسابات التبادل، ولا توفر وسيلة اتصال مع أجهزة صناعية. تستخدم الكتل الجديدة التنسيق الحالة، بينما تدعم قراءات RPC محتوى الكتل التاريخية. تُحافظ على أسماء الوظائف الأصلية والتوقيعات عند استدعاء nanopay/legacy، بما في ذلك deriveSecretKey و signBlock القائم على التجزئة. تم استبدال واجهة API القديمة nanopay payment-wrapper. أوامر التطوير تشمل npm ci، npm run check، و npm run bench. تشمل الفحوصات متجهات البروتوكول، العمليات، تنفيذ المتصفح وWorker، التنسيق، وتثبيت مشروع npm نظيف. يمكن تثبيت Playwright Chromium باستخدام npx playwright install chromium. npm run build:wasm يعيد بناء ثنائي مُدمج باستخدام LLVM clang و wasm-ld؛ بينما تستخدم الإصدارات العادية الثنائي الحالي. مكتبة NanoPay مرخصة بموجب GPL-3.0 فقط وهي مبنية على nanocurrency-js. يُرفق المصدر، وسكربتات البناء، والإشعارات الأصلية، وترخيص التبعيات المدمجة مع الحزمة.