Ledger Hardware Wallet ETH JavaScript bindings.
- byContractAddress
- list
- Eth
- Parameters
- Examples
- getAddress
- provideERC20TokenInformation
- signTransaction
- getAppConfiguration
- signPersonalMessage
- signEIP712HashedMessage
- starkGetPublicKey
- starkSignOrder
- starkSignOrder_v2
- starkSignTransfer
- starkSignTransfer_v2
- starkProvideQuantum
- starkProvideQuantum_v2
- starkUnsafeSign
- eth2GetPublicKey
- eth2SetWithdrawalIndex
Retrieve the token information by a given contract address if any
contract
string
Returns TokenInfo?
list all the ERC20 tokens informations
Returns Array<TokenInfo>
Ethereum API
transport
Transport<any>scrambleKey
string (optional, default"w0w"
)
import Eth from "@ledgerhq/hw-app-eth";
const eth = new Eth(transport)
get Ethereum address for a given BIP 32 path.
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
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.
info
any : a blob from "erc20.js" utilities that contains all token information.info.data
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)
You can sign a transaction and retrieve v, r, s given the raw transaction and the BIP 32 path of the account to sign
eth.signTransaction("44'/60'/0'/0/0", "e8018504e3b292008252089428ee52a8f3d6e5d15f8b131996950d7f296c7952872bd72a2487400080").then(result => ...)
Returns Promise<{s: string, v: string, r: string}>
Returns Promise<{arbitraryDataEnabled: number, erc20ProvisioningNecessary: number, starkEnabled: number, starkv2Supported: number, version: string}>
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.
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}>
Sign a prepared message following web3.eth.signTypedData specification. The host computes the domain separator and hashStruct(message)
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}>
get Stark public key for a given BIP 32 path.
Returns Promise<Buffer> the Stark public key
sign a Stark order
path
string a path in BIP 32 formatsourceTokenAddress
string?sourceQuantization
BigNumber quantization used for the source tokendestinationTokenAddress
string?destinationQuantization
BigNumber quantization used for the destination tokensourceVault
number ID of the source vaultdestinationVault
number ID of the destination vaultamountSell
BigNumber amount to sellamountBuy
BigNumber amount to buynonce
number transaction noncetimestamp
number transaction validity timestamp
Returns Promise<Buffer> the signature
sign a Stark order using the Starkex V2 protocol
path
string a path in BIP 32 formatsourceTokenAddress
string?sourceQuantizationType
StarkQuantizationType quantization type used for the source tokensourceQuantization
BigNumber?sourceMintableBlobOrTokenId
BigNumber?destinationTokenAddress
string?destinationQuantizationType
StarkQuantizationType quantization type used for the destination tokendestinationQuantization
BigNumber?destinationMintableBlobOrTokenId
BigNumber?sourceVault
number ID of the source vaultdestinationVault
number ID of the destination vaultamountSell
BigNumber amount to sellamountBuy
BigNumber amount to buynonce
number transaction noncetimestamp
number transaction validity timestamp
Returns Promise<Buffer> the signature
sign a Stark transfer
path
string a path in BIP 32 formattransferTokenAddress
string?transferQuantization
BigNumber quantization used for the token to be transferredtargetPublicKey
string target Stark public keysourceVault
number ID of the source vaultdestinationVault
number ID of the destination vaultamountTransfer
BigNumber amount to transfernonce
number transaction noncetimestamp
number transaction validity timestamp
Returns Promise<Buffer> the signature
sign a Stark transfer or conditional transfer using the Starkex V2 protocol
path
string a path in BIP 32 formattransferTokenAddress
string?transferQuantizationType
StarkQuantizationType quantization type used for the token to be transferredtransferQuantization
BigNumber?transferMintableBlobOrTokenId
BigNumber?targetPublicKey
string target Stark public keysourceVault
number ID of the source vaultdestinationVault
number ID of the destination vaultamountTransfer
BigNumber amount to transfernonce
number transaction noncetimestamp
number transaction validity timestampconditionalTransferAddress
string?conditionalTransferFact
BigNumber?
Returns Promise<Buffer> the signature
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
operationContract
string? contract address of the token to be transferred (not present for ETH)operationQuantization
BigNumber quantization used for the token to be transferred
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
operationContract
string? contract address of the token to be transferred (not present for ETH)operationQuantizationType
StarkQuantizationType quantization type of the token to be transferredoperationQuantization
BigNumber?operationMintableBlobOrTokenId
BigNumber?
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.
Returns Promise<Buffer> the signature
get an Ethereum 2 BLS-12 381 public key for a given BIP 32 path.
eth.eth2GetPublicKey("12381/3600/0/0").then(o => o.publicKey)
Returns Promise<{publicKey: string}> an object with a publicKey
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
withdrawalIndex
number index path in the EIP 2334 path m/12381/3600/withdrawalIndex/0
Returns Promise<boolean> True if the method was executed successfully