Newly Purchased Memories

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

    3.0.0 • 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

    Install

    npm i @secux/app-sol

    DownloadsWeekly Downloads

    2

    Version

    3.0.0

    License

    MIT

    Unpacked Size

    55.4 kB

    Total Files

    18

    Last publish

    Collaborators

    • rus7hex
    • joshuachen