Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@xchainjs/xchain-bitcoin

Package Overview
Dependencies
Maintainers
5
Versions
91
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@xchainjs/xchain-bitcoin

Custom Bitcoin client and utilities used by XChainJS clients

  • 0.7.0
  • Source
  • npm
  • Socket score

Version published
Maintainers
5
Created
Source

@xchainjs/xchain-client

Implements the following:

interface BitcoinClient {
  generatePhrase(): string
  setPhrase(phrase?: string): void
  validatePhrase(phrase: string): boolean
  purgeClient(): void
  setNetwork(net: Network): void
  getNetwork(net: Network): Bitcoin.networks.Network
  setBaseUrl(endpoint: string): void
  getAddress(): string
  validateAddress(address: string): boolean
  scanUTXOs(): Promise<void>
  getBalance(): number
  getBalanceForAddress(address?: string): Promise<number>
  getTransactions(address: string): Promise<Txs>
  calcFees(memo?: string): Promise<object>
  vaultTx(addressVault: string, valueOut: number, memo: string, feeRate: number): Promise<string>
  normalTx(addressTo: string, valueOut: number, feeRate: number): Promise<string>
}

Modules

  • client - Custom client for communicating with Bitcoin using BIP39 bitcoinjs-lib and WIF

Installation

yarn add @xchainjs/xchain-client

Following dependencies will be installed into your project:

  • bitcoinjs-lib
  • bip39
  • wif
  • moment
  • axios

Testing

Uses a dotenv file to hold a USER_PHRASE and a VAULT_PHRASE

Usage

Initialize client and use class methods:

import { Client, Network } from '../src/client'

const btcClient = new Client(Network.TEST)

const newPhrase = btcClient.generatePhrase()

.generatePhrase()

Generate a 12 word BIP-39 seed phrase.

Return: string

.setPhrase(phrase)

Loads a 12 word BIP-39 seed phrase to use as a BTC send/receive address.

phrase: 12 word BIP-39 seed phrase as string

Return: void

.validatePhrase(phrase)

Validates if provided phrase is BIP-39.

phrase: 12 word BIP-39 seed phrase as string

Return: boolean

.purgeClient()

Clears UTXOs and seed phrase from client class properties.

Return: void

.setNetwork(net)

Set testnet or mainnet network using the Network interface.

net: Network.TEST or Network.MAIN

Return: void

.setBaseUrl(endpoint)

Set an electrs REST API endpoint to use for chain data.

endpoint: endpoint as string

Return: void

.getAddress()

Gets a P2WPKH address using the seed phrase set in .setPhrase() or initialization. If no phrase is set will error.

Return: string

.validateAddress(address)

Validates if provided address is p2wpkh and same network as the client.

address: string

Return: boolean

.scanUTXOs()

Async

Scans the UTXOs on the set seed phrase in .setPhrase() and stores them in class properties.

Return: void

.getBalance()

Get the balance of UTXOs from .scanUTXOs()

Return: number in sats

.getBalanceForAddress(address)

Async

Get the balance of UTXOs for an external address

address: string

Return: number in sats

.getTransactions(address)

Async

Get transactions for an address

address: string

Return: Array of objects

.calcFees(memo)

Async

Calculates the fee rate and the fee total estimate for fast, regular, and slow transactions. Add a memo for a vault TX

memo: string optional

Return: object of objects

.vaultTx(addressVault, valueOut, memo, feeRate)

Async

Generates a valid Vault TX hex to be broadcast

addressVault: string

valueOut: number in sats

memo: string

feeRate: number

.normalTx(addressTo, valueOut, feeRate)

Async

Generates a valid Vault TX hex to be broadcast

addressTo: string

valueOut: number in sats

feeRate: number

Keywords

FAQs

Package last updated on 28 Dec 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc