منصوبے کے بارے میں
NanoPay ایک Node.js اور TypeScript لائبریری ہے جو Nano cryptocurrency نیٹ ورک کے لیے ہے۔ اس کا 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 نیمونک سیڈز Nano SLIP-0010 پاتھ m/44'/165'/index' کی پیروی کرتے ہیں۔ README خبردار کرتا ہے کہ صارفین کو والٹ سیڈ، یا نیمونک اور اس کا پاس فریز، بیک اپ کرنا چاہیے، اور کہ ایک پرائیویٹ کی صرف ایک اکاؤنٹ کو کنٹرول کرتی ہے۔ سیڈز اور پرائیویٹ کیز کو لاگز اور RPC درخواستوں سے دور رکھا جانا چاہیے۔
سینڈ، ریسیو، اور کنفرم کرنے کے لیے، createClient ایک کلائنٹ لوٹاتا ہے جس میں getBalance، send، waitForConfirmation، receiveAll، اور changeRepresentative ہیں۔ کلائنٹ اکاؤنٹ اسٹیٹ پڑھتا ہے، ایک بلاک بناتا ہے، مقامی طور پر سائن کرتا ہے، ورک کی درخواست کرتا ہے، اس کی تصدیق کرتا ہے، اور ایک بار جمع کراتا ہے۔ ایک ہی اکاؤنٹ کے لیے لکھے گئے کام کلائنٹ انسٹنس کے اندر Queue ہوتے ہیں؛ مختلف اکاؤنٹس اور آزادانہ پڑھنے بیک وقت چلتے ہیں۔ submitted کی اسٹیٹس کا مطلب ہے کہ نوڈ نے بلاک کو قبول کر لیا ہے، لیکن waitForConfirmation کو اس وقت تک استعمال کیا جانا چاہیے جب تک کہ اسے settled نہ سمجھا جائے۔ TransactionError میں درست ہیش اور سائنڈ بلاک محفوظ رہتا ہے۔ ReceiveAllError.completed پہلے کے کامیاب جمع کراوے کو محفوظ رکھتا ہے۔ لکھے گئے کام خود بخود دوبارہ نہیں کیے جاتے، اور جمع کرانے میں ناکامی اس اکاؤنٹ کے لیے مزید لکھے گئے کاموں کو AccountBlockedError کے ساتھ روک دیتی ہے جب تک کہ ناکام ٹرانزیکشن کو درست نہ کیا جائے اور client.resumeAccount کو نہ بلایا جائے۔
مکمل کنٹرول کے لیے، لائبریری generateSeed، derivePrivateKey، derivePublicKey، deriveAddress، buildSendBlock، hashBlock، signHash، attachSignature، getWorkRoot، attachWork، اور createRpcClient کو ایکسپورٹ کرتی ہے۔ بلڈ فنکشنز کو پرائیویٹ کیز کی ضرورت نہیں ہوتی۔ signBlock ہیشنگ اور سائننگ کو جوڑتا ہے۔ createSendBlock، createReceiveBlock، اور createChangeBlock بلڈنگ اور سائننگ کو جوڑتے ہیں اور ہیش اور بلاک کے ساتھ ایک آبجیکٹ لوٹاتے ہیں۔ یہ فنکشنز نوڈ سے رابطہ نہیں کرتے۔ prepareSend، prepareReceive، اور prepareChangeRepresentative لیجر پڑھنے کو شامل کرتے ہیں اور unsigned ٹرانزیکشنز لوٹاتے ہیں۔ بیرونی سائنرز publicKey اور sign(hash) کو لاگو کرتے ہیں۔ سگنیچرز کو Nano کے Ed25519-BLAKE2b کا استعمال کرنا چاہیے، نہ کہ معیاری Ed25519-SHA512۔ ورک پرووائیڈرز root، threshold، اور signal کے ساتھ work کو لاگو کرتے ہیں، اور مقامی 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 کے ذریعے سپورٹڈ ہیں۔ پیمنٹ URIs 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 ورک انجن ہر ریم کے لیے ایک بار کمپائل ہوتا ہے، بیک وقت کالز کو الگ کرتا ہے، اور بیچوں کے درمیان yield کرتا ہے۔ workerIndex اور workerCount نانس اسپیس کو پارٹیشن کرتے ہیں اور الگ الگ Workers میں چلائے جانے چاہئیں۔ مین نیٹ ورک کا کام probabilistic ہے؛ ایک GPU ورک سروس کو مسلسل ورک لوڈ کے لیے تجویز کیا جاتا ہے۔
اسکوپ اور مطابقت: یہ ٹول کٹ مقامی اکاؤنٹس، مقامی اور نیمونک ڈیریویشن، اسٹیٹ بلاکس، سائننگ، ورک، لیجر پڑھنے، سینڈ/ریسیو/چینج ورک فلو، کنفرمیشن ٹریکنگ، اور پیمنٹ لنکس کو کور کرتا ہے۔ 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.