@coolwallet/doge
Version:
Coolwallet Dogecoin sdk
140 lines (105 loc) • 5.7 kB
Markdown
# CoolWallet Bitcoin SDK
Typescript library with support for the integration of Bitcoin for third party application, include the functionalities of generation of addresses and signed transactions.
## Install
```shell
npm i @coolwallet/doge
```
## Usage
```javascript
import DOGE from '@coolwallet/doge';
import { crypto } from '@coolwallet/core';
import { createTransport } from '@coolwallet/transport-web-ble';
const doge = new DOGE();
const transport = await createTransport();
const { privateKey: appPrivateKey } = crypto.key.generateKeyPair();
const appId = 'appId that had been registered by wallet';
const addressIndex = 0;
const address = await doge.getAddress(transport, appPrivateKey, appId, scriptType, 0);
const signTxData = {
transport,
appPrivateKey,
appId,
scriptType: 1,
inputs: [{
preTxHash: "735153f57da91462a01c17937a397aa67f7b5faf9ab74ebcdd4c8f485aba26f5",
preIndex: 1,
preValue: "87302",
sequence: 0xFFFFFFFF,
addressIndex: 0,
pubkeyBuf: Uint8Array(33)
}],
output: {
value: "10000",
address: "3442qW39131y5Q8qR963ehjmxXPAXUWn7Q",
},
change: {
value: "77301.99983500001",
addressIndex: 0,
pubkeyBuf: Uint8Array(33)
}
}
const normalTx = await doge.signTransaction(signTxData)
```
## Methods
### getAddress
#### Description
Get address by address index.
The DOGE address generated is compatible to BIP141 (SegWit Proposal) and BIP44 with **account** and **change** set to 0, which means calling `getAddress` with `addressIndex = i` will get the address of folllowing path:
```none
m/44'/3'/0'/0/{i}
```
In the design of current hardware, we only support path `m/44'/3'/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.
```javascript
async getAddress(
transport: Transport,
appPrivateKey: string,
appId: string,
scriptType: ScriptType,
addressIndex: number
): Promise<string>
```
#### Arguments
| 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 |
### signTransaction
#### Description
Sign Bitcoin Transaction.
```javascript
async signTransaction(signTxData: signTxType):Promise<string>
```
#### signTxType Arguments
| 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) | [Inputs] | 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 |
### signUSDTTransaction
#### Description
Sign USDT Transaction
```javascript
async signUSDTTransaction(signUSDTTxData: signUSDTTxType): Promise<string>
```
#### signUSDTTxType Arguments
| 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) | [Inputs] | True |
| output | Output of the transaction | Output | True |
| value | Amount of USDT to transfer | string | 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 |