इस प्रोजेक्ट के बारे में
NanoPay एक Node.js और TypeScript लाइब्रेरी है जो Nano क्रिप्टोकरेंसी नेटवर्क के लिए है। इसका README दो उपयोग मोड का वर्णन करता है: एक उच्च-स्तरीय क्लाइंट पूर्ण वर्कफ़्लो के लिए और चरण-दर-चरण नियंत्रण के लिए निर्यात किए गए फ़ंक्शन। दोनों समान Nano क्रिप्टोग्राफी और ब्लॉक बिल्डर्स साझा करते हैं।
इसे npm install nanopay के साथ इंस्टॉल करें। संस्करण 0.2.0 BerryPay के सार्वजनिक Nano मेननेट RPC का उपयोग करता है जब createClient() या createRpcClient() को URL के बिना बुलाया जाता है; संस्करण 0.1.0 को एक स्पष्ट URL की आवश्यकता होती है। Node.js 22+, ESM, CommonJS, TypeScript, और आधुनिक ब्राउज़र समर्थित हैं। एक ब्राउज़र स्क्रिप्ट बंडल NanoPay को उजागर करता है।
खाते createWallet, walletFromSeed, accountFromPrivateKey, और walletFromMnemonic के साथ बनाए या पुनर्प्राप्त किए जा सकते हैं। देशी Nano हेक्स बीज BLAKE2b व्युत्पन्न का उपयोग करते हैं, जबकि BIP39 mnemonic बीज Nano SLIP-0010 पथ m/44'/165'/index' का पालन करते हैं। README चेतावनी देता है कि उपयोगकर्ताओं को वॉलेट बीज, या mnemonic और उसके passphrase का बैकअप लेना चाहिए, और एक निजी कुंजी केवल एक खाते को नियंत्रित करती है। बीज और निजी कुंजियों को लॉग और RPC अनुरोधों से बाहर रखा जाना चाहिए।
सेंडिंग, रिसीविंग, और पुष्टिकरण के लिए, createClient एक क्लाइंट लौटाता है जिसमें getBalance, send, waitForConfirmation, receiveAll, और changeRepresentative होते हैं। क्लाइंट खाता स्थिति पढ़ता है, एक ब्लॉक बनाता है, स्थानीय रूप से साइन करता है, वर्क का अनुरोध करता है, इसे सत्यापित करता है, और एक बार सबमिट करता है। एक ही खाते में लिखने को एक क्लाइंट उदाहरण के अंदर कतारबद्ध किया जाता है; अलग-अलग खाते और स्वतंत्र रीड्स समवर्ती रूप से चलते हैं। submitted की स्थिति का मतलब है कि नोड ने ब्लॉक को स्वीकार कर लिया है, लेकिन इसे settled के रूप में मानने से पहले waitForConfirmation का उपयोग किया जाना चाहिए। TransactionError सटीक हैश और हस्ताक्षरित ब्लॉक को बरकरार रखता है। ReceiveAllError.completed पहले के सफल सबमिशन को संरक्षित करता है। Writes को स्वचालित रूप से पुन: प्रयास नहीं किया जाता है, और एक सबमिशन विफलता उस खाते में आगे के Writes को AccountBlockedError के साथ ब्लॉक कर देती है जब तक कि विफल लेनदेन को सुलझाया नहीं जाता और client.resumeAccount को बुलाया नहीं जाता।
पूर्ण नियंत्रण के लिए, लाइब्रेरी generateSeed, derivePrivateKey, derivePublicKey, deriveAddress, buildSendBlock, hashBlock, signHash, attachSignature, getWorkRoot, attachWork, और createRpcClient को निर्यात करती है। बिल्ड फ़ंक्शंस को निजी कुंजियों की आवश्यकता नहीं होती है। signBlock हैशिंग और साइनिंग को जोड़ती है। createSendBlock, createReceiveBlock, और createChangeBlock बिल्डिंग और साइनिंग को जोड़ती हैं और हैश और ब्लॉक के साथ एक ऑब्जेक्ट लौटाती हैं। ये फ़ंक्शंस नोड से संपर्क नहीं करते हैं। prepareSend, prepareReceive, और prepareChangeRepresentative लेज़र रीड्स जोड़ते हैं और बिना हस्ताक्षरित लेनदेन लौटाते हैं। बाहरी साइनर publicKey और sign(hash) को लागू करते हैं। हस्ताक्षर को Nano के Ed25519-BLAKE2b का उपयोग करना चाहिए, मानक Ed25519-SHA512 नहीं। वर्क प्रदाता root, threshold, और signal के साथ work को लागू करते हैं, और स्थानीय WASM, एक GPU सेवा, या एक अलग वर्क नोड का उपयोग कर सकते हैं।
Amounts स्ट्रिंग्स का उपयोग करते हैं, फ्लोटिंग-पॉइंट संख्याओं का नहीं। nanoToRaw और rawToNano उपलब्ध हैं, जिसमें amount का मतलब Nano है और amountRaw या balanceRaw का मतलब raw है। एक Nano 10^30 raw है। भिन्नात्मक raw और uint128 overflow को अस्वीकार किया जाता है। ऐतिहासिक Unit.nano का मतलब 10^24 raw है, इसलिए nanoToRaw का उपयोग साधारण Nano राशियों के लिए किया जाना चाहिए।
भुगतान लिंक और लाइव पुष्टिकरण createPaymentUri, parsePaymentUri, और watchConfirmations के माध्यम से समर्थित हैं। भुगतान URI Nano द्वारा आवश्यक रूप से raw को एन्कोड करते हैं। WebSocket सूचनाएं दोहराई जा सकती हैं, इसलिए उपयोगकर्ताओं को हैश द्वारा डुप्लिकेट हटाना चाहिए। एक डिस्कनेक्ट, खराब संदेश, या भरा बफर एक त्रुटि उठाता है। स्ट्रीम में स्वचालित पुन: कनेक्ट या स्थायी भुगतान लेखांकन नहीं है।
केंद्रित प्रवेश बिंदु में nanopay/keys, nanopay/blocks, nanopay/work, nanopay/amounts, nanopay/mnemonic, nanopay/rpc, nanopay/payments, और nanopay/confirmations शामिल हैं, जिनमें से प्रत्येक ESM, CommonJS, और TypeScript का समर्थन करता है। keys प्रवेश बिंदु में न तो WASM है और न ही mnemonic शब्द सूची। WASM वर्क इंजन प्रति क्षेत्र एक बार संकलित होता है, समवर्ती कॉल को अलग करता है, और बैचों के बीच उपज देता है। workerIndex और workerCount nonce स्थान को विभाजित करते हैं और अलग-अलग Workers में चलाए जाने चाहिए। मेननेट वर्क प्रायिकतात्मक है; 지속 workloads के लिए एक GPU वर्क सेवा की सिफारिश की जाती है।
दायरा और संगतता: टूलकिट स्थानीय खातों, देशी और mnemonic व्युत्पन्न, राज्य ब्लॉक, साइनिंग, वर्क, लेज़र रीड्स, send/receive/change वर्कफ़्लो, पुष्टिकरण ट्रैकिंग, और भुगतान लिंक को कवर करता है। client.request और rpc.request नोड द्वारा समर्थित अतिरिक्त Nano RPC कमांड को उजागर करते हैं। यह एक सहमति नोड नहीं चलाता है, प्रतिनिधि नहीं चुनता है, रहस्यों को संरक्षित या एन्क्रिप्ट नहीं करता है, एक्सचेंज लेखांकन का प्रबंधन नहीं करता है, या हार्डवेयर-डिवाइस ट्रांसपोर्ट प्रदान नहीं करता है। नए ब्लॉक राज्य प्रारूप का उपयोग करते हैं, जबकि RPC ब्लॉक रीड्स ऐतिहासिक ब्लॉक सामग्री का भी समर्थन करते हैं। मूल अपस्ट्रीम फ़ंक्शन नाम और कॉल हस्ताक्षर nanopay/legacy के तहत संरक्षित हैं, जिनमें deriveSecretKey और हैश-आधारित signBlock शामिल हैं। पुराना nanopay भुगतान-रैपर API प्रतिस्थापित किया गया है।
विकास कमांड में 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-only है और nanocurrency-js पर आधारित है। स्रोत, बिल्ड स्क्रिप्ट, मूल नोटिस, और बंडल किए गए निर्भरता लाइसेंस पैकेज के साथ शिप होते हैं।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.