このプロジェクトについて

NanoPayは、Nano暗号通貨ネットワーク用のNode.jsおよびTypeScriptライブラリです。READMEでは、2つの使用モードが説明されています:完全なワークフローのための高レベルクライアント、およびステップバイステップの制御のためのエクスポートされた関数。どちらも同じNano暗号化とブロックビルダーを共有します。 インストールはnpm install nanopayで行います。バージョン0.2.0では、createClient()またはcreateRpcClient()がURLなしで呼び出された場合、BerryPayのパブリックNanoメインネットRPCが使用されます。バージョン0.1.0では、明示的なURLが必要です。Node.js 22+、ESM、CommonJS、TypeScript、およびモダンブラウザがサポートされています。ブラウタースクリプトバンドルはNanoPayを公開します。 アカウントは、createWallet、walletFromSeed、accountFromPrivateKey、walletFromMnemonicで作成または復元できます。ネイティブのNano 16進シードはBLAKE2b導出を使用し、BIP39ニーモニックシードはNano SLIP-0010パスm/44'/165'/index'に従います。READMEでは、ユーザーはウォレットシード、またはニーモニックとそのパスフレーズをバックアップする必要があり、秘密鍵は1つのアカウントのみを制御することを警告しています。シードと秘密鍵は、ログやRPCリクエストから除外する必要があります。 送金、受信、確認のために、createClientはgetBalance、send、waitForConfirmation、receiveAll、changeRepresentativeを備えたクライアントを返します。クライアントはアカウント状態を読み取り、ブロックを構築し、ローカルで署名し、ワークを要求し、それを検証し、一度だけ送信します。同じアカウントへの書き込みはクライアントインスタンス内でキューイングされ、異なるアカウントと独立した読み取りは並行して実行されます。ステータスがsubmittedの場合、ノードはブロックを受け入れましたが、waitForConfirmationを使用して、それを確定として扱う前に確認する必要があります。TransactionErrorは、正確なハッシュと署名されたブロックを保持します。ReceiveAllError.completedは、以前の成功した送信を保存します。書き込みは自動的に再試行されず、送信失敗は、失敗したトランザクションが調整され、client.resumeAccountが呼び出されるまで、そのアカウントへのさらなる書き込みをAccountBlockedErrorでブロックします。 完全な制御のために、ライブラリはgenerateSeed、derivePrivateKey、derivePublicKey、deriveAddress、buildSendBlock、hashBlock、signHash、attachSignature、getWorkRoot、attachWork、createRpcClientをエクスポートします。ビルド関数は秘密鍵を必要としません。signBlockはハッシュと署名を組み合わせます。createSendBlock、createReceiveBlock、createChangeBlockは、ビルドと署名を組み合わせ、ハッシュとブロックを含むオブジェクトを返します。これらの関数はノードに接触しません。prepareSend、prepareReceive、prepareChangeRepresentativeは、元帳読み取りを追加し、未署名のトランザクションを返します。外部署名者は、publicKeyとsign(hash)を実装します。署名は、標準のEd25519-SHA512ではなく、NanoのEd25519-BLAKE2bを使用する必要があります。ワークプロバイダーは、root、threshold、signalでworkを実装し、ローカルWASM、GPUサービス、または別のワークノードを使用できます。 金額は、浮動小数点数ではなく文字列を使用します。nanoToRawとrawToNanoが利用可能で、amountはNanoを意味し、amountRawまたはbalanceRawはrawを意味します。1 Nanoは10^30 rawです。分数のrawとuint128のオーバーフローは拒否されます。歴史的な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もニーモニックワードリストも含まれていません。WASMワークエンジンは、レルムごとに1回コンパイルされ、並行呼び出しを隔離し、バッチ間でyieldします。workerIndexとworkerCountはノンス空間を分割し、別のWorkerで実行する必要があります。メインネットワークは確率論的であるため、持続的なワークロードには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に基づいています。ソース、ビルドスクリプト、元の通知、およびバンドルされた依存関係のライセンスは、パッケージに同梱されています。