Skip to content

v0.8.1

Compare
Choose a tag to compare
@maraoz maraoz released this 17 Dec 22:54
· 14767 commits to master since this release

v0.8.1 Major release

At BitPay we have been working on a major refactor for bitcore. With a focus on design and code quality, security, documentation and usability, this release sets a new course for the library. We hope it will be a good influence for the development of cryptocurrency-related software in JavaScript.

Overview

bitcore v0.8.1 started as a rewrite of the codebase of the 0.1.x version of bitcore. Although powerful, 0.1.x had usability problems and design issues. A fresh approach, with the added experience of lessons learned, was definitely the best way to improve bitcore.

Main features

Addresses and Key management

  • Address creation from public keys, both P2SH and “pay to public key hash”
  • Hierarchically derived private and public keys

Transactions & Scripting

  • Full validation of transactions
  • 100% of bitcoind’s test vectors ported and passing

Core bitcoin protocol features

  • Block parsing, validation and handling
  • Bitcoin p2p low-level protocol format
  • json-rpc support classes
  • P2P connection pool management

Payment Protocol

  • Message signing and verification in Node.js and web browsers

Migrating from 0.1.x to 0.8.x

The biggest changes in the API correspond to:

Transaction

If you where using the TransactionBuilder class, you’ll notice that there’s no such class anymore. The Transaction class should be good enough now, and easy to understand. You’ll notice that there are some very good improvements, like simpler support for P2SH transactions. Head to the developer guide for a good introduction to it.

BIP32 Hierarchically derived keys

Even though the signature has changed, the interface is pretty similar to the previous BIP32 class. It has been splitted into two classes: HDPublicKey and HDPrivateKey, for more robustness.

Unsupported Features

There is some functionality not present in 0.8.1 that was part of 0.1.x. We decided to only keep core protocol standards and move everything else to submodules. Here are the missing features in 0.8.1:

  • BIP38 and BIP39 support (will be added as submodules in 0.9.0)
  • Electrum style key derivation (no plans for supporting it, can be a community submodule)
  • Armory hd wallets (no plans for supporting it, can be a community submodule)
  • Wallet support (we’re moving those efforts to https://github.com/bitpay/copay)

Future work

Two major release updates are planned for the following months. The following is a mostly incomplete list of what we’re cooking:

v0.9.x

  • 100% test coverage
  • Modularization of the code into separate subprojects
  • Support for more BIPs
  • Full bitcoin node capabilities
  • Payment channel support

v1.0.x

  • Optimize performance critical code with C++ bindings in NodeJS
  • Security audits by third parties
  • Stable API and long term support for the library
  • Support for even more BIPs
  • Bloom filters
  • Stealth Addresses