Bitcore
=======
[](https://www.npmjs.org/package/bitcore)
[](https://travis-ci.org/bitpay/bitcore)
[](https://coveralls.io/r/bitpay/bitcore)
A pure and powerful JavaScript Bitcoin library.
## Principles
Bitcoin is a powerful new peer-to-peer platform for the next generation of financial technology. The decentralized nature of the Bitcoin network allows for highly resilient bitcoin infrastructure, and the developer community needs reliable, open-source tools to implement bitcoin apps and services.
## Get Started
```
npm install bitcore
```
Using it in Node.js:
```javascript
var bitcore = require('bitcore');
assert(bitcore.Address.isValid('126vMmY1fyznpZiFTTnty3cm1Rw8wuheev'));
var simpleTx = new bitcore.Transaction();
var simpleTx.from(unspent).to(address, amount);
simpleTx.sign(privateKey);
```
## Documentation
The complete docs are hosted here: [bitcore documentation](http://bitcore.io/guide/). There's also a [bitcore API reference](http://bitcore.io/api/) available generated from the JSDocs of the project, where you'll find low-level details on each bitcore utility.
[Read the Developer Guide](http://bitcore.io/guide/)
[Read the API Reference](http://bitcore.io/api/)
To get community assistance and ask for help with implementation questions, please use our [community forums](http://bitpaylabs.com/c/bitcore).
## Examples
* [Generate a random address](https://github.com/bitpay/bitcore/blob/master/docs/examples.md#generate-a-random-address)
* [Generate a address from a SHA256 hash](https://github.com/bitpay/bitcore/blob/master/docs/examples.md#generate-a-address-from-a-sha256-hash)
* [Import an address via WIF](https://github.com/bitpay/bitcore/blob/master/docs/examples.md#import-an-address-via-wif)
* [Create a Transaction](https://github.com/bitpay/bitcore/blob/master/docs/examples.md#create-a-transaction)
* [Sign a Bitcoin message](https://github.com/bitpay/bitcore/blob/master/docs/examples.md#sign-a-bitcoin-message)
* [Verify a Bitcoin message](https://github.com/bitpay/bitcore/blob/master/docs/examples.md#verify-a-bitcoin-message)
* [Create an OP RETURN transaction](https://github.com/bitpay/bitcore/blob/master/docs/examples.md#create-an-op-return-transaction)
* [Create a 2-of-3 multisig P2SH address](https://github.com/bitpay/bitcore/blob/master/docs/examples.md#create-a-2-of-3-multisig-p2sh-address)
* [Spend from a 2-of-2 multisig P2SH address](https://github.com/bitpay/bitcore/blob/master/docs/examples.md#spend-from-a-2-of-2-multisig-p2sh-address)
## Modules
This module provides bitcoin's core features. Other features and protocol extensions are built into separate modules. Here is a list of official bitcore modules:
Module | Version | Building | Coverage
-------|---------|----------|---------
| [](https://www.npmjs.org/package/bitcore-payment-protocol) | [](https://travis-ci.org/bitpay/bitcore-payment-protocol) | [](https://coveralls.io/r/bitpay/bitcore-payment-protocol)
| [](https://www.npmjs.org/package/bitcore-p2p) | [](https://travis-ci.org/bitpay/bitcore-p2p) | [](https://coveralls.io/r/bitpay/bitcore-p2p?branch=master)
| [](https://www.npmjs.org/package/bitcore-mnemonic) | [](https://travis-ci.org/bitpay/bitcore-mnemonic) | [](https://coveralls.io/r/bitpay/bitcore-mnemonic)
| [](https://www.npmjs.org/package/bitcore-ecies) | [](https://travis-ci.org/bitpay/bitcore-ecies) | [](https://coveralls.io/r/bitpay/bitcore-ecies)
| [](https://www.npmjs.org/package/bitcore-channel) | [](https://travis-ci.org/bitpay/bitcore-channel) | [](https://coveralls.io/r/bitpay/bitcore-channel)
| [](https://www.npmjs.org/package/bitcore-explorers) | [](https://travis-ci.org/bitpay/bitcore-explorers) | [](https://coveralls.io/r/bitpay/bitcore-explorers)
| [](https://www.npmjs.org/package/bitcore-message) | [](https://travis-ci.org/bitpay/bitcore-message) | [](https://coveralls.io/r/bitpay/bitcore-message)
## Security
We're using Bitcore in production, as are [many others](http://bitcore.io#projects), but please use common sense when doing anything related to finances! We take no responsibility for your implementation decisions.
If you find a security issue, please email security@bitpay.com.
## Contributing
Please send pull requests for bug fixes, code optimization, and ideas for improvement. For more information on how to contribute, please refer to our [CONTRIBUTING](https://github.com/bitpay/bitcore/blob/master/CONTRIBUTING.md) file.
## Building the Browser Bundle
To build bitcore full bundle for the browser:
```sh
gulp browser
```
This will generate files named `bitcore.js` and `bitcore.min.js`.
You can also use our pre-generated files, provided for each release along with a PGP signature by one of the project's main contributors. To get them, checkout a release commit (for example, https://github.com/bitpay/bitcore/commit/2670cd1ac5ec1742aae0599e1583c063415959ff for v0.10.4).
To verify signatures, use the following PGP keys:
- @maraoz: https://pgp.mit.edu/pks/lookup?op=get&search=0x64F3727BFE0B3196
- @eordano: https://pgp.mit.edu/pks/lookup?op=get&search=0x00BD4BAF1DEEAC20
- @yemel: https://pgp.mit.edu/pks/lookup?op=get&search=0xB4A468A6F14B6843
- @braydonf: https://pgp.mit.edu/pks/lookup?op=get&search=0x9BBF07CAC07A276D
## Tests
Run all the tests:
```sh
gulp test
```
You can also run just the NodeJS tests with `gulp test:node`, just the browser tests with `gulp test:browser`
or create a test coverage report (you can open `coverage/lcov-report/index.html` to visualize it) with `gulp coverage`.
## License
Code released under [the MIT license](https://github.com/bitpay/bitcore/blob/master/LICENSE).
Copyright 2013-2015 BitPay, Inc. Bitcore is a trademark maintained by BitPay, Inc.