@thorwallet/xchain-bitcoincash
Version:
Custom bitcoincash client and utilities used by XChainJS clients
74 lines (48 loc) • 2.87 kB
Markdown
# `/xchain-bitcoincash`
## Modules
- `client` - Custom client for communicating with Bitcoin Cash by using [/bitcoincashjs-lib](https://www.npmjs.com/package/@psf/bitcoincashjs-lib)
## Installation
```
yarn add /xchain-bitcoincash
```
Following peer dependencies have to be installed into your project. These are not included in `/xchain-bitcoincash`.
```
yarn add /xchain-client /xchain-crypto /xchain-util axios /bitcoincashjs-lib bchaddrjs
```
## Service Providers
This package uses the following service providers:
| Function | Service | Notes |
| --------------------------- | ----------------- | ------------------------------------------------------------------- |
| Balances | Haskoin | https://api.haskoin.com/#/Address/getBalance |
| Transaction history | Haskoin | https://api.haskoin.com/#/Address/getAddressTxsFull |
| Transaction details by hash | Haskoin | https://api.haskoin.com/#/Transaction/getTransaction |
| Transaction fees | Bitgo | https://app.bitgo.com/docs/#operation/v2.tx.getfeeestimate |
| Transaction broadcast | Bitcoin Cash Node | https://developer.bitcoin.org/reference/rpc/sendrawtransaction.html |
| Explorer | Blockchain.com | https://www.blockchain.com |
Haskoin API rate limits: No
Bitgo API rate limits: https://app.bitgo.com/docs/#section/Rate-Limiting (10 requests/second)
## Usage
Initialize client and use class methods:
```
import { Client, Network } from '../src/client'
// Create a new client interface
const bchClient = new Client({ network: 'mainnet' })
// Set phrase
bchClient.setPhrase('phrase here')
// Get address
const address = bchClient.getAddress()
// Get balance
const balance = await bchClient.getBalance()
// Transfer with feeRate
const txid = await bchClient.transfer({ asset: AssetBCH, recipient: 'recipient address here', amount: baseAmount(100, BCH_DECIMAL), feeRate: 1 })
// Transfer with default feeRate (default is `fast`)
const txid = await bchClient.transfer({ asset: AssetBCH, recipient: 'recipient address here', amount: baseAmount(100, BCH_DECIMAL) })
// Get fee estimations
const { fast, fastest, average } = await bchClient.getFees()
// Get feeRate estimations
const { fast, fastest, average } = await bchClient.getFeeRates()
// Search transactions
const transactions = await bchClient.getTransactions({ address: 'address here', limit: 4 })
// Get a transaction with a given txId/hash
const txData = await bchClient.getTransactionData('b660ee07167cfa32681e2623f3a29dc64a089cabd9a3a07dd17f9028ac956eb8')
```