# @coolwallet/bch

> Coolwallet Bitcoin Cash sdk

Latest version **2.0.0** (published 2025-05-05) · ISC license · 0 weekly downloads

## Install

```sh
npm install @coolwallet/bch
pnpm add @coolwallet/bch
yarn add @coolwallet/bch
bun add @coolwallet/bch
```

## Health

**Score 50/100 (C)** — status: stable.

Positive: has types; no vulnerabilities; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2025-05-05 |
| First published | 2020-08-07 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 5 |
| Unpacked size | 135.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 37 |
| Author | coolwallet-team |
| Maintainers | coolwallet-team |
| Keywords | btc, bch, bitcoin, bitcoincash, litecoin, ltc, coolwallet, omni, usdt, javascript, hardwarewallet, cryptocurrency, coolbitx, transaction |

## Links

- npm: https://www.npmjs.com/package/@coolwallet/bch
- Repository: https://github.com/CoolBitX-Technology/coolwallet3-sdk
- Homepage: https://github.com/CoolBitX-Technology/coolwallet3-sdk#readme
- Issues: https://github.com/CoolBitX-Technology/coolwallet3-sdk/issues
- npm.io page: https://npm.io/package/@coolwallet/bch

## Dependencies (5)

- [bn.js](https://npm.io/package/bn.js.md) ^5.1.1
- [bchaddrjs](https://npm.io/package/bchaddrjs.md) ^0.4.9
- [@types/bn.js](https://npm.io/package/@types/bn.js.md) ^4.11.6
- [@coolwallet/core](https://npm.io/package/@coolwallet/core.md) ^2.0.0
- [bitcore-lib-cash](https://npm.io/package/bitcore-lib-cash.md) ^8.20.5

## Alternatives

- [@gemini-wallet/core](https://npm.io/package/@gemini-wallet/core.md) — 515.6K weekly downloads
- [utility](https://npm.io/package/utility.md) — 416.6K weekly downloads
- [@primno/dpapi](https://npm.io/package/@primno/dpapi.md) — 7.2K weekly downloads
- [pi-readseek](https://npm.io/package/pi-readseek.md) — 3.7K weekly downloads
- [@emilia-protocol/verify](https://npm.io/package/@emilia-protocol/verify.md) — 1.1K weekly downloads

## Recent versions

- 2.0.0 (latest) — 2025-05-05
- 2.0.1-beta.1 (beta) — 2026-09-09
- 2.0.1-beta.0 — 2026-06-18
- 2.0.0-beta.1 — 2025-03-13
- 2.0.0-beta.0 — 2025-02-19
- 1.1.6 — 2024-12-05
- 1.1.5 — 2024-11-05
- 1.1.4 — 2023-05-24
- 1.1.3 — 2022-02-25
- 1.1.1 — 2022-02-24
- 1.0.2 — 2021-08-19
- 1.0.2-beta.1 — 2021-08-19
- 1.0.2-beta.0 — 2021-05-04
- 1.0.1 — 2021-04-30
- 1.0.0 — 2021-04-30
- … 10 more at https://npm.io/package/@coolwallet/bch/versions

## README

# CoolWallet Bitcoin Cash (BCH) SDK

Typescript library with support for the integration of BCH for third party application, include the functionalities of generation of addresses and signed transactions. 

## Install

```shell
npm i @coolwallet/bch
```

## Usage

```javascript
import BCH from '@coolwallet/bch';
import { crypto } from '@coolwallet/core';
import { createTransport } from '@coolwallet/transport-web-ble';

const bch = new BCH();

const transport = await createTransport();

const { privateKey: appPrivateKey } = crypto.key.generateKeyPair();

const appId = 'appId that had been registered by wallet';

const address = await bch.getAddress(transport, appPrivateKey, appId, 0);

const signTxData = {
    tranpsort,
    appPrivateKey,
    appId,
    scriptType: 0,
    inputs: [{
        preTxHash: "9d717e7f9fb55c0591eb0f59999866091c592c55234a7024230123e1731524b5",
        preIndex: 0,
        preValue: "500000",
        sequence: 0xFFFFFFFF,
        addressIndex: 2,
        pubkeyBuf: Uint8Array(33)
    }],
    output: {
        value: "10000",
        address: "qzr809ywhqvhrlhq5nd9m78kmn3p20qm5y07gj0p8v",
    },
    change: {
        value: "489835",
        addressIndex: 1,
        pubkeyBuf: Uint8Array(33)
    }
}

const tx = await bch.signTransaction(signTxData);
```

## Methods

### getAddress

#### Description

The BCH 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 BIP44 path:

```none
m/44'/145'/0'/0/{i}
```

In the design of current hardware, we only support path `m/44'/145'/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: types.Transport, 
    appPrivateKey: string, 
    appId: string, 
    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   |
|  addressIndex |  The from address index in BIP44 derivation  |   number  |    True   |

### signTransaction

#### Description

Sign BCH Transaction.

```javascript
async signTransaction(signTxData: types.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   |

---
_Source: https://npm.io/package/@coolwallet/bch · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
