প্রকল্প সম্পর্কে
NanoPay হল একটি Node.js এবং TypeScript লাইব্রেরি যা Nano ক্রিপ্টোকারেন্সি নেটওয়ার্কের জন্য। এর README-এ দুটি ব্যবহার মোড বর্ণনা করা হয়েছে: সম্পূর্ণ ওয়ার্কফ্লোয়ের জন্য একটি উচ্চ-স্তরের ক্লায়েন্ট এবং ধাপে ধাপে নিয়ন্ত্রণের জন্য এক্সপোর্ট করা ফাংশন। উভয়ই একই Nano ক্রিপ্টোগ্রাফি এবং ব্লক বিল্ডার শেয়ার করে।
NPM-এর মাধ্যমে ইনস্টল করুন: 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 মnemonic সিড Nano SLIP-0010 পাথ m/44'/165'/index' অনুসরণ করে। README সতর্ক করে যে ব্যবহারকারীদের অবশ্যই ওয়ালেট সিড, অথবা মnemonic এবং তার পাসফ্রেজ ব্যাক আপ করতে হবে, এবং একটি প্রাইভেট কী শুধুমাত্র একটি অ্যাকাউন্ট নিয়ন্ত্রণ করে। সিড এবং প্রাইভেট কী লগ এবং RPC রিকোয়েস্ট থেকে দূরে রাখা উচিত।
সেন্ডিং, রিসিভিং, এবং কনফার্মিংয়ের জন্য, createClient একটি ক্লায়েন্ট রিটার্ন করে যার getBalance, send, waitForConfirmation, receiveAll, এবং changeRepresentative রয়েছে। ক্লায়েন্ট অ্যাকাউন্ট স্টেট পড়ে, একটি ব্লক তৈরি করে, স্থানীয়ভাবে সাইন করে, ওয়ার্ক রিকোয়েস্ট করে, তা যাচাই করে, এবং একবার সাবমিট করে। একই অ্যাকাউন্টে রাইটগুলি ক্লায়েন্ট ইনস্ট্যান্সের মধ্যে কিউ হয়; বিভিন্ন অ্যাকাউন্ট এবং স্বাধীন রিড সমান্তরালভাবে চলে। একটি submitted স্ট্যাটাস মানে নোড ব্লকটি গ্রহণ করেছে, কিন্তু waitForConfirmation ব্যবহার করা উচিত before treating it as settled। TransactionError সঠিক হ্যাশ এবং সাইনড ব্লক ধরে রাখে। ReceiveAllError.completed earlier successful submissions preserves। রাইটগুলি স্বয়ংক্রিয়ভাবে রিট্রাই হয় না, এবং একটি সাবমিশন ফেইলিউর failed transaction reconciled এবং client.resumeAccount কল করা না হওয়া পর্যন্ত AccountBlockedError দিয়ে সেই অ্যাকাউন্টে আরও রাইট ব্লক করে।
পূর্ণ নিয়ন্ত্রণের জন্য, লাইব্রেরি generateSeed, derivePrivateKey, derivePublicKey, deriveAddress, buildSendBlock, hashBlock, signHash, attachSignature, getWorkRoot, attachWork, এবং createRpcClient এক্সপোর্ট করে। বিল্ড ফাংশনগুলির জন্য প্রাইভেট কী প্রয়োজন হয় না। signBlock হashing এবং সাইনিংকে একত্রিত করে। createSendBlock, createReceiveBlock, এবং createChangeBlock বিল্ডিং এবং সাইনিংকে একত্রিত করে এবং hash এবং block সহ একটি অবজেক্ট রিটার্ন করে। এই ফাংশনগুলি নোডের সাথে যোগাযোগ করে না। prepareSend, prepareReceive, এবং prepareChangeRepresentative লেজার রিড যোগ করে এবং unsigned transactions রিটার্ন করে। এক্সটার্নাল সাইনার 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-এর মাধ্যমে সমর্থিত। পেমেন্ট URI-গুলি Nano দ্বারা প্রয়োজনীয় raw এনকোড করে। WebSocket নোটিফিকেশন পুনরাবৃত্তি হতে পারে, তাই ব্যবহারকারীদের অবশ্যই হ্যাশ দ্বারা deduplicate করতে হবে। একটি ডিসকানেক্ট,Malformed message, অথবা full buffer একটি error উত্থাপন করে। স্ট্রীমের কোন স্বয়ংক্রিয় রিকানেক্ট বা স্থায়ী পেমেন্ট অ্যাকাউন্টিং নেই।
ফোকাসড এন্ট্রি পয়েন্টগুলির মধ্যে রয়েছে nanopay/keys, nanopay/blocks, nanopay/work, nanopay/amounts, nanopay/mnemonic, nanopay/rpc, nanopay/payments, এবং nanopay/confirmations, প্রতিটিরই ESM, CommonJS, এবং TypeScript সমর্থন রয়েছে। keys এন্ট্রি পয়েন্টে WASM বা মnemonic শব্দ তালিকা নেই। WASM ওয়ার্ক ইঞ্জিন প্রতি রিয়ামে একবার কম্পাইল করে, সমান্তরাল কলগুলিকে আইসোলেট করে, এবং ব্যাচের মধ্যে yield করে। workerIndex এবং workerCount ননস স্পেসকে পার্টিশন করে এবং আলাদা Workers-এ চালানো উচিত। মেইননেট ওয়ার্ক প্রবাবিলিস্টিক; একটি GPU ওয়ার্ক সার্ভিস sustained workloads-এর জন্য সুপারিশ করা হয়।
স্কোপ এবং সামঞ্জস্যতা: টুলকিট স্থানীয় অ্যাকাউন্ট, নেটিভ এবং মnemonic ডেরিভেশন, স্টেট ব্লক, সাইনিং, ওয়ার্ক, লেজার রিড, সেন্ড/রিসিভ/চেঞ্জ ওয়ার্কফ্লো, কনফার্মেশন ট্র্যাকিং, এবং পেমেন্ট লিঙ্ক কভার করে। client.request এবং rpc.request অতিরিক্ত Nano RPC কমান্ড এক্সপোজ করে যা নোড দ্বারা সমর্থিত। এটি একটি কনসেন্সাস নোড চালায় না, একটি রিপ্রেজেন্টেটিভ বেছে নেয় না, সিক্রেট পার্সিস্ট বা এনক্রিপ্ট করে না, এক্সচেঞ্জ অ্যাকাউন্টিং ম্যানেজ করে না, অথবা একটি হার্ডওয়্যার-ডিভাইস ট্রান্সপোর্ট সরবরাহ করে না। নতুন ব্লকগুলি স্টেট ফরম্যাট ব্যবহার করে, যখন RPC ব্লক রিডগুলি ঐতিহাসিক ব্লক কন্টেন্টও সমর্থন করে। মূল আপস্ট্রিম ফাংশন নাম এবং কল সিগনেচার nanopay/legacy-এর অধীনে সংরক্ষিত, যার মধ্যে deriveSecretKey এবং hash-based signBlock রয়েছে। পুরানো nanopay payment-wrapper 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.