@secux/app-sol
TypeScript icon, indicating that this package has built-in type declarations

3.0.11 • Public • Published

lerna view on npm npm module downloads

@secux/app-sol

SecuX Hardware Wallet SOL API

Usage

import { SecuxSOL } from "@secux/app-sol";

First, create instance of ITransport.


Examples

  1. 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"
          }
      );
  2. 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

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

Package Sidebar

Install

npm i @secux/app-sol

Weekly Downloads

5

Version

3.0.11

License

Apache-2.0

Unpacked Size

445 kB

Total Files

22

Last publish

Collaborators

  • rus7hex