Typescript library with support for the integration of ZenCash for third party application, include the functionalities of generation of addresses and signed transactions.
npm i @coolwallet/zen
import ZEN from '@coolwallet/zen'
const zen = new ZEN()
const address = await zen.getAddress(transport, appPrivateKey, appId, scriptType, 0);
const inputs = {
preTxHash: "735153f57da91462a01c17937a397aa67f7b5faf9ab74ebcdd4c8f485aba26f5",
preIndex: 1,
preValue: "87302",
sequence: 0xFFFFFFFF,
addressIndex: 0,
pubkeyBuf: Uint8Array(33)
}
const output = {
value: "10000",
address: "MSea9ZqgrZqsB5bvg8iTrcUQ2xpF1ckAsv",
blockHash: "0000000000ab3ec2f5e8fe0bd065195bddf39373f99ccba4e9657e9d84dbf9ae",
blockHeight: 1048203
}
const change = {
value: "77301.99983500001",
addressIndex: 0,
pubkeyBuf: Uint8Array(33),
blockHash: "0000000000ab3ec2f5e8fe0bd065195bddf39373f99ccba4e9657e9d84dbf9ae",
blockHeight: 1048203
}
const signTxData = {
transport,
appPrivateKey,
appId,
scriptType,
inputs,
output,
change,
addressIndex
}
const transaction = await zen.signTransaction(signTxData)
Get address by address index.
The ZEN address generated is compatible to BIP44 with account and change set to 0, which means calling getAddress
with addressIndex = i
will get the address of folllowing path:
m/44'/121'/0'/0/{i}
In the design of current hardware, we only support path m/44'/121'/0'/0/{i}
for speed optimization. This might change in the future and we will then open a more general interface to deal with custom path.
async getAddress(
transport: Transport,
appPrivateKey: string,
appId: string,
scriptType: ScriptType,
addressIndex: number
): Promise<string>
Arg | Description | Type | Required |
---|---|---|---|
transport | Object to communicate with CoolWallet device | Transport | TRUE |
appPrivateKey | Private key for the connected application | string | TRUE |
appId | ID for the connected application | string | TRUE |
scriptType | Define the type of script of the address | ScriptType | TRUE |
addressIndex | The from address index in BIP44 derivation | number | TRUE |
Sign ZenCash Transaction.
async signTransaction(signTxData: signTxType):Promise<string>
Arg | Description | Type | Required |
---|---|---|---|
transport | Object to communicate with CoolWallet device | Transport | TRUE |
appPrivateKey | Private key for the connected application | string | TRUE |
appId | ID for the connected application | string | TRUE |
scriptType | Define the type of script of the address | ScriptType | TRUE |
inputs | Array of inputs of previous transactions (UTXO) | [Input] | TRUE |
output | Output of the transaction | Output | TRUE |
change | Address to receive changes | Change | TRUE |
confirmCB | Callback of confirmation data to the connected application | Function | FALSE |
authorizedCB | Callback of authorized transaction data to the connected application | Function | FALSE |