All Projects → bitcoinjs → Bitcoinjs Lib

bitcoinjs / Bitcoinjs Lib

Licence: mit
A javascript Bitcoin library for node.js and browsers.

Programming Languages

javascript
184084 projects - #8 most used programming language
typescript
32286 projects

Projects that are alternatives of or similar to Bitcoinjs Lib

Gulp Tutorial
Code examples for my Gulp.js tutorial series
Stars: ✭ 383 (-91.33%)
Mutual labels:  browserify
Bitcoinj
A library for working with Bitcoin
Stars: ✭ 4,162 (-5.79%)
Mutual labels:  bitcoin
Debundle
🗃 A javascript debundler. Takes a Browserify or Webpack bundle and recreates the initial, pre-bundled source.
Stars: ✭ 420 (-90.49%)
Mutual labels:  browserify
Browserify Middleware
express middleware for browserify, done right
Stars: ✭ 385 (-91.29%)
Mutual labels:  browserify
Ethereumkit
EthereumKit is a free, open-source Swift framework for easily interacting with the Ethereum.
Stars: ✭ 400 (-90.95%)
Mutual labels:  bitcoin
Plutus
An automated bitcoin wallet collider that brute forces random wallet addresses
Stars: ✭ 404 (-90.86%)
Mutual labels:  bitcoin
Bitcoin Core
A modern Bitcoin Core REST and RPC client.
Stars: ✭ 379 (-91.42%)
Mutual labels:  bitcoin
Bitcoin Testnet Box
Create your own private bitcoin testnet
Stars: ✭ 431 (-90.24%)
Mutual labels:  bitcoin
Xchange Stream
XChange-stream is a Java library providing a simple and consistent streaming API for interacting with Bitcoin and other crypto currency exchanges via WebSocket protocol. It is build on top of of XChange library providing new interfaces for streaming API. User can subscribe for live updates via reactive streams of RxJava library.
Stars: ✭ 402 (-90.9%)
Mutual labels:  bitcoin
Lets Build A Blockchain
A mini cryptocurrency in Ruby
Stars: ✭ 416 (-90.58%)
Mutual labels:  bitcoin
Crypto Whale Watching App
Python Dash app that tracks whale activity in cryptocurrency markets.
Stars: ✭ 389 (-91.2%)
Mutual labels:  bitcoin
Ledgerjs
Ledger's JavaScript libraries
Stars: ✭ 397 (-91.01%)
Mutual labels:  bitcoin
Payment Gateway
Bitcoin/Altcoins PHP Payment Class. It supports Bitcoin BitcoinCash DASH Dogecoin Litecoin Reddcoin Feathercoin Vertcoin Potcoin Speedcoin. Install GoUrl php script - bitcoin api payment gateway on your site!
Stars: ✭ 406 (-90.81%)
Mutual labels:  bitcoin
Cryptocurrency
Overview of top cryptocurrencies
Stars: ✭ 385 (-91.29%)
Mutual labels:  bitcoin
Blockchain In Js
Build your own blockchain!
Stars: ✭ 425 (-90.38%)
Mutual labels:  bitcoin
Electrs
An efficient re-implementation of Electrum Server in Rust
Stars: ✭ 380 (-91.4%)
Mutual labels:  bitcoin
Techan
Technical Analysis Library for Golang
Stars: ✭ 404 (-90.86%)
Mutual labels:  bitcoin
Trezor Firmware
🔒 Trezor Firmware Monorepo
Stars: ✭ 430 (-90.27%)
Mutual labels:  bitcoin
Blockchainstore
💰 Retail Store that runs on Ethereum
Stars: ✭ 425 (-90.38%)
Mutual labels:  bitcoin
Chklinechart
纯Swift4.0代码编写的K线图表组件,支持:MA,EMA,BOLL,SAR,KDJ,MACD等技术指标显示。集成使用简单,二次开发扩展强大
Stars: ✭ 409 (-90.74%)
Mutual labels:  bitcoin

BitcoinJS (bitcoinjs-lib)

Github CI NPM code style: prettier

A javascript Bitcoin library for node.js and browsers. Written in TypeScript, but committing the JS files to verify.

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, including reviewing any and all of your project's dependencies.

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 prettier 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.

You can find a Web UI that covers most of the psbt.ts, transaction.ts and p2*.ts APIs here.

Installation

npm install bitcoinjs-lib
# optionally, install a key derivation library as well
npm install ecpair bip32
# ecpair is the ECPair class for single keys
# bip32 is for generating HD keys

Previous versions of the library included classes for key management (ECPair, HDNode(->"bip32")) but now these have been separated into different libraries. This lowers the bundle size significantly if you don't need to perform any crypto functions (converting private to public keys and deriving HD keys).

Typically we support the Node Maintenance LTS version. TypeScript target will be set to the ECMAScript version in which all features are fully supported by current Active Node LTS. However, depending on adoption among other environments (browsers etc.) we may keep the target back a year or two. If in doubt, see the main_ci.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

Crypto is hard.

When working with private keys, the random number generator is fundamentally one of the most important parts of any software you write. For random number generation, we default to the randombytes module, which uses window.crypto.getRandomValues in the browser, or Node js' crypto.randomBytes, depending on your build system. Although this default is ~OK, there is no simple way to detect if the underlying RNG provided is good enough, or if it is catastrophically bad. You should always verify this yourself to your own standards.

This library uses tiny-secp256k1, which uses RFC6979 to help prevent k re-use and exploitation. Unfortunately, this isn't a silver bullet. Often, Javascript itself is working against us by bypassing these counter-measures.

Problems in Buffer (UInt8Array), for example, can trivially result in catastrophic fund loss without any warning. It can do this through undermining your random number generation, accidentally producing a duplicate k value, sending Bitcoin to a malformed output script, or any of a million different ways. Running tests in your target environment is important and a recommended step to verify continuously.

Finally, adhere to best practice. We are not an authorative source of best practice, but, at the very least:

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 https://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).

WARNING: iOS devices have problems, use at least [email protected] or greater, and enforce the test suites (for Buffer, and any other dependency) pass before use.

Typescript or VSCode users

Type declarations for Typescript are included in this library. Normal installation should include all the needed type information.

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/BIP350 compliant Bech32/Bech32m 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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].