@secux/app-eth
SecuX Hardware Wallet ETH API
Usage
import { SecuxETH } from "@secux/app-eth";
First, create instance of ITransport
Examples
- Get address derived by given BIP44 path
const address = await SecuxETH.getAddress(device, "m/44'/60'/0'/0/0");
- Sign legacy transaction (EIP-155)
const { raw_tx, signature } = await SecuxETH.signTransaction(
device,
"m/44'/60'/0'/0/0",
{
nonce: 0,
to: "0xD080156885651fADbD6df14145051b934660a748",
value: 1e10,
chainId: 1,
gasPrice: 1e6,
gasLimit: 25000
}
);
- Sign EIP-1559 transaction
const { raw_tx, signature } = await SecuxETH.signTransaction(
device,
"m/44'/60'/0'/0/0",
{
nonce: 0,
to: "0xD080156885651fADbD6df14145051b934660a748",
value: 1e10,
chainId: 1,
maxPriorityFeePerGas: 1e4,
maxFeePerGas: 1e6,
gasLimit: 25000
}
);
- Sign transaction with Smart Contract (ERC-20)
const { raw_tx, signature } = await SecuxETH.signTransaction(
device,
"m/44'/60'/0'/0/0",
{
nonce: 0,
to: "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
value: 0,
data: "0xa9059cbb000000000000000000000000d080156885651fadbd6df14145051b934660a7410000000000000000000000000000000000000000000000000000000000989680",
chainId: 1,
gasPrice: 1e6,
gasLimit: 25000
}
);
const { raw_tx, signature } = await SecuxETH.ERC20.transfer(
device,
"m/44'/60'/0'/0/0",
{
nonce: 0,
to: "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
value: 0,
chainId: 1,
gasPrice: 1e6,
gasLimit: 25000
},
{
toAddress: "0xD080156885651fADbD6df14145051b934660a748",
amount: `0x${1e18.toString(16)}`
}
);
- Sign Message transaction
const { raw_tx, signature } = await SecuxETH.signMessage(device, "m/44'/60'/0'/0/0", msg);
- Sign TypeData transaction (EIP-712)
const { raw_tx, signature } = await SecuxETH.signTypedData(device, "m/44'/60'/0'/0/0", msg);
- Sign transaction with WalletConnect
const { raw_tx, signature } = await SecuxETH.signWalletConnectTransaction(
device,
"m/44'/60'/0'/0/0",
{
nonce: 0,
to: "0xD080156885651fADbD6df14145051b934660a748",
value: 0,
data: "0x7ff36ab5000000000000000000000000000000000000000000000000302bf3f82d406d120000000000000000000000000000000000000000000000000000000000000080000000000000000000000000d080156885651fadbd6df14145051b934660a7480000000000000000000000000000000000000000000000000000000060b613630000000000000000000000000000000000000000000000000000000000000003000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c0000000000000000000000007130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c000000000000000000000000e9e7cea3dedca5984780bafc599bd69add087d56",
chainId: 56,
gasPrice: 1e6,
gasLimit: 25000
}
);
Note
- Value of chainId (same as EIP-155):
- Ethereum Mainnet: 1
- Binance Smart Chain Mainnet: 56
- Polygon Network: 137
- goto https://chainlist.org/ for your specific chain
API doc
SecuxETH
ETH package for SecuX device
Kind: global class
- SecuxETH
- SecuxETH.getAddress(trans, path) ⇒
string
- SecuxETH.signTransaction(trans, path, content) ⇒
object
- SecuxETH.signMessage(trans, path, message, [chainId]) ⇒
object
- SecuxETH.signTypedData(trans, path, data, [chainId]) ⇒
object
- SecuxETH.signWalletConnectTransaction(trans, path, content) ⇒
object
SecuxETH.getAddress(trans, path) ⇒ string
Get EIP55 address derived by given BIP32 path
Kind: static method of SecuxETH
Returns: string
- EIP55 address
Param | Type | Description |
---|
trans | ITransport | |
path | string | BIP32 |
SecuxETH.signTransaction(trans, path, content) ⇒ object
Create transaction and Sign
Kind: static method of SecuxETH
Returns: object
- signed
string
- signed.raw_tx
Buffer
- signed.signature
Param | Type | Description |
---|
trans | ITransport | |
path | string | BIP32 |
content | txDetail | transaction content |
SecuxETH.signMessage(trans, path, message, [chainId]) ⇒ object
Create message type transaction and Sign
Kind: static method of SecuxETH
Returns: object
- signed
string
- signed.raw_tx
Buffer
- signed.signature
Param | Type | Description |
---|
trans | ITransport | |
path | string | BIP32 |
message | string | |
[chainId] | number | if give a chainId, the signature of output will be EIP-155 applied |
SecuxETH.signTypedData(trans, path, data, [chainId]) ⇒ object
Create EIP712 transaction and Sign
Kind: static method of SecuxETH
Returns: object
- signed
string
- signed.raw_tx
Buffer
- signed.signature
Param | Type | Description |
---|
trans | ITransport | |
path | string | BIP32 |
data | TypedData | EIP712 |
[chainId] | number | if give a chainId, the signature of output will be EIP-155 applied |
SecuxETH.signWalletConnectTransaction(trans, path, content) ⇒ object
Create transaction and Sign using WalletConnect protocol
Kind: static method of SecuxETH
Returns: object
- signed
string
- signed.raw_tx
Buffer
- signed.signature
Param | Type | Description |
---|
trans | ITransport | |
path | string | BIP32 |
content | txDetail | transaction content |