v0.8.1
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