@claymore365123/hw-app-eth v5.53.0
@ledgerhq/hw-app-eth
Ledger Hardware Wallet ETH JavaScript bindings.
API
Table of Contents
- getInfosForContractMethod
- byContractAddress
- list
- Eth
- Parameters
- Examples
- getAddress
- provideERC20TokenInformation
- signTransaction
- getAppConfiguration
- signPersonalMessage
- signEIP712HashedMessage
- starkGetPublicKey
- starkSignOrder
- starkSignOrder_v2
- starkSignTransfer
- starkSignTransfer_v2
- starkProvideQuantum
- starkProvideQuantum_v2
- starkUnsafeSign
- eth2GetPublicKey
- eth2SetWithdrawalIndex
- setExternalPlugin
getInfosForContractMethod
Retrieve the metadatas a given contract address and a method selector
Parameters
contractAddressselector
byContractAddress
Retrieve the token information by a given contract address if any
Parameters
contractstring
Returns TokenInfo?
list
list all the ERC20 tokens informations
Returns Array<TokenInfo>
Eth
Ethereum API
Parameters
transportTransport<any>scrambleKeystring (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
infoany : a blob from "erc20.js" utilities that contains all token information.info.data
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)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
pathstring a path in BIP 32 formatsourceTokenAddressstring?sourceQuantizationBigNumber quantization used for the source tokendestinationTokenAddressstring?destinationQuantizationBigNumber quantization used for the destination tokensourceVaultnumber ID of the source vaultdestinationVaultnumber ID of the destination vaultamountSellBigNumber amount to sellamountBuyBigNumber amount to buynoncenumber transaction noncetimestampnumber transaction validity timestamp
Returns Promise<Buffer> the signature
starkSignOrder_v2
sign a Stark order using the Starkex V2 protocol
Parameters
pathstring a path in BIP 32 formatsourceTokenAddressstring?sourceQuantizationTypeStarkQuantizationType quantization type used for the source tokensourceQuantizationBigNumber?sourceMintableBlobOrTokenIdBigNumber?destinationTokenAddressstring?destinationQuantizationTypeStarkQuantizationType quantization type used for the destination tokendestinationQuantizationBigNumber?destinationMintableBlobOrTokenIdBigNumber?sourceVaultnumber ID of the source vaultdestinationVaultnumber ID of the destination vaultamountSellBigNumber amount to sellamountBuyBigNumber amount to buynoncenumber transaction noncetimestampnumber transaction validity timestamp
Returns Promise<Buffer> the signature
starkSignTransfer
sign a Stark transfer
Parameters
pathstring a path in BIP 32 formattransferTokenAddressstring?transferQuantizationBigNumber quantization used for the token to be transferredtargetPublicKeystring target Stark public keysourceVaultnumber ID of the source vaultdestinationVaultnumber ID of the destination vaultamountTransferBigNumber amount to transfernoncenumber transaction noncetimestampnumber transaction validity timestamp
Returns Promise<Buffer> the signature
starkSignTransfer_v2
sign a Stark transfer or conditional transfer using the Starkex V2 protocol
Parameters
pathstring a path in BIP 32 formattransferTokenAddressstring?transferQuantizationTypeStarkQuantizationType quantization type used for the token to be transferredtransferQuantizationBigNumber?transferMintableBlobOrTokenIdBigNumber?targetPublicKeystring target Stark public keysourceVaultnumber ID of the source vaultdestinationVaultnumber ID of the destination vaultamountTransferBigNumber amount to transfernoncenumber transaction noncetimestampnumber transaction validity timestampconditionalTransferAddressstring?conditionalTransferFactBigNumber?
Returns Promise<Buffer> 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
operationContractstring? contract address of the token to be transferred (not present for ETH)operationQuantizationBigNumber quantization used for the token to be transferred
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
operationContractstring? contract address of the token to be transferred (not present for ETH)operationQuantizationTypeStarkQuantizationType quantization type of the token to be transferredoperationQuantizationBigNumber?operationMintableBlobOrTokenIdBigNumber?
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
Returns Promise<Buffer> 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
withdrawalIndexnumber 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
pluginNamestring string containing the name of the plugin, must have length between 1 and 30 bytescontractAddressstringselectorstring
Returns Promise<boolean> True if the method was executed successfully
3 years ago