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
@secux/app-ada
SecuX Hardware Wallet ADA API
Usage
import { SecuxADA, AddressType } from "@secux/app-ada";
First, create instance of ITransport
Examples
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);
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
- .prepareAddress(pathWith3Depth) ⇒
communicationData
- .resolveAddress(response, type, [option]) ⇒
string
- .prepareXPublickey(pathWith3Depth) ⇒
communicationData
- .resolveXPublickey(response) ⇒
string
- .prepareSign(inputs, output, [option]) ⇒
prepared
- .resolveSignatureList(response) ⇒
Array.<string>
- .resolveTransaction(response, serialized) ⇒
string
- .prepareStake(input, pool, [option]) ⇒
prepared
- .prepareUnstake(input, [option]) ⇒
prepared
- .prepareWithdraw(input, amount, [option]) ⇒
prepared
- .addressConvert(xpublickey, type, [option]) ⇒
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