Xpring-JSは、Xpring SDKのJavaScriptクライアント側ライブラリです。
Xpring-JSは次の機能を提供します:
- ウォレットの生成と派生(シードベースまたはHDウォレットベース)
- アドレス検証
- 口座残高の取得
- XRP支払いの送信
Xpring-JSは、2つのコンポーネントを使用してXpringプラットフォームにアクセスします。
- Xpring-JSクライアント側ライブラリ(このライブラリ)
- このライブラリからのリクエストを処理し、XRPノードにプロキシするサーバー側コンポーネント
Xpring-JSはNPMパッケージとして利用できます。次のようにインストールしてください:
$ npm i xpring-js
サーバー側コンポーネントは、クライアント側のリクエストをXRPノードに送信します。
開発者がすぐに開発を開始できるように, Xpringは現在、サーバー側コンポーネントをホスト型サービスとして提供し、クライアント側ライブラリからのリクエストをXRPノードにプロキシします。開発者は次のエンドポイントに到達できます:
# Testnet - Node Environment
test.xrp.xpring.io:50051
# Mainnet - Node Environment
main.xrp.xpring.io:50051
#Testnet - Browser Environment
https://envoy.test.xrp.xpring.io
#Mainnet - Browser Environment
https://envoy.main.xrp.xpring.io
Xpringは、XRPノードユーザーがrippledのオープンソースコンポーネントとしてアダプターを展開および使用するためのゼロコンフィグの方法の構築に取り組んでいます。乞うご期待!
注意: Xpring SDKはX-Addressフォーマットでのみ動作します。このフォーマットの詳細については、[Utilities section](#utilities)およびhttp://xrpaddress.infoを参照してください。
ウォレットは、鍵の管理、アドレスの導出、および署名機能を提供するXpringKitの基本的なモデルオブジェクトです。 ウォレットは、シードまたはニーモニック、および導出パスから導出できます。新しいランダムHDウォレットを生成することもできます。
Xpring-JSは、シードからウォレットを導出させるか、ニーモニックおよび導出パスから階層的な決定性ウォレット(HDWallet)を導出させることができます。
ニーモニックと導出パスを使用して、階層的な決定性ウォレットが作成されます。ニーモニックと導出パスをウォレット生成関数に渡すだけです。導出パスを省略し、代わりにデフォルトのパスを使用できることにも注目です。
const { Wallet } = require("xpring-js");
const mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
const hdWallet1 = Wallet.generateWalletFromMnemonic(mnemonic); // Has default derivation path
const hdWallet2 = Wallet.generateWalletFromMnemonic(mnemonic, Wallet.getDefaultDerivationPath()); // Same as hdWallet1
const hdWallet = Wallet.generateWalletFromMnemonic(mnemonic, "m/44'/144'/0'/0/1"); // Wallet with custom derivation path.
base58checkでエンコードされたシード文字列を渡すことで、シードベースのウォレットを構築できます。
const { Wallet } = require("xpring-js");
const seedWallet = Wallet.generateWalletFromSeed("snRiAJGeKCkPVddbjB3zRwiYDBm1M");
Xpring-JSは、新しいランダムなHD Walletを生成できます。ウォレット生成の呼び出しの結果は、次を含むタプルです:
- ランダムに生成されたニーモニック
- 使用された導出パス、これはデフォルトのパスです
- 新しいウォレットへの参照
const { Wallet } = require("xpring-js");
// Generate a random wallet.
const generationResult = Wallet.generateRandomWallet();
const newWallet = generationResult.wallet
// Wallet can be recreated with the artifacts of the initial generation.
const copyOfNewWallet = Wallet.generateWalletFromMnemonic(generationResult.mnemonic, generationResult.derivationPath)
生成されたウォレットは、XRPレジャー上で公開鍵、秘密鍵、およびアドレスを提供できます。
const { Wallet } = require("xpring-js");
const mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
const wallet = Wallet.generateWalletFromMnemonic(mnemonic);
console.log(wallet.getAddress()); // XVMFQQBMhdouRqhPMuawgBMN1AVFTofPAdRsXG5RkPtUPNQ
console.log(wallet.getPublicKey()); // 031D68BC1A142E6766B2BDFB006CCFE135EF2E0E2E94ABB5CF5C9AB6104776FBAE
console.log(wallet.getPrivateKey()); // 0090802A50AA84EFB6CDB225F17C27616EA94048C179142FECF03F4712A07EA7A4
ウォレットは、任意の16進数のメッセージに署名して検証することもできます。一般的に、ユーザーはこれらの低レベルAPIは使用せずに、 XrpClient
上の暗号化機能を実行しなければなりません。
const { Wallet } = require("xpringkit-js");
const mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
const message = "deadbeef";
const wallet = Wallet.generateWalletFromMnemonic(mnemonic);
const signature = wallet.sign(message);
wallet.verify(message, signature); // true
「XrpClient」はXRPレジャーへのゲートウェイです。 「XrpClient」は、リモートアダプターのURLである単一のパラメーターで初期化されます(上記の「サーバー側コンポーネント」セクションを参照)。
const { XrpClient } = require("xpring-js");
const remoteURL = "test.xrp.xpring.io:50051"; // Testnet URL, use main.xrp.xpring.io:50051 for Mainnet
const xrpClient = new XrpClient(remoteURL, true)
「XrpClient」は、レジャーのアカウントの残高を確認できます。
const { XrpClient } = require("xpring-js");
const remoteURL = "test.xrp.xpring.io:50051"; // Testnet URL, use main.xrp.xpring.io:50051 for Mainnet
const xrpClient = new XrpClient(remoteURL, true);
const address = "X7u4MQVhU2YxS4P9fWzQjnNuDRUkP3GM6kiVjTjcQgUU3Jr";
const balance = await xrpClient.getBalance(address);
console.log(balance); // Logs a balance in drops of XRP
「XrpClient」は、レジャー上の他のアカウント宛にXRPを送信できます。
const { Wallet, XrpClient } = require("xpring-js");
const remoteURL = "test.xrp.xpring.io:50051"; // Testnet URL, use main.xrp.xpring.io:50051 for Mainnet
const xrpClient = new XrpClient(remoteURL, true)
// Amount of XRP to send
const amount = BigInt("10")
// Destination address.
const destinationAddress = "X7u4MQVhU2YxS4P9fWzQjnNuDRUkP3GM6kiVjTjcQgUU3Jr";
// Wallet which will send XRP
const generationResult = Wallet.generateRandomWallet();
const senderWallet = generationResult.wallet;
const transactionHash = await xrpClient.send(amount, destinationAddress, senderWallet);
Utils オブジェクトはアドレス検証のための簡単な方法を提供します。
const { Utils } = require("xpring-js")
const rippleClassicAddress = "rnysDDrRXxz9z66DmCmfWpq4Z5s4TyUP3G"
const rippleXAddress = "X7jjQ4d6bz1qmjwxYUsw6gtxSyjYv5iWPqPEjGqqhn9Woti";
const bitcoinAddress = "1DiqLtKZZviDxccRpowkhVowsbLSNQWBE8";
Utils.isValidAddress(rippleClassicAddress); // returns true
Utils.isValidAddress(rippleXAddress); // returns true
Utils.isValidAddress(bitcoinAddress); // returns false
また、アドレスがX-Addressなのかクラシックアドレスなのかを検証することもできます。
const { Utils } = require("xpring-js")
const rippleClassicAddress = "rnysDDrRXxz9z66DmCmfWpq4Z5s4TyUP3G"
const rippleXAddress = "X7jjQ4d6bz1qmjwxYUsw6gtxSyjYv5iWPqPEjGqqhn9Woti";
const bitcoinAddress = "1DiqLtKZZviDxccRpowkhVowsbLSNQWBE8";
Utils.isValidXAddress(rippleClassicAddress); // returns false
Utils.isValidXAddress(rippleXAddress); // returns true
Utils.isValidXAddress(bitcoinAddress); // returns false
Utils.isValidClassicAddress(rippleClassicAddress); // returns true
Utils.isValidClassicAddress(rippleXAddress); // returns false
Utils.isValidClassicAddress(bitcoinAddress); // returns false
SDKを使用してX-Addressをエンコードおよびデコードできます。
const { Utils } = require("xpring-js")
const rippleClassicAddress = "rnysDDrRXxz9z66DmCmfWpq4Z5s4TyUP3G"
const tag = 12345;
// Encode an X-Address.
const xAddress = Utils.encodeXAddress(rippleClassicAddress, tag); // X7jjQ4d6bz1qmjwxYUsw6gtxSyjYv5xRB7JM3ht8XC4P45P
// Decode an X-Address.
const decodedClassicAddress = Utils.decodeXAddress(xAddress);
console.log(decodedClassicAddress.address); // rnysDDrRXxz9z66DmCmfWpq4Z5s4TyUP3G
console.log(decodedClassicAddress.tag); // 12345
プルリクエストは大歓迎です!このライブラリを構築し、プルリクエストをオープンにしていく際には、contributing.mdを参照してください。
このライブラリに貢献していただいているすべてのユーザーに感謝します!
Xpring SDKはMITライセンスの下で利用可能です。詳細については 、LICENSEファイルを参照してください。