Skip to content

Latest commit

 

History

History
140 lines (99 loc) · 5.32 KB

File metadata and controls

140 lines (99 loc) · 5.32 KB

Github, Ledger Devs Slack

@ledgerhq/hw-app-xrp

Ledger Hardware Wallet XRP JavaScript bindings.

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
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"
}

Returns Promise<{version: string}> an object with a version