Socket
Socket
Sign inDemoInstall

bitcoinjs-lib

Package Overview
Dependencies
15
Maintainers
3
Versions
87
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    bitcoinjs-lib

Client-side Bitcoin JavaScript library


Version published
Weekly downloads
109K
increased by2.58%
Maintainers
3
Created
Weekly downloads
 

Package description

What is bitcoinjs-lib?

The bitcoinjs-lib npm package is a library for Bitcoin-related operations in JavaScript. It provides tools for creating, signing, and verifying Bitcoin transactions, as well as generating and managing Bitcoin addresses and keys.

What are bitcoinjs-lib's main functionalities?

Generate a Bitcoin Address

This feature allows you to generate a new Bitcoin address. The code creates a random key pair and derives a Bitcoin address from the public key.

const bitcoin = require('bitcoinjs-lib');
const keyPair = bitcoin.ECPair.makeRandom();
const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey });
console.log(address);

Create a Bitcoin Transaction

This feature allows you to create a Bitcoin transaction. The code builds a transaction by adding inputs and outputs, and then signs it with the private key.

const bitcoin = require('bitcoinjs-lib');
const keyPair = bitcoin.ECPair.fromWIF('your-private-key');
const txb = new bitcoin.TransactionBuilder();
txb.addInput('previous-txid', 0); // Add input (previous transaction)
txb.addOutput('recipient-address', 100000); // Add output (recipient address and amount in satoshis)
txb.sign(0, keyPair); // Sign the transaction
const tx = txb.build().toHex();
console.log(tx);

Verify a Bitcoin Transaction

This feature allows you to verify a Bitcoin transaction. The code parses a transaction from its hexadecimal representation and checks if all inputs have valid scripts.

const bitcoin = require('bitcoinjs-lib');
const tx = bitcoin.Transaction.fromHex('transaction-hex');
const txb = bitcoin.TransactionBuilder.fromTransaction(tx);
const isValid = txb.inputs.every(input => input.script && input.script.length > 0);
console.log(isValid);

Other packages similar to bitcoinjs-lib

Changelog

Source

4.0.2

fixed

  • Fixed TransactionBuilder not throwing when payment type validation should fail (#1195)

removed

  • Removed rogue package.json from src/payments (#1216)

Readme

Source

BitcoinJS (bitcoinjs-lib)

Build Status NPM

js-standard-style

A javascript Bitcoin library for node.js and browsers.

Released under the terms of the MIT LICENSE.

Should I use this in production?

If you are thinking of using the master branch of this library in production, stop. Master is not stable; it is our development branch, and only tagged releases may be classified as stable.

Can I trust this code?

Don't trust. Verify.

We recommend every user of this library and the bitcoinjs ecosystem audit and verify any underlying code for its validity and suitability.

Mistakes and bugs happen, but with your help in resolving and reporting issues, together we can produce open source software that is:

  • Easy to audit and verify,
  • Tested, with test coverage >95%,
  • Advanced and feature rich,
  • Standardized, using standard and Node Buffer's throughout, and
  • Friendly, with a strong and helpful community, ready to answer questions.

Documentation

Presently, we do not have any formal documentation other than our examples, please ask for help if our examples aren't enough to guide you.

Installation

npm install bitcoinjs-lib

Typically we support the Node Maintenance LTS version. If in doubt, see the .travis.yml for what versions are used by our continuous integration tests.

WARNING: We presently don't provide any tooling to verify that the release on npm matches GitHub. As such, you should verify anything downloaded by npm against your own verified copy.

Usage

Browser

The recommended method of using bitcoinjs-lib in your browser is through Browserify. If you're familiar with how to use browserify, ignore this and carry on, otherwise, it is recommended to read the tutorial at http://browserify.org/.

NOTE: We use Node Maintenance LTS features, if you need strict ES5, use --transform babelify in conjunction with your browserify step (using an es2015 preset).

NOTE: If you expect this library to run on an iOS 10 device, ensure that you are using buffer@5.0.5 or greater.

Typescript or VSCode users

Type declarations for Typescript are available for version ^3.0.0 of the library.

npm install @types/bitcoinjs-lib

For VSCode (and other editors), it is advised to install the type declarations, as Intellisense uses that information to help you code (autocompletion, static analysis).

WARNING: These Typescript definitions are not maintained by the maintainers of this repository, and are instead maintained at DefinitelyTyped. Please report any issues or problems there.

Flow

Flow-type definitions for are available in the flow-typed repository for version ^2.0.0 of the library.

You can download them directly, or using the flow-typed CLI:

npm install -g flow-typed
flow-typed install -f 0.27 bitcoinjs-lib@2.2.0

These definitions are maintained by @runn1ng.

Examples

The below examples are implemented as integration tests, they should be very easy to understand. Otherwise, pull requests are appreciated. Some examples interact (via HTTPS) with a 3rd Party Blockchain Provider (3PBP).

If you have a use case that you feel could be listed here, please ask for it!

Contributing

See CONTRIBUTING.md.

Running the test suite

npm test
npm run-script coverage

Complementing Libraries

  • BIP21 - A BIP21 compatible URL encoding library
  • BIP38 - Passphrase-protected private keys
  • BIP39 - Mnemonic generation for deterministic keys
  • BIP32-Utils - A set of utilities for working with BIP32
  • BIP66 - Strict DER signature decoding
  • BIP68 - Relative lock-time encoding library
  • BIP69 - Lexicographical Indexing of Transaction Inputs and Outputs
  • Base58 - Base58 encoding/decoding
  • Base58 Check - Base58 check encoding/decoding
  • Bech32 - A BIP173 compliant Bech32 encoding library
  • coinselect - A fee-optimizing, transaction input selection module for bitcoinjs-lib.
  • merkle-lib - A performance conscious library for merkle root and tree calculations.
  • minimaldata - A module to check bitcoin policy: SCRIPT_VERIFY_MINIMALDATA

Alternatives

LICENSE MIT

Keywords

FAQs

Last updated on 17 Sep 2018

Did you know?

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

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc