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

3.0.0 • Public • Published

lerna ![view on npm](https://badgen.net/npm/v/@secux/app-luna npm module downloads

@secux/app-luna

SecuX Hardware Wallet LUNA API

Usage

import { SecuxLUNA } from "@secux/app-luna";

First, create instance of ITransport


Examples

  1. Get account address
const path = "m/44'/330'/0'/0/0";
const address = await device.getAddress(path);

/*

// transfer data to hardware wallet by custom transport layer
const data = SecuxLUNA.prepareAddress(path);
const response = await device.Exchange(data);
const address = SecuxLUNA.resolveAddress(response);

*/
  1. Sign transaction

    • transfer asset (MsgSend)
    const signer = {
        path: "m/44'/330'/0'/0/0",
        accountNumber: 12345,
        sequence: 1,
    };
    const params = {
        fee: { uluna: 3000 },
        gasLimit: 12345,
    };
    const send = new SecuxLUNA.MsgSend(from, to, { uluna: 1e6 });
    
    const { multi_command, serialized } = await device.sign(
        [signer],
        [send],
        params
    );
    const responseList = [];
    for (const data of multi_command) {
        const rsp = await device.Exchange(data);
        responseList.push(rsp);
    }
    const raw_tx = SecuxLUNA.resolveTransaction(responseList, serialized);
    
    /*
    
    // transfer data to hardware wallet by custom transport layer.
    const { commands, serialized } = SecuxLUNA.prepareSign(
        [
            { ...signer, publickey: "02acb4bc267db7774614bf6011c59929b006c2554386a3090baff0b3fc418ec044" }
        ],
        [send],
        params
    });
    const responseList = [];
    for (const data of commands) {
        const rsp = await device.Exchange(data);
        responseList.push(rsp);
    }
    const raw_tx = SecuxLUNA.resolveTransaction(responseList, serialized);
    
    */
    • execute contract
    const swap = new SecuxLUNA.MsgExecuteContract(
        "terra1amdttz2937a3dytmxmkany53pp6ma6dy4vsllv", 
        "terra156v8s539wtz0sjpn8y8a8lfg8fhmwa7fy22aff", 
        {
            swap: {
                offer_asset: {
                    amount: 1e6,
                    info: {
                        native_token: { denom: "uluna" },
                    },
                },
            },
        },
        { uluna: 1e6 }
    );
    
    const { multi_command, serialized } = await device.sign(
        [signer],
        [swap],
        params
    );
    
    // ... (same as above)
    • delegate
    const delegate = new SecuxLUNA.MsgDelegate(
        "terra1amdttz2937a3dytmxmkany53pp6ma6dy4vsllv", 
        "terravaloper1vf2209f5y7s4a66n5ng7wmup5gcc2kghhzy89w", 
        "1000000"
    );
    
    const { multi_command, serialized } = await device.sign(
        [signer],
        [delegate],
        params
    );
    
    // ... (same as above)
    • withdraw
    const withdraw = new SecuxLUNA.MsgWithdrawDelegatorReward(
        "terra1amdttz2937a3dytmxmkany53pp6ma6dy4vsllv", 
        "terravaloper1vf2209f5y7s4a66n5ng7wmup5gcc2kghhzy89w" 
    );
    
    const { multi_command, serialized } = await device.sign(
        [signer],
        [withdraw],
        params
    );
    
    // ... (same as above)
    • undelegate
    const undelegate = new SecuxLUNA.MsgUndelegate(
        "terra1amdttz2937a3dytmxmkany53pp6ma6dy4vsllv", 
        "terravaloper1vf2209f5y7s4a66n5ng7wmup5gcc2kghhzy89w",
        "1000000"
    );
    
    const { multi_command, serialized } = await device.sign(
        [signer],
        [undelegate],
        params
    );
    
    // ... (same as above)
    • redelegate
    const redelegate = new SecuxLUNA.MsgBeginRedelegate(
        "terra1amdttz2937a3dytmxmkany53pp6ma6dy4vsllv", 
        "terravaloper1vf2209f5y7s4a66n5ng7wmup5gcc2kghhzy89w",
        "terravaloper1vk20anceu6h9s00d27pjlvslz3avetkvnwmr35",
        "1000000"
    );
    
    const { multi_command, serialized } = await device.sign(
        [signer],
        [redelegate],
        params
    );
    
    // ... (same as above)

API Reference

LUNA package for SecuX device

Kind: global class


SecuxLUNA.addressConvert(publickey, type) ⇒ string

Convert secp256k1 publickey to LUNA address.

Returns: string - LUNA address

Param Type Description
publickey string | Buffer secp256k1 publickey
type AddressType account/validator/pubkey address

SecuxLUNA.prepareAddress(path) ⇒ communicationData

Prepare data for address generation.

Returns: communicationData - data for sending to device

Param Type Description
path string BIP32 path, ex: m/44'/330'/0'/0/0

SecuxLUNA.resolveAddress(response, type) ⇒ string

Generate address from response data.

Returns: string - LUNA address

Param Type Description
response communicationData data from device
type AddressType account/validator/pubkey address

SecuxLUNA.preparePublickey(path) ⇒ communicationData

Prepare data for secp256k1 publickey.

Returns: communicationData - data for sending to device

Param Type Description
path string BIP32 path, ex: m/44'/330'/0'/0/0

SecuxLUNA.resolvePublickey(response) ⇒ string

Resolve secp256k1 publickey from response data.

Returns: string - secp256k1 publickey (base64-encoded string)

Param Type Description
response communicationData data from device

SecuxLUNA.prepareXPublickey(path) ⇒ communicationData

Prepare data for xpub.

Returns: communicationData - data for sending to device

Param Type Description
path string BIP32 path, ex: m/44'/330'/0'/0/0

SecuxLUNA.resolveXPublickey(response, path) ⇒ string

Resolve xpub from response data.

Returns: string - xpub

Param Type Description
response communicationData data from device
path string BIP32 path, ex: m/44'/330'/0'/0/0

SecuxLUNA.prepareSign(signers, messages, params) ⇒ prepared

Prepare data for signing.

Param Type Description
signers Signer array of signer
messages Array.<IMessage> each message represents a instruction
params TxOption

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

Reslove signature from response data.

Returns: Array.<string> - signature array of base64-encoded string

Param Type Description
response communicationData data from device

SecuxLUNA.resolveTransaction(response, serialized) ⇒ string

Serialize transaction wtih signature for broadcasting.

Returns: string - signed raw transaction

Param Type Description
response communicationData | Array.<communicationData> data from device
serialized communicationData

SecuxLUNA.simulate(signers, messages, [params]) ⇒ string

Simulate a transaction for estimating gas.

Returns: string - simulated transaction

Param Type Description
signers Array.<Signer> array of signer
messages Array.<IMessage> each message represents a instruction
[params] TxOption



AddressType : enum

Properties

Name Type Description
account string account
validator string validator
pubkey string pubkey

Signer : object

Properties

Name Type Description
path string BIP32 path, ex: m/44'/330'/0'/0/0
publickey string | Buffer secp256k1 publickey from path
sequence number the number of transactions sent from this address
accountNumber number the account number from blockchain

IMessage : interface

Properties

Name Type
toAmino function
toData function
toProto function
packAny function

TxOption : object

Properties

Name Type Description
fee string | Coins the amount of coins to be paid as a fee
gasLimit number the maximum gas that can be used in transaction processing
[chainId] string blockchain network identifier
[memo] string
[timeoutHeight] string timeout height relative to the current block height
[payer] string payer’s account address
[granter] string granter’s account address

prepared : object

Properties

Name Type Description
commands Array.<communicationData> data for sending to device
serialized communicationData unsigned raw transaction


© 2018-22 SecuX Technology Inc.

authors:
andersonwu@secuxtech.com

Package Sidebar

Install

npm i @secux/app-luna

Weekly Downloads

0

Version

3.0.0

License

MIT

Unpacked Size

555 kB

Total Files

20

Last publish

Collaborators

  • rus7hex