JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q36592F
  • License Apache-2.0

SecuX Hardware Wallet ADA API

Package Exports

  • @secux/app-ada
  • @secux/app-ada/lib/app-ada.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@secux/app-ada) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

lerna view on npm npm module downloads

@secux/app-ada

SecuX Hardware Wallet ADA API

Usage

import { SecuxADA, AddressType } from "@secux/app-ada";

First, create instance of ITransport


Examples

  1. Get shelley address

    • base address
    const path = "m/1852'/1815'/0'";
    const address = await device.getAddress(path, AddressType.BASE);
    
    /*
    
    // transfer data to hardware wallet by custom transport layer
    const data = SecuxADA.prepareAddress(path);
    const response = await device.Exchange(data);
    const address = SecuxADA.resolveAddress(response, AddressType.BASE);
    
    */
    • reward address
    const path = "m/1852'/1815'/0'";
    const address = await device.getAddress(path, AddressType.REWARD);
  2. Sign transaction

    • transfer asset
    const inputs = [
        {
            path: "m/1852'/1815'/0'",
            txId: "75c7d745c5212a11a0bfc2719c35bcc2f57fda88d7afb2eb3c5f2b02c3e99ccb",
            index: 1,
            amount: 12663894,
            // for custom transport layer, each utxo needs xpublickey.
            // xpublickey: "c232950d7c27b78542795ce4cad053e8dfaab7679ba5477563be5c60c1a4d0613fc81fd9bb8f30822c1252c29cc6af147831da44fb86acad6c04fcc95700b92b"
        },
        {
            path: "m/1852'/1815'/0'",
            txId: "6552b8f8b8b282542b07d6187fe80daa5b7a60461c97231f45c06fd97f8a3385",
            index: 1,
            amount: 2330624,
            // for custom transport layer, each utxo needs xpublickey.
            // xpublickey: "c232950d7c27b78542795ce4cad053e8dfaab7679ba5477563be5c60c1a4d0613fc81fd9bb8f30822c1252c29cc6af147831da44fb86acad6c04fcc95700b92b"
        },
    ];
    
    const output = {
        // daedalus or shelley address is accepted.
        address: "DdzFFzCqrhsjZHKn8Y9Txr4B9PaEtYcYp8TGa4gQTfJfjvuNLqvB8hPG35WRgK4FjcSYhgK7b2H24jLMeqmPoS3YhJq6bjStsx4BZVnn",
        amount: 13000000
    };
    
    const { raw_tx } = await device.sign(inputs, output, {
        changeAddress: "addr1qyk54vyyc856ngxermdzqhxnlk376ykkupru8rxcyryvg4kxs4un3x4r4rq422kwrtvc8p2a20dzhyr5v0n9lhwy2u6sfjujuz",
    });
    
    /*
    
    // transfer data to hardware wallet by custom transport layer.
    const { commandData, serialized } = SecuxADA.prepareSign(inputs, output, {
        changeAddress: "addr1qyk54vyyc856ngxermdzqhxnlk376ykkupru8rxcyryvg4kxs4un3x4r4rq422kwrtvc8p2a20dzhyr5v0n9lhwy2u6sfjujuz",
    });
    const response = await device.Exchange(commandData);
    const raw_tx = SecuxADA.resloveTransaction(response, serialized);
    
    */
    • stake
    const input = {
        path: "m/1852'/1815'/0'",
        utxo: [
            {
                txId: "75c7d745c5212a11a0bfc2719c35bcc2f57fda88d7afb2eb3c5f2b02c3e99ccb",
                index: 1,
                amount: 12663894,
            }
        ],
        changeAddress: "addr1qyk54vyyc856ngxermdzqhxnlk376ykkupru8rxcyryvg4kxs4un3x4r4rq422kwrtvc8p2a20dzhyr5v0n9lhwy2u6sfjujuz",
        // for custom transport layer, each utxo needs xpublickey.
        // xpublickey: "c232950d7c27b78542795ce4cad053e8dfaab7679ba5477563be5c60c1a4d0613fc81fd9bb8f30822c1252c29cc6af147831da44fb86acad6c04fcc95700b92b"
    };
    
    // pool id (support bech32 encoded)
    const pool = "ea595c6f726db925b6832af51795fd8a46e700874c735d204f7c5841";
    
    const { raw_tx } = await device.sign(
        input,
        pool,
        {
            // An account needs to have a stake pool registration certificate 
            // before it can participate in stake delegation between stake pools.
            needRegistration: true
        }
    );
    
    /*
    
    // transfer data to hardware wallet by custom transport layer.
    const { commandData, serialized } = SecuxADA.prepareStake(
        input,
        pool,
        {
            needRegistration: true
        }
    );
    const response = await device.Exchange(commandData);
    const raw_tx = SecuxADA.resolveTransaction(response, serialized);
    
    */
    • withdrawal
    const withdrawAmount = 150000;
    const { raw_tx } = await device.sign(input, withdrawAmount);
    
    /*
    
    // transfer data to hardware wallet by custom transport layer.
    const { commandData, serialized } = SecuxADA.prepareStake(input, withdrawAmount);
    const response = await device.Exchange(commandData);
    const raw_tx = SecuxADA.resolveTransaction(response, serialized);
    
    */
    • unstake (de-register staking key)
    const { raw_tx } = await device.sign(
        input, 
        {
            // With de-registration operation, the balance of reward address must be 0.
            withdrawAmount
        }
    );
    
    /*
    
    // transfer data to hardware wallet by custom transport layer.
    const { commandData, serialized } = SecuxADA.prepareUnstake(input, { withdrawAmount });
    const response = await device.Exchange(commandData);
    const raw_tx = SecuxADA.resolveTransaction(response, serialized);
    
    */

API Reference

ADA package for SecuX device

Kind: global class


SecuxADA.addressConvert(xpublickey, type, [option]) ⇒ string

Convert bip32-publickey to ADA address.

Returns: string - address

Param Type Description
xpublickey string | Buffer ada bip32-publickey
type AddressType
[option] AddressOption

SecuxADA.prepareAddress(pathWith3Depth) ⇒ communicationData

Prepare data for address generation.

Returns: communicationData - data for sending to device

Param Type Description
pathWith3Depth string m/1852'/1815'/...

SecuxADA.resolveAddress(response, type, [option]) ⇒ string

Resolve address from response data.

Returns: string - address

Param Type Description
response communicationData data from device
type AddressType
[option] AddressOption

SecuxADA.prepareXPublickey(pathWith3Depth) ⇒ communicationData

Prepare data for bip32-publickey.

Returns: communicationData - data for sending to device

Param Type Description
pathWith3Depth string m/1852'/1815'/...

SecuxADA.resolveXPublickey(response) ⇒ string

Resolve bip32-publickey from response data.

Returns: string - bip32-publickey (hex string)

Param Type Description
response communicationData data from device

SecuxADA.prepareSign(inputs, output, [option]) ⇒ prepared

Prepare data for signing.

Param Type
inputs Array.<txInput>
output txOutput
[option] signOption

SecuxADA.resolveSignatureList(response) ⇒ Array.<string>

Reslove signatures from response data.

Returns: Array.<string> - signature array of hex string

Param Type Description
response communicationData data from device

SecuxADA.resolveTransaction(response, serialized) ⇒ string

Resolve transaction for broadcasting.

Returns: string - signed transaction (base64 encoded)

Param Type Description
response communicationData data from device
serialized communicationData

SecuxADA.prepareStake(input, pool, [option]) ⇒ prepared

Prepare data for signing.

Param Type Description
input stakeInput
pool string pool hash or id
[option] stakeOption

SecuxADA.prepareUnstake(input, [option]) ⇒ prepared

Prepare data for signing.

Param Type
input stakeInput
[option] unstakeOption

SecuxADA.prepareWithdraw(input, amount, [option]) ⇒ prepared

Prepare data for signing.

Param Type Description
input stakeInput
amount number | string rewards
[option] withdrawOption



AddressType : enum

Properties

Name Type Description
BASE number 0
ENTERPRISE number 1
POINTER number 2
REWARD number 3
BOOTSTRAPv1 number 4
BOOTSTRAPv2 number 5

PointerOption : object

Properties

Name Type
slot number
txIndex number
certIndex number

AddressOption : object

Properties

Name Type Description
[addressIndex] number account index
[stakeIndex] number stake key index
[pointer] PointerOption option for Pointer address

txInput : object

Properties

Name Type Description
path string 3-depth path of CIP-1852
xpublickey string | Buffer ED25519 publickey from path
txId string referenced transaction hash
index number referenced transaction output index
amount number | string referenced transaction output amount
[addressIndex] number default: 0
[stakeIndex] number default: 0

txOutput : object

Properties

Name Type Description
address string receiver's address
amount number | string amount of payment

signOption : object

Properties

Name Type Description
[changeAddress] string default: sender's address
[fee] number | string
[TimeToLive] number

stakeOption : object

Properties

Name Type Description
[stakeIndex] number default: 0
[needRegistration] boolean include registration or not
[fee] number | string
[TimeToLive] number

withdrawOption : object

Properties

Name Type Description
[stakeIndex] number default: 0
[fee] number | string
[TimeToLive] number

unstakeOption : object

Properties

Name Type Description
[stakeIndex] number default: 0
[withdrawAmount] boolean withdraw and de-registration
[fee] number | string
[TimeToLive] number

utxo : object

Properties

Name Type Description
txId string referenced transaction hash
index number referenced transaction output index
amount number | string referenced transaction output amount
[addressIndex] number default: 0

stakeInput : object

Properties

Name Type Description
path string 3-depth path of CIP-1852
utxo Array.<utxo>
changeAddress string owner's account
xpublickey string | Buffer cardano bip32-publickey
[stakeIndex] number default: 0

prepared : object

Properties

Name Type Description
commandData communicationData data for sending to device
serialized communicationData


© 2018-21 SecuX Technology Inc.

authors:
andersonwu@secuxtech.com