@ledgerhq/hw-app-vap
Ledger Hardware Wallet VAP JavaScript bindings.
API
Table of Contents
- byContractAddress
- list
- Vap
byContractAddress
Retrieve the token information by a given contract address if any
Parameters
-
contract
string
Returns TokenInfo?
list
list all the ERC20 tokens informations
Returns Array<TokenInfo>
Vap
Vapory API
Parameters
-
transport
Transport<any> -
scrambleKey
string (optional, default"w0w"
)
Examples
import Vap from "@ledgerhq/hw-app-vap";
const vap = new Vap(transport)
getAddress
get Vapory address for a given BIP 32 path.
Parameters
Examples
vap.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 { byContractAddress } from "@ledgerhq/hw-app-vap/erc20"
const zrxInfo = byContractAddress("0xe41d2489571d322189246dafa5ebde1f4699f498")
if (zrxInfo) await appVap.provideERC20TokenInformation(zrxInfo)
const signed = await appVap.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
vap.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, version: string}>
signPersonalMessage
You can sign a message according to vap_sign RPC call and retrieve v, r, s given the message and the BIP 32 path of the account to sign.
Parameters
Examples
vap.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.vap.signTypedData specification. The host computes the domain separator and hashStruct(message)
Parameters
Examples
vap.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? -
sourceQuantization
BigNumber quantization used for the source token -
destinationTokenAddress
string? -
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> the signature
starkSignTransfer
sign a Stark transfer
Parameters
-
path
string a path in BIP 32 format -
transferTokenAddress
string? -
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> 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? contract address of the token to be transferred (not present for VAP) -
operationQuantization
BigNumber quantization used for the token to be transferred