GitHub, Ledger Devs Discord, Developer Portal
@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 and
- Go on Discord to chat with developer support and the developer community.
API
Table of Contents
Xrp
XRP API
Parameters
-
transport
Transport -
scrambleKey
(optional, default"XRP"
)
Examples
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 a path in BIP 32 format -
display
boolean? optionally enable or not the display -
chainCode
boolean? optionally enable or not the chainCode request -
ed25519
boolean? optionally enable or not the ed25519 curve (secp256k1 is default)
Examples
const result = await xrp.getAddress("44'/144'/0'/0/0");
const { publicKey, address } = result;
Returns Promise<{publicKey: string, address: string, chainCode: 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 a path in BIP 32 format -
rawTxHex
string a raw hex string representing a serialized transaction blob. This parameter can be encoded using ripple-binary-codec. See https://xrpl.org/serialization.html for more documentation on the serialization format. -
ed25519
boolean? optionally enable or not the ed25519 curve (secp256k1 is default)
Examples
const signature = await xrp.signTransaction("44'/144'/0'/0/0", "12000022800000002400000002614000000001315D3468400000000000000C73210324E5F600B52BB3D9246D49C4AB1722BA7F32B7A3E4F9F2B8A1A28B9118CC36C48114F31B152151B6F42C1D61FE4139D34B424C8647D183142ECFC1831F6E979C6DA907E88B1CAD602DB59E2F");
Returns Promise<string> a signature as hex string
getAppConfiguration
get the version of the XRP app installed on the hardware device
Examples
const result = await xrp.getAppConfiguration();
{
"version": "1.0.3"
}