@secux/app-sol v3.1.3
@secux/app-sol
SecuX Hardware Wallet SOL API
Usage
import { SecuxSOL } from "@secux/app-sol";First, create instance of ITransport.
Examples
Get address of bip-32 path.
main account
const path = "m/44'/501'/0'"; const address = await device.getAddress(path); /* // transfer data to hardware wallet by custom transport layer. const data = SecuxBTC.prepareAddress(path); const response = await device.Exchange(data); const address = SecuxBTC.resolveAddress(response, path); */associated account
const address = await device.getAddress( "m/44'/501'/0'", // USDC { mintAccount: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } );- account with seed
const address = await device.getAddress( "m/44'/501'/0'", { seed: "seed", programId: "Stake11111111111111111111111111111111111111" } );
Sign transaction.
transfer asset
const { raw_tx } = await device.sign( "<recentBlockhash>", instructions: [ { type: "transfer", params: { to: "<reciever account>", lamports: 1e9, path: "m/44'/501'/0'" } } ] ); /* // transfer data to hardware wallet by custom transport layer. const { commandData, serialized } = SecuxSOL.prepareSign( "<recentBlockhash>", instructions: [ { type: "transfer", params: { from: "<sender's account>", to: "<reciever's account>", lamports: 1e9, path: "m/44'/501'/0'" } } ] ); const response = await device.Exchange(commandData); const raw_tx = SecuxSOL.resloveTransaction(response, serialized); */transfer SPL token
const { raw_tx } = await device.sign( "<recentBlockhash>", instructions: SecuxSOL.Action.transferToken( { to: "<reciever's account>", owner: "<sender's account>", amount: 1e6, mint: "<token mint account>", decimal: 6, path: "m/44'/501'/0'", // create ATA for reciever createAccount: true } ) );native staking
const { raw_tx } = await device.sign( "<recentBlockhash>", instructions: SecuxSOL.Action.stake( { owner: "<main account>", stake: "<stake account>", vote: "<vote account>", lamports: 1e9, path: "m/44'/501'/0'", // if give a seed, the createWithSeed instruction will be included. // stake: "<arbitrary string>" } ) );unstake
const { raw_tx } = await device.sign( "<recentBlockhash>", instructions: SecuxSOL.Action.unstake( { owner: "<main account>", stake: "<stake account or seed>", lamports: <withdraw amount>, path: "m/44'/501'/0'" } ) );
API Reference
SOL package for SecuX device
Kind: global class
- SecuxSOL
- .addressConvert(publickey, [option]) ⇒ string
- .prepareAddress(path) ⇒ communicationData
- .resolveAddress(response, [option]) ⇒ string
- .preparePublickey(path) ⇒ communicationData
- .resolvePublickey(response) ⇒ string
- .prepareSign(feePayer, content) ⇒ prepared
- .resolveSignatureList(response) ⇒ Array.<string>
- .resolveTransaction(response, serialized) ⇒ string
SecuxSOL.addressConvert(publickey, option) ⇒ string
Convert ed25519 publickey to SOL address.
Returns: string - address
| Param | Type | Description |
|---|---|---|
| publickey | string | Buffer | ed25519 publickey |
| option | ATAOption | SeedOption |
SecuxSOL.prepareAddress(path) ⇒ communicationData
Prepare data for SOL address.
Returns: communicationData - data for sending to device
| Param | Type | Description |
|---|---|---|
| path | string | BIP32 path (hardened child key), ex: m/44'/501'/0'/0' |
SecuxSOL.resolveAddress(response, option) ⇒ string
Generate SOL address from response data.
Returns: string - SOL address
| Param | Type | Description |
|---|---|---|
| response | communicationData | data from device |
| option | ATAOption | SeedOption |
SecuxSOL.preparePublickey(path) ⇒ communicationData
Prepare data for ed25519 publickey.
Returns: communicationData - data for sending to device
| Param | Type | Description |
|---|---|---|
| path | string | BIP32 path (hardened child key), ex: m/44'/501'/0'/0' |
SecuxSOL.resolvePublickey(response) ⇒ string
Resove ed25519 publickey from response data.
Returns: string - ed25519 publickey (hex string)
| Param | Type | Description |
|---|---|---|
| response | communicationData | data from device |
SecuxSOL.prepareSign(feePayer, content) ⇒ prepared
Prepare data for signing.
Returns: prepared - prepared object
| Param | Type | Description |
|---|---|---|
| feePayer | string | solana account |
| content | txDetail | transaction object |
SecuxSOL.resolveSignatureList(response) ⇒ Array.<string>
Reslove signatures from response data.
Returns: Array.<string> - signature array (base58 encoded)
| Param | Type | Description |
|---|---|---|
| response | communicationData | data from device |
SecuxSOL.resolveTransaction(response, serialized) ⇒ string
Resolve transaction for broadcasting.
Returns: string - signed transaction (hex)
| Param | Type | Description |
|---|---|---|
| response | communicationData | data from device |
| serialized | communicationData |
ATAOption : object
Properties
| Name | Type | Description |
|---|---|---|
| mintAccount | string | token mint address |
SeedOption : object
Properties
| Name | Type | Description |
|---|---|---|
| seed | string | arbitary string (UTF-8) |
| programId | string | program address |
accounts : object
Properties
| Name | Type | Description |
|---|---|---|
| publickey | string | Buffer | Ed25519 publickey |
| isSigner | boolean | |
| isWritable | boolean | |
| path | string | the path for signing |
Instruction : object
Properties
| Name | Type | Description |
|---|---|---|
| programId | string | program address |
| accounts | accounts | |
| data | string | Buffer | hex string or buffer |
BuiltinInstruction : object
Properties
| Name | Type | Description |
|---|---|---|
| type | string | instruction type |
| params | any | parameters |
txDetail : object
Properties
| Name | Type | Description |
|---|---|---|
| recentBlockhash | string | a recent blockhash |
| instructions | Array.<(Instruction|BuiltinInstruction)> | a least one instruction in a transaction |
| feepayerPath | string | option for signing via SecuX wallet |
prepared : object
Properties
| Name | Type | Description |
|---|---|---|
| commandData | communicationData | data for sending to device |
| rawTx | string | unsigned raw transaction |
© 2018-22 SecuX Technology Inc.
authors: andersonwu@secuxtech.com