@ledgerhq/hw-app-eth
    TypeScript icon, indicating that this package has built-in type declarations

    6.7.0 • Public • Published

    Github, Ledger Devs Slack

    @ledgerhq/hw-app-eth

    Ledger Hardware Wallet ETH JavaScript bindings.

    API

    Table of Contents

    loadInfosForContractMethod

    Retrieve the metadatas a given contract address and a method selector

    Parameters

    • contractAddress string
    • selector string
    • chainId number
    • userPluginsLoadConfig PluginsLoadConfig

    Returns Promise<(ContractMethod | undefined)>

    byContractAddressAndChainId

    Retrieve the token information by a given contract address if any

    Parameters

    Returns (TokenInfo | null | undefined)

    list

    list all the ERC20 tokens informations

    Returns Array<TokenInfo>

    Eth

    Ethereum API

    Parameters

    • transport Transport
    • scrambleKey (optional, default "w0w")
    • pluginsLoadConfig PluginsLoadConfig (optional, default {})

    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.
      • info.data
    Examples
    import { byContractAddressAndChainId } from "@ledgerhq/hw-app-eth/erc20"
    const zrxInfo = byContractAddressAndChainId("0xe41d2489571d322189246dafa5ebde1f4699f498", chainId)
    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, erc20ProvisioningNecessary: number, starkEnabled: number, starkv2Supported: 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}>

    signEIP712HashedMessage

    Sign a prepared message following web3.eth.signTypedData specification. The host computes the domain separator and hashStruct(message)

    Parameters
    Examples
    eth.signEIP712HashedMessage("44'/60'/0'/0/0", Buffer.from("0101010101010101010101010101010101010101010101010101010101010101").toString("hex"), Buffer.from("0202020202020202020202020202020202020202020202020202020202020202").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}>

    starkGetPublicKey

    get Stark public key for a given BIP 32 path.

    Parameters

    Returns Promise<Buffer> the Stark public key

    starkSignOrder

    sign a Stark order

    Parameters
    • path string a path in BIP 32 format
    • sourceTokenAddress (string | undefined)
    • sourceQuantization BigNumber quantization used for the source token
    • destinationTokenAddress (string | undefined)
    • destinationQuantization BigNumber quantization used for the destination token
    • sourceVault number ID of the source vault
    • destinationVault number ID of the destination vault
    • amountSell BigNumber amount to sell
    • amountBuy BigNumber amount to buy
    • nonce number transaction nonce
    • timestamp number transaction validity timestamp

    Returns Promise<(Buffer | {r: string, s: string})> the signature

    starkSignOrder_v2

    sign a Stark order using the Starkex V2 protocol

    Parameters
    • path string a path in BIP 32 format
    • sourceTokenAddress (string | undefined)
    • sourceQuantizationType StarkQuantizationType quantization type used for the source token
    • sourceQuantization (BigNumber | undefined)
    • sourceMintableBlobOrTokenId (BigNumber | undefined)
    • destinationTokenAddress (string | undefined)
    • destinationQuantizationType StarkQuantizationType quantization type used for the destination token
    • destinationQuantization (BigNumber | undefined)
    • destinationMintableBlobOrTokenId (BigNumber | undefined)
    • sourceVault number ID of the source vault
    • destinationVault number ID of the destination vault
    • amountSell BigNumber amount to sell
    • amountBuy BigNumber amount to buy
    • nonce number transaction nonce
    • timestamp number transaction validity timestamp

    Returns Promise<(Buffer | {r: string, s: string})> the signature

    starkSignTransfer

    sign a Stark transfer

    Parameters
    • path string a path in BIP 32 format
    • transferTokenAddress (string | undefined)
    • transferQuantization BigNumber quantization used for the token to be transferred
    • targetPublicKey string target Stark public key
    • sourceVault number ID of the source vault
    • destinationVault number ID of the destination vault
    • amountTransfer BigNumber amount to transfer
    • nonce number transaction nonce
    • timestamp number transaction validity timestamp

    Returns Promise<(Buffer | {r: string, s: string})> the signature

    starkSignTransfer_v2

    sign a Stark transfer or conditional transfer using the Starkex V2 protocol

    Parameters
    • path string a path in BIP 32 format
    • transferTokenAddress (string | undefined)
    • transferQuantizationType StarkQuantizationType quantization type used for the token to be transferred
    • transferQuantization (BigNumber | undefined)
    • transferMintableBlobOrTokenId (BigNumber | undefined)
    • targetPublicKey string target Stark public key
    • sourceVault number ID of the source vault
    • destinationVault number ID of the destination vault
    • amountTransfer BigNumber amount to transfer
    • nonce number transaction nonce
    • timestamp number transaction validity timestamp
    • conditionalTransferAddress string?
    • conditionalTransferFact BigNumber?

    Returns Promise<(Buffer | {r: string, s: string})> the signature

    starkProvideQuantum

    provide quantization information before singing a deposit or withdrawal Stark powered contract call

    It shall be run following a provideERC20TokenInformation call for the given contract

    Parameters
    • operationContract (string | undefined) contract address of the token to be transferred (not present for ETH)
    • operationQuantization BigNumber quantization used for the token to be transferred

    Returns Promise<boolean>

    starkProvideQuantum_v2

    provide quantization information before singing a deposit or withdrawal Stark powered contract call using the Starkex V2 protocol

    It shall be run following a provideERC20TokenInformation call for the given contract

    Parameters
    • operationContract (string | undefined) contract address of the token to be transferred (not present for ETH)
    • operationQuantizationType StarkQuantizationType quantization type of the token to be transferred
    • operationQuantization BigNumber?
    • operationMintableBlobOrTokenId BigNumber?

    Returns Promise<boolean>

    starkUnsafeSign

    sign the given hash over the Stark curve It is intended for speed of execution in case an unknown Stark model is pushed and should be avoided as much as possible.

    Parameters
    • path string a path in BIP 32 format
    • hash string hexadecimal hash to sign

    Returns Promise<(Buffer | {r: string, s: string})> the signature

    eth2GetPublicKey

    get an Ethereum 2 BLS-12 381 public key for a given BIP 32 path.

    Parameters
    Examples
    eth.eth2GetPublicKey("12381/3600/0/0").then(o => o.publicKey)

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

    eth2SetWithdrawalIndex

    Set the index of a Withdrawal key used as withdrawal credentials in an ETH 2 deposit contract call signature

    It shall be run before the ETH 2 deposit transaction is signed. If not called, the index is set to 0

    Parameters
    • withdrawalIndex number index path in the EIP 2334 path m/12381/3600/withdrawalIndex/0

    Returns Promise<boolean> True if the method was executed successfully

    setExternalPlugin

    Set the name of the plugin that should be used to parse the next transaction

    Parameters
    • pluginName string string containing the name of the plugin, must have length between 1 and 30 bytes
    • contractAddress string
    • selector string

    Returns Promise<boolean> True if the method was executed successfully

    Install

    npm i @ledgerhq/hw-app-eth

    DownloadsWeekly Downloads

    23,024

    Version

    6.7.0

    License

    Apache-2.0

    Unpacked Size

    402 kB

    Total Files

    43

    Last publish

    Collaborators

    • haammar-ledger
    • achabrolin-ledger
    • mortalkastor
    • gre
    • btchip
    • meriadec
    • flocks
    • amougel
    • juan-cortes
    • val_pinkman
    • iammorrow
    • phenry-ledger
    • jdecussy-ledger
    • lfbarreto
    • junsugiura
    • hzheng_ledger
    • machard-ledger
    • glethuillier_ledger