UNPKG

@ledgerhq/hw-app-xrp

Version:
155 lines (107 loc) 5.95 kB
<img src="https://user-images.githubusercontent.com/4631227/191834116-59cf590e-25cc-4956-ae5c-812ea464f324.png" height="100" /> [GitHub](https://github.com/LedgerHQ/ledger-live/), [Ledger Devs Discord](https://developers.ledger.com/discord-pro), [Developer Portal](https://developers.ledger.com/) ## @ledgerhq/hw-app-xrp Ledger Hardware Wallet XRP JavaScript bindings. *** ## Are you adding Ledger support to your software wallet? You may be using this package to communicate with the XRP Nano App. For a smooth and quick integration: * See the developers’ documentation on the [Developer Portal](https://developers.ledger.com/docs/transport/overview/) and * Go on [Discord](https://developers.ledger.com/discord-pro/) to chat with developer support and the developer community. *** ## API <!-- Generated by documentation.js. Update this documentation by updating the source code. --> #### Table of Contents * [Xrp](#xrp) * [Parameters](#parameters) * [Examples](#examples) * [getAddress](#getaddress) * [Parameters](#parameters-1) * [Examples](#examples-1) * [signTransaction](#signtransaction) * [Parameters](#parameters-2) * [Examples](#examples-2) * [getAppConfiguration](#getappconfiguration) * [Examples](#examples-3) ### Xrp XRP API #### Parameters * `transport` **Transport**&#x20; * `scrambleKey` (optional, default `"XRP"`) #### Examples ```javascript import Transport from "@ledgerhq/hw-transport-node-hid"; // import Transport from "@ledgerhq/hw-transport-u2f"; // for browser import Xrp from "@ledgerhq/hw-app-xrp"; import { encode } from 'ripple-binary-codec'; function establishConnection() { return Transport.create() .then(transport => new Xrp(transport)); } function fetchAddress(xrp) { return xrp.getAddress("44'/144'/0'/0/0"); } function signTransaction(xrp, deviceData, seqNo) { let transactionJSON = { TransactionType: "Payment", Account: deviceData.address, Destination: "rTooLkitCksh5mQa67eaa2JaWHDBnHkpy", Amount: "1000000", Fee: "15", Flags: 2147483648, Sequence: seqNo, SigningPubKey: deviceData.publicKey.toUpperCase() }; const transactionBlob = encode(transactionJSON); console.log('Sending transaction to device for approval...'); return xrp.signTransaction("44'/144'/0'/0/0", transactionBlob); } function prepareAndSign(xrp, seqNo) { return fetchAddress(xrp) .then(deviceData => signTransaction(xrp, deviceData, seqNo)); } establishConnection() .then(xrp => prepareAndSign(xrp, 123)) .then(signature => console.log(`Signature: ${signature}`)) .catch(e => console.log(`An error occurred (${e.message})`)); ``` #### getAddress get XRP address for a given BIP 32 path. ##### Parameters * `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a path in BIP 32 format * `display` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** optionally enable or not the display * `chainCode` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** optionally enable or not the chainCode request * `ed25519` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** optionally enable or not the ed25519 curve (secp256k1 is default) ##### Examples ```javascript const result = await xrp.getAddress("44'/144'/0'/0/0"); const { publicKey, address } = result; ``` Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<{publicKey: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), address: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), chainCode: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?}>** an object with a publicKey, address and (optionally) chainCode #### signTransaction sign a XRP transaction with a given BIP 32 path The rawTxHex parameter is the serialized transaction blob represented as hex. ##### Parameters * `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a path in BIP 32 format * `rawTxHex` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** a raw hex string representing a serialized transaction blob. This parameter can be encoded using [ripple-binary-codec](https://www.npmjs.com/package/ripple-binary-codec). See <https://xrpl.org/serialization.html> for more documentation on the serialization format. * `ed25519` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** optionally enable or not the ed25519 curve (secp256k1 is default) ##### Examples ```javascript const signature = await xrp.signTransaction("44'/144'/0'/0/0", "12000022800000002400000002614000000001315D3468400000000000000C73210324E5F600B52BB3D9246D49C4AB1722BA7F32B7A3E4F9F2B8A1A28B9118CC36C48114F31B152151B6F42C1D61FE4139D34B424C8647D183142ECFC1831F6E979C6DA907E88B1CAD602DB59E2F"); ``` Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** a signature as hex string #### getAppConfiguration get the version of the XRP app installed on the hardware device ##### Examples ```javascript const result = await xrp.getAppConfiguration(); { "version": "1.0.3" } ``` Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<{version: [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)}>** an object with a version