@ledgerhq/hw-app-xrp
Version:
Ledger Hardware Wallet Ripple Application API
155 lines (107 loc) • 5.95 kB
Markdown
<img src="https://user-images.githubusercontent.com/4631227/191834116-59cf590e-25cc-4956-ae5c-812ea464f324.png" height="100" />
[](https://github.com/LedgerHQ/ledger-live/),
[](https://developers.ledger.com/discord-pro),
[](https://developers.ledger.com/)
Ledger Hardware Wallet XRP JavaScript bindings.
***
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.
***
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
* [Xrp](
* [Parameters](
* [Examples](
* [getAddress](
* [Parameters](
* [Examples](
* [signTransaction](
* [Parameters](
* [Examples](
* [getAppConfiguration](
* [Examples](
XRP API
* `transport` **Transport**&
* `scrambleKey` (optional, default `"XRP"`)
```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})`));
```
get XRP address for a given BIP 32 path.
* `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)
```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
sign a XRP transaction with a given BIP 32 path
The rawTxHex parameter is the serialized transaction blob represented as
hex.
* `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)
```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
get the version of the XRP app installed on the hardware device
```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