Github,
API Doc,
Ledger Devs Slack
@ledgerhq/hw-app-eth
Ledger Hardware Wallet ETH JavaScript bindings.
API
Table of Contents
byContractAddress
Retrieve the token information by a given contract address if any
Parameters
Returns TokenInfo?
list
list all the ERC20 tokens informations
Returns Array<TokenInfo>
Eth
Ethereum API
Parameters
transport
Transport<any>scrambleKey
string (optional, default "w0w"
)
Examples
import Eth from "@ledgerhq/hw-app-eth";
const eth = new Eth(transport)
getAddress
get Ethereum address for a given BIP 32 path.
Parameters
Examples
eth.getAddress("44'/60'/0'/0/0").then(o => o.address)
Returns Promise<{publicKey: string, address: string, chainCode: string?}> an object with a publicKey, address and (optionally) chainCode
provideERC20TokenInformation
This commands provides a trusted description of an ERC 20 token
to associate a contract address with a ticker and number of decimals.
It shall be run immediately before performing a transaction involving a contract
calling this contract address to display the proper token information to the user if necessary.
Parameters
info
any : a blob from "erc20.js" utilities that contains all token information.
Examples
import { byContractAddress } from "@ledgerhq/hw-app-eth/erc20"
const zrxInfo = byContractAddress("0xe41d2489571d322189246dafa5ebde1f4699f498")
if (zrxInfo) await appEth.provideERC20TokenInformation(zrxInfo)
const signed = await appEth.signTransaction(path, rawTxHex)
Returns Promise<boolean>
signTransaction
You can sign a transaction and retrieve v, r, s given the raw transaction and the BIP 32 path of the account to sign
Parameters
Examples
eth.signTransaction("44'/60'/0'/0/0", "e8018504e3b292008252089428ee52a8f3d6e5d15f8b131996950d7f296c7952872bd72a2487400080").then(result => ...)
Returns Promise<{s: string, v: string, r: string}>
getAppConfiguration
Returns Promise<{arbitraryDataEnabled: number, version: string}>
signPersonalMessage
You can sign a message according to eth_sign RPC call and retrieve v, r, s given the message and the BIP 32 path of the account to sign.
Parameters
Examples
eth.signPersonalMessage("44'/60'/0'/0/0", Buffer.from("test").toString("hex")).then(result => {
var v = result['v'] - 27;
v = v.toString(16);
if (v.length < 2) {
v = "0" + v;
}
console.log("Signature 0x" + result['r'] + result['s'] + v);
})
Returns Promise<{v: number, s: string, r: string}>