A full stack for bitcoin and blockchain-based applications

Related tags

Mad science bitcore
Overview

Bitcore

npm GitHub commit activity MIT License GitHub contributors
master build

Infrastructure to build Bitcoin and blockchain-based applications for the next generation of financial technology.

Getting Started

Requirements

  • Trusted P2P Peer
  • MongoDB Server >= v3.4
  • make g++ gcc

Checkout the repo

git clone [email protected]:bitpay/bitcore.git
git checkout master
npm install

Setup Guide

1. Setup Bitcore config

Example bitcore.config.json
{
  "bitcoreNode": {
    "chains": {
      "BTC": {
        "mainnet": {
          "chainSource": "p2p",
          "trustedPeers": [
            {
              "host": "127.0.0.1",
              "port": 20008
            }
          ],
          "rpc": {
            "host": "127.0.0.1",
            "port": 20009,
            "username": "username",
            "password": "password"
          }
        },
        "regtest": {
          "chainSource": "p2p",
          "trustedPeers": [
            {
              "host": "127.0.0.1",
              "port": 20020
            }
          ],
          "rpc": {
            "host": "127.0.0.1",
            "port": 20021,
            "username": "username",
            "password": "password"
          }
        }
      },
      "BCH": {
        "mainnet": {
          "parentChain": "BTC",
          "forkHeight": 478558,
          "trustedPeers": [
            {
              "host": "127.0.0.1",
              "port": 30008
            }
          ],
          "rpc": {
            "host": "127.0.0.1",
            "port": 30009,
            "username": "username",
            "password": "password"
          }
        },
        "regtest": {
          "chainSource": "p2p",
          "trustedPeers": [
            {
              "host": "127.0.0.1",
              "port": 30020
            }
          ],
          "rpc": {
            "host": "127.0.0.1",
            "port": 30021,
            "username": "username",
            "password": "password"
          }
        }
      }
    }
  }
}

2. Setup Bitcoin Node

Example Bitcoin Mainnet Config
whitelist=127.0.0.1
txindex=0
listen=1
server=1
irc=1
upnp=1

# Make sure port & rpcport matches the
# bitcore.config.json ports for BTC mainnet

# if using Bitcoin Core v0.17+ prefix
# [main]

port=20008
rpcport=20009
rpcallowip=127.0.0.1

rpcuser=username
rpcpassword=password

3. Run Bitcoin node

Example Starting a Bitcoin Node
# Path to your bitcoin application and path to the config above
/Applications/Bitcoin-Qt.app/Contents/MacOS/Bitcoin-Qt -datadir=/Users/username/blockchains/bitcoin-core/networks/mainnet/

4. Start Bitcore

npm run node

Applications

Libraries

  • Bitcore Channel - Micropayment channels for rapidly adjusting bitcoin transactions
  • Bitcore ECIES - Uses ECIES symmetric key negotiation from public keys to encrypt arbitrarily long data streams
  • Bitcore Lib - A pure and powerful JavaScript Bitcoin library
  • Bitcore Lib Cash - A pure and powerful JavaScript Bitcoin Cash library
  • Bitcore Message - Bitcoin message verification and signing
  • Bitcore Mnemonic - Implements mnemonic code for generating deterministic keys
  • Bitcore P2P - The peer-to-peer networking protocol for BTC
  • Bitcore P2P Cash - The peer-to-peer networking protocol for BCH
  • Crypto Wallet Core - A coin-agnostic wallet library for creating transactions, signing, and address derivation

Extras

Contributing

See CONTRIBUTING.md on the main bitcore repo for information about how to contribute.

License

Code released under the MIT license.

Copyright 2013-2019 BitPay, Inc. Bitcore is a trademark maintained by BitPay, Inc.

Comments
  • Idiomatic API

    Idiomatic API

    Bitcore uses an API that Node.js developers will find strange. Parts like the odd pseudo-class system add complexity to learning how to use the library, and some API choices just don't make sense (e.g. using Error throwing in place of returning boolean values, as seen in Address::validate).

    Obviously, this is a subjective issue and you may be satisfied with the current design, but I would strongly urge to match idiomatic Node.js API standards.

    I will start refactoring on my fork, and you can choose whether or not to accept the pull request.

    opened by mappum 38
  • BitPay should serve the bitcore JS binary (preferably from https)

    BitPay should serve the bitcore JS binary (preferably from https)

    I made this simple web app and posted about it on Reddit. (http://dskl.net/bitcoin/coldspend/online.html) Somebody pointed out that there was minified code in my app and that makes it hard to trust. I didn't write minified code but I served the bitcore library (unchanged) which is minified code. I think people would find it easier to trust if they saw that bitcore was served directly from BitPay or some other known and trustable location like the github repo.

    opened by dskloet 22
  • BIP-0039 implementation

    BIP-0039 implementation

    Here's a BIP39 implementation for bitcore.

    Feedback is appreciated. In particular, I can split off BIP39.js from BIP32.js if you think that works better.

    opened by devrandom 21
  • Error: More than one instance of bitcore-lib found. Please make sure to require bitcore-lib and check that submodules do not also include their own bitcore-lib dependency.

    Error: More than one instance of bitcore-lib found. Please make sure to require bitcore-lib and check that submodules do not also include their own bitcore-lib dependency.

    Hi everybody When I run the command bitcored, it gives me the following error

    /home/ruby/.nvm/versions/node/v4.8.3/lib/node_modules/bitcore/node_modules/insight-api/node_modules/bitcore-lib/index.js:12 throw new Error(message); ^ Error: More than one instance of bitcore-lib found. Please make sure to require bitcore-lib and check that submodules do not also include their own bitcore-lib dependency. at Object.bitcore.versionGuard (/home/ruby/.nvm/versions/node/v4.8.3/lib/node_modules/bitcore/node_modules/insight-api/node_modules/bitcore-lib/index.js:12:11) at Object. (/home/ruby/.nvm/versions/node/v4.8.3/lib/node_modules/bitcore/node_modules/insight-api/node_modules/bitcore-lib/index.js:15:9) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object. (/home/ruby/.nvm/versions/node/v4.8.3/lib/node_modules/bitcore/node_modules/insight-api/lib/blocks.js:4:15) at Module._compile (module.js:409:26)

    opened by xishoon 20
  • Transaction serialization errors: check the output amount before fee errors

    Transaction serialization errors: check the output amount before fee errors

    With transaction serialization errors check the output amount before fee errors. Also added a test for it and also improved buildSkipTest by specifying which error to expect and using it for some tests where it wasn't used yet.

    opened by dskloet 20
  • Replace bignumber.js+cryptojs with bn.js+elliptic+hash.js

    Replace bignumber.js+cryptojs with bn.js+elliptic+hash.js

    I've replaced all of the bignum and elliptic curve crypto in the browser with @indutny's bn.js and elliptic, and also replaced our ripemd160 implementation with his hash.js. The result is much faster and much smaller code.

    The mocha browser tests on master take about 45s on my computer. With this PR, they take 17s.

    The Copay mocha browser tests, which heavily use bitcore, take 85s with bitcore master. With this PR, they take 22s.

    Furthermore, the browser bundle is much smaller with this PR. On master, it is 350kb. With this PR, it is a mere 115kb.

    So this PR, roughly speaking, makes bitcore 2.5 times faster and 3 times smaller. And that is actually an underestimate, since that speed test is on all tests, much of which have nothing to do with the changes. On sensitive parts of the code:

    HierarchicalKey tests on master take 3.85s, and on this PR take 0.77s. So they are 5 times faster.

    TransactionBuilder tests take 25s on master, and 8s on this PR. So they are 3 times faster.

    Grepping for "Key" results in a bunch of sensitive tests that take 8s on master and 1.5s on this PR. So they are 4 times faster.

    This replaces the previous PR where I only replaced the bignum code: https://github.com/bitpay/bitcore/pull/406

    opened by rxc-ai 20
  • Rounding error and incorrect fee

    Rounding error and incorrect fee

    I tried to create a transaction with an output of 81.99 mBTC and a fee of 10 bits. But because 81.99 * 100000 becomes 8198999.999999999 I actually created a transaction with a non-integer amount of satoshis. This should simply have failed (or at most rounded to 81.99000 satoshis) but instead bitcore seems to have truncated it down to 8198999 satoshis because the resulting transaction was:

    https://test-insight.bitpay.com/tx/8ed23b2513a8960e78602d2fb5b9e12eb7ba922f63ada6ddc4a75faf44f50e31

    Since I didn't specify a change address, this also affected the fee, which became 1001 even though I explicitly specified it to be 1000.

    So I see 2 bugs here:

    1. A non-integer amount of satoshis was truncated without error.
    2. A transaction was serialized with a fee different from the explicitly specified fee.
    confirmed bug 
    opened by dskloet 19
  • Modularize bitcore

    Modularize bitcore

    Bitcore is monolithic and inappropriately large for many applications. Although it is possible to use bitcore in small pieces (by compiling only desired components for the browser, or lazy loading modules in node), it would be more compatible with the npm ecosystem to use distinct modules for each component.

    These modules might be:

    • bitcore-buffer (buffer library equal to Buffer in node but with pure js versions for the browser)
    • bitcore-bignum (bignum library with pure js and openssl versions)
    • bitcore-point (elliptic curve crypto with pure js and openssl versions)
    • bitcore-curve (secp256k1 curve params)
    • bitcore-hash (hash functions with pure js and openssl versions)
    • bitcore-key (private/public keys, signing, encryption)
    • bitcore-address (addresses, private key import format, base58)
    • bitcore-tx (Transaction + TransactionBuilder)
    • bitcore-wallet (collections of private keys - maybe include copay multisig wallet logic?)
    • bitcore-sin (SINs)
    • bitcore-peer (network connections - node-only)
    • bitcore-script (and script interpreter)
    • bitcore-bip32
    • bitcore-electrum
    • bitcore-armory

    ...and then of course "bitcore" would include all of these in one monolithlic library (where you would still have the ability using browserify to compile only the pieces you want).

    Besides making it easier to use the individual components of bitcore, this would also make it easier to make updates to individual bitcore components without having to release a whole new bitcore. It was mentioned by @martindale ( https://github.com/bitpay/bitcore/issues/255 ) that express recently did this ( https://github.com/visionmedia/express/wiki/Migrating-from-3.x-to-4.x ).

    enhancement epic 
    opened by rxc-ai 19
  • Feature/create tx

    Feature/create tx

    This implements the method #create in Transactions. Its aims to provide a much simpler interface to create new transactions. Some auxiliary functions were added in Transaction and Address. The test were updated to cover the new code.

    The raw output transaction from some given inputs are compared in the tests with the (hardcoded) output of createrawtransaction from bitcoind. The parameters to generate those outputs in bitcoind are included for validation.

    ~~In a future PR the transaction signing (#sign) will be implemented~~ .sign is provided to sign a transaction using a given key array.

    opened by matiu 19
  • Bitcored v5.0 switch from Bcoin to other node

    Bitcored v5.0 switch from Bcoin to other node

    I upgraded to Bitcore 5 beta4,

    To switch underlying Bitcoin implementations, you can point Bitcore to any full node which supports the Bitcoin P2P protocol, even another fork of Bitcoin. And since you won't need to fork Bitcore's codebase to do it, switching implementations is easier than ever. You can choose which Bitcoin transaction validation rules you want to use, whether Segwit or different block sizes.

    How do I disable the built-in Bcoin node and make Bitcore point to my Bitcoin Cash node instead?

    I'm currently running a Bitcoin Cash full node with this configuration:

    server=1
    whitelist=127.0.0.1
    txindex=1
    addressindex=1
    timestampindex=1
    spentindex=1
    zmqpubrawtx=tcp://127.0.0.1:28332
    zmqpubhashblock=tcp://127.0.0.1:28332
    rpcallowip=127.0.0.1
    rpcuser=...
    rpcpassword=...
    
    opened by got3nks 18
  • Failed at the bitcore-node@3.1.3 preinstall script './scripts/download'

    Failed at the [email protected] preinstall script './scripts/download'

    -edit- The issue seems to be with the bitcore-node NPM module concerning unsupported i686 architecture. There seems to be a proposed fix, but it has yet to be merged. (https://github.com/bitpay/bitcore-node/pull/486)

    I cannot get Bitcore to install on Ubuntu or Whonix. I have successfully gotten it to install on Centos 7 and have finished development of my project, but I would like to deploy on a Debian distro rather than Red Hat. For some reason, NPM will not install Bitcore on the Debian distros specified above. Below are the exact steps that I am performing on a fresh OS install via Virtual Box.

    First we have to install NVM, which is a Node.js version manager. Bitcore is reportedly only compatible with Node.js version 4.6.0. We will use NVM to install that version.

    https://github.com/creationix/nvm#install-script sudo apt-get install git-all sudo curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash

    At this point, close and reopen your terminal so that NVM will be detected. To verify NVM has been installed, do.. command -v nvm Which should output ‘nvm’. Next we’ll install bitcore.

    https://bitcore.io/guides/full-node/ nvm install v4.6.0 sudo apt-get install libzmq3-dev build-essential npm install -g bitcore

    Below is the output that I am getting.

    `user@host:~$ npm install -g bitcore

    [email protected] preinstall /home/user/.nvm/versions/node/v4.6.0/lib/node_modules/bitcore/node_modules/bitcore-node ./scripts/download Downloading bitcoin: https://github.com/bitpay/bitcoin/releases/download/v0.12.1-bitcore-4/ npm ERR! Linux 3.16.0-4-686-pae npm ERR! argv "/home/user/.nvm/versions/node/v4.6.0/bin/node" "/home/user/.nvm/versions/node/v4.6.0/bin/npm" "install" "-g" "bitcore" npm ERR! node v4.6.0 npm ERR! npm v2.15.9 npm ERR! code ELIFECYCLE npm ERR! [email protected] preinstall: ./scripts/download npm ERR! Exit status 22 npm ERR! npm ERR! Failed at the [email protected] preinstall script './scripts/download'. npm ERR! This is most likely a problem with the bitcore-node package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! ./scripts/download npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs bitcore-node npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm ERR! npm owner ls bitcore-node npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /home/user/npm-debug.log user@host:~$ `

    If any other info is needed, I will do my best to provide it.

    opened by Noperslol123 18
  • [Bitcore-Node] Fix Unspent Coins with spentTxid

    [Bitcore-Node] Fix Unspent Coins with spentTxid

    This PR adds a new migration script that checks all unspent coins that have a spentTxid and sets the spentTxid to an empty string. It also checks to verify that the coin is unspent before updating.

    This script is mostly a copy of the original (now renamed) migration script.

    Location of changes are:

    • (99) Where the stream query is defined
    • (136) Catch for when a coin is actually spent - updated to log any records that catch here as this is not expected
    • (179) Write to file if any "actually spent" coins showed up from our query

    Also updated the original migration script to match a uniform naming scheme for the migration scripts and to set the spentTxid when it updates a record. This would be useful to anyone who runs the script in the future though unnecessary if the second migration script is used.

    opened by escottalexander 0
  • Update docs

    Update docs

    Just a made a few changes that bring clarity to the docs. Let me know if there is a better way to describe anything or if anything I removed should be added back in.

    opened by escottalexander 0
  • Get `bitcore-lib-cash` up to date with BCH mainnet

    Get `bitcore-lib-cash` up to date with BCH mainnet

    This PR gets bitcore-lib-cash up to date with the most recent Bitcoin Cash network upgrade (May 15, 2022) by implementing transaction introspective opcodes and 64-bit script integers and ensures that bitcore-lib-cash's script interpreter passes all of BCHN's latest script test vectors.

    Additionally, since Libauth's vmb_tests.json contain more rigorous transaction introspection test vectors than BCHN's script_tests.json, this PR ensures that bitcore-lib-cash's script interpreter passes those as well.

    Please note that the majority of this diff is comprised of script_tests.json and vmb_tests.json. The code changes are much smaller and can be viewed on their own in the 3rd commit.

    opened by msalcala11 0
  • [Bitcore-Node] ETH Syncing Updates

    [Bitcore-Node] ETH Syncing Updates

    This fixes a couple issues found in the multi-threaded ETH syncing functionality.

    1. A index was not being used properly so the mongo instance threw MongoError: errmsg: "Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.". This would force the sync process to exit without performing the verification step. If later restarted without multithreaded syncing enabled, it would begin to rollback ~100 blocks at a time because periodic blocks lacked the nextBlockHash property (the getBlockSyncGaps method is what throws the mongo error and later in that method it sets the nextBlockHash).
    2. During the multithreaded sync, after all the blocks had been obtained, when any block gaps were returned it would not reliably sync the returned blocks (due to a race condition?)

    I also added some logging around the process of filling block gaps.

    opened by escottalexander 0
Releases(v8.22.2)
  • v8.22.2(Aug 31, 2020)

  • v8.16.2(Mar 20, 2020)

  • v8.1.0(Feb 27, 2019)

    All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

    8.1.0 (2019-02-27)

    Bug Fixes

    • do not remove scripts from outputs (0d9dc85)
    • failed verification if customData is object (1848cd5)
    • Fix callback name (44a45de)
    • fix variable typo for paypro. (6db7923)
    • handle outgoing TXs foreign crafted (869840e)
    • show message unconfirmed transactions if there is not transaction confirmed yet (aea2af5)
    • node: fix test (06dee24)
    • show tx without input addres. Show type of address for tx out (fb00366)
    • bitcore-node: set all indexes to build in the background (107fe0b)
    • lib-cash: match bitcore-lib estimateFee fix (8650345)
    • node: config and rate limit (d352b20)
    • node: config properties could be undefined (6fd40d0)
    • node: config should use merge, findOneAndUpdate should return new (8ecd8d6)
    • node: fix some logging (da5ede5)
    • node: fixing the repair script so we can repair while a node is syncing (b1b1e17)
    • node: race condition rejects (d47ffb3)
    • node: remove wallet from websockets (b1a2d63)
    • node: removing confirmations (51ccf3f)
    • node: removing limits on wallet address endpoint (8b1515b)
    • typo - s/Payment/PaymentACK/ (7b408c3)
    • wrong output value calculation in _buildTx (2e1cc88)
    • node: removing unneeded properties (7f2ad9f)
    • node: resync uses connect (74df9b8)
    • node: stream has a memory leak, use event emitter instead (d256e5c)
    • server: Fix unconfirmed utxo results (72bf2bb)
    • sync: handle sync node going awol (372b273)

    Features

    • api: Adds check wallet endpoint (a606095)
    • api: break balance response into confirmed and unconfirmed components (894cec5)
    • api: cache fee estimates that hit rpc (d752027)
    • api: Rate Limits (cee765f)
    • config: expand '~' for BITCORE_CONFIG_PATH (db5a17e)
    • gitignore: untracked vim/mac files (8f5fb27)
    • insight: begin building out blocks view, related components (92f0259)
    • insight: block detail view (3d50203)
    • insight: scaffold routing, continue building out blocks view (afdc409)
    • node: dependency injection / config (640310c)
    • node: scaffold search (0d19ada)
    • service: support multiple sync nodes (66385ce)
    • sync: prune mempool transactions and coins when conflicting ones come in (18ffda1)
    • tests: Add v8 history testing template (904cbd4)

    Performance Improvements

    • api: stream wallet address import process (e0333f8)
    • api: transaction list performance enhancements (f2d6ec9)
    • db: wallet partial indexes (65e72d4)
    • sync: add utxo cache behavior to coin spend (3dd7521)
    • sync: lra cache address encoding of output scripts (6892f43)
    • wallet api: improve wallet transaction list performance (7491e6f)

    BREAKING CHANGES

    • api: balance response has changed from {balance: number} to {confirmed: number, unconfirmed: number}
    • wallet api: no longer page based on _id

    8.0.0 (2019-02-27)

    Bug Fixes

    • bitcore-node: set all indexes to build in the background (107fe0b)
    • lib-cash: match bitcore-lib estimateFee fix (8650345)
    • node: config and rate limit (d352b20)
    • node: config properties could be undefined (6fd40d0)
    • node: config should use merge, findOneAndUpdate should return new (8ecd8d6)
    • node: fix some logging (da5ede5)
    • node: fix test (06dee24)
    • node: fixing the repair script so we can repair while a node is syncing (b1b1e17)
    • Fix callback name (44a45de)
    • node: race condition rejects (d47ffb3)
    • node: remove wallet from websockets (b1a2d63)
    • node: removing confirmations (51ccf3f)
    • node: removing limits on wallet address endpoint (8b1515b)
    • node: removing unneeded properties (7f2ad9f)
    • node: resync uses connect (74df9b8)
    • node: stream has a memory leak, use event emitter instead (d256e5c)
    • server: Fix unconfirmed utxo results (72bf2bb)
    • sync: handle sync node going awol (372b273)

    Features

    • api: Adds check wallet endpoint (a606095)
    • api: break balance response into confirmed and unconfirmed components (894cec5)
    • api: cache fee estimates that hit rpc (d752027)
    • api: Rate Limits (cee765f)
    • config: expand '~' for BITCORE_CONFIG_PATH (db5a17e)
    • gitignore: untracked vim/mac files (8f5fb27)
    • insight: begin building out blocks view, related components (92f0259)
    • insight: block detail view (3d50203)
    • insight: scaffold routing, continue building out blocks view (afdc409)
    • node: dependency injection / config (640310c)
    • node: scaffold search (0d19ada)
    • service: support multiple sync nodes (66385ce)
    • sync: prune mempool transactions and coins when conflicting ones come in (18ffda1)
    • tests: Add v8 history testing template (904cbd4)

    Performance Improvements

    • api: stream wallet address import process (e0333f8)
    • api: transaction list performance enhancements (f2d6ec9)
    • db: wallet partial indexes (65e72d4)
    • sync: add utxo cache behavior to coin spend (3dd7521)
    • sync: lra cache address encoding of output scripts (6892f43)
    • wallet api: improve wallet transaction list performance (7491e6f)

    BREAKING CHANGES

    • api: balance response has changed from {balance: number} to {confirmed: number, unconfirmed: number}
    • wallet api: no longer page based on _id
    Source code(tar.gz)
    Source code(zip)
  • v4.1.0(Jun 27, 2016)

    This is a minor release without API changes and if upgrading from 4.0.0 does NOT require a database reindex. It includes an update to bitcoin consensus rules for BIP68, BIP112 and BIP113 with the bitcoin-0.12.1-bitcore release (see https://github.com/bitpay/bitcore-node/pull/457), and fixes for two mempool index related bugs (see https://github.com/bitpay/bitcoin/pull/18).

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0(Jun 20, 2016)

    This is a major release with several API changes and an update to use Bitcoin v0.12.0 and requires a database reindex. Bitcore now starts bitcoind as a child process and communicates via ZMQ/RPC, address indexes are now built and queried from Bitcoin directly using a branch with additional indexing options added, more information is at: https://bitcore.io/bitcoin

    Please see https://github.com/bitpay/bitcore-node/blob/f72fe82c6037011220bd7936bf3baa263ce59a00/docs/upgrade.md for more details on upgrading.

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Jan 28, 2016)

    This is a major release with only a few breaking API changes in the address service of bitcore-node. This update requires a database reindex, please see https://github.com/bitpay/bitcore-node/blob/master/docs/services/db.md#how-to-reindex for recreating the database if upgrading from a previous version.

    Bitcore Node

    • Memory optimizations for large queries as well as configurable limits (https://github.com/bitpay/bitcore-node/pull/392)
    • Resolves a database bug for intentionally created unspendable p2sh and p2pkh address hash collisions in database indexes (https://github.com/bitpay/bitcore-node/pull/379).
    • Various bug fixes and updates

    Insight API

    • Block height is included in transaction responses (https://github.com/bitpay/insight-api/pull/434)
    • Fixed bug with urlencoded data (https://github.com/bitpay/insight-api/pull/422)
    • Various miner info updates

    Bitcore Library

    • transaction.fromObject support for pay-to-public-key previous outputs (https://github.com/bitpay/bitcore-lib/pull/37)
    • Bug fix for signature.isLowS (https://github.com/bitpay/bitcore-lib/pull/17)
    • Support for signing non-p2sh multisig added (https://github.com/bitpay/bitcore-lib/pull/12)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Nov 4, 2015)

    This is a major release with a few breaking API changes to bitcore-node, here is a full list:

    • Node.js v4.2 LTS is now supported: https://github.com/bitpay/bitcore-node/pull/348
    • Significant memory optimizations have been made: https://github.com/bitpay/bitcore-node/pull/352
    • Syncing percentages are more accurate: https://github.com/bitpay/insight-api/pull/410
    • Insight API now has configurable caching for endpoints: https://github.com/bitpay/insight-api/pull/412
    • Bitcore services now have access to an express subapp: https://github.com/bitpay/bitcore-node/pull/355

    Breaking API Changes:

    • address service resetMempoolIndex method has been removed: https://github.com/bitpay/bitcore-node/pull/352
    • db service runAllMempoolIndexes has been removed: https://github.com/bitpay/bitcore-node/pull/352
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Nov 4, 2015)

    This is a major release without any breaking API changes, however there are significant changes to the organization of modules. All of the core library functionality has been moved to bitcore-lib, and bitcore is now a metapackage that includes bitcore-lib, bitcore-node, insight-api and insight-ui. Two new executables, bitcore and bitcored, can now be installed in your path globally to run a full node and block explorer in two commands:

    npm install -g bitcore
    bitcored
    

    For more information please see:

    • https://blog.bitpay.com/bitcore-v1
    • https://bitcore.io/guides/full-node
    Source code(tar.gz)
    Source code(zip)
  • v0.13.0(Aug 19, 2015)

    This is a minor release and includes a significant API change relating to the standard methods toJSON/fromJSON. When updating it's important to note that toJSON is now compatible with JSON.stringify and will work as expected and calling JSON.stringify on any Bitcore object, and toJSON called directly will not return a string. The method fromJSON has be replaced with fromObject and JSON is expected to be parsed prior to instantiating a Bitcore object, see #1312 for the full details.

    There have been a number of bug fixes and performance improvements since the v0.12.0 release. Block parsing should be around 30 times faster, including other performance improvements related to recognizing script types in support of bitcore-node.

    Here is a summary of the changes:

    • Keys
      • #1317 Restore error when trying to derive a hardened path with HDPublicKey
      • #1268 PrivateKey alternative networks bug fix
      • #1262 PrivateKey instantiation bug fixes
      • #1218 PublicKey toObject bug with invalid buffer
    • General
      • #1312 toJSON compatible with JSON.stringify
      • #1311 toObject includes hash for block and transaction
      • #1279 Optimizations for BufferReader.readUInt64LEBN
      • #1278 Signature nhashtype bug fix
      • #1253 BN fromString base parameter
      • #1250 Bug fix for public key compact signatures
      • #1227 versionGuard improvements
      • #1208 Bug fix with big numbers (BN) >= 2 ^ 52
      • #1205 Block parsing bug fixes
    • Transaction
      • #1301 Signing for public-key-out utxos
      • #1271 Fee estimation fixes
      • #1264 sortOutputs bug fix
      • #1248 Fix bug with misleading getSerializationError
      • #1235 clearOutputs for payment channel support
      • #1229 Fixes for getSerializationError tests
      • #1226 getSerializationError refactoring
      • #1214 Transaction fee consistency check
      • #1213 Fix bug with Transaction isFullySigned
    • Script
      • #1298 Performance improvements for isPublicKeyOut
      • #1296 Performance improvements for toAddress and related
      • #1295 added toASM and fromASM
      • #1287 CHECKLOCKTIMEVERIFY was added
      • #1284 hasDefinedHashtype bug fix
      • #1276 getSignatureOperationsCount was added
      • #1239 getData bug fixes with empty OP_RETURN
      • #1231 toObject includes hex for handling invalid scripts
      • #1216 Invalid script buffer handling bug fix
      • #1207 Bug fix with recognizing p2sh inputs

    Thanks to all of the contributors: @brandonrobertz, @braydonf, @carnesen, @dskloet, @eordano, @fanatid, @greggzigler, @isocolsky, @maraoz, @matiu, @mpolci, @mruddy and @pnagurny

    Source code(tar.gz)
    Source code(zip)
  • v0.12.0(Apr 29, 2015)

    Minor release with some API changes.

    • Add inputAmount and outputAmount members to Transaction
    • Increase coverage for Input and Output, and fix some bugs
    • Add shuffleOutputs function to Transaction to randomize outputs for privacy.
    • Refactor Address<->Script relation:
      • Adds Address.payingTo(script), which returns a p2sh address paying to that script
      • Address.fromScript now works for p2sh in, p2sh out, p2pkh in, and p2pkh out, and returns the Address that can be found inside the script.
      • 100% coverage on Address
      • Fix bug in Script.isScriptHashIn
    • Lazy loading for xpubkey in HDPrivateKey, increases performance.
    • Network Fixes to better support alternative networks.
    • Fix bug in Script.isPublicKeyHashOut
    • Allow addresses to have surrounding whitespace in validation (easier UI handling of addresses)
    • Increase Script test coverage.
    • Sighash: remove dead code branch
    • Fix Block#toObject API

    Thanks to @carnesen, @fanatid, @dcousens for your contributions!

    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Feb 25, 2015)

    Minor release.

    • Added MerkleBlock model.
    • Added team's pgp public keys to README for signed releases verification.
    • Fix bug on hdprivate key generation.
    • Transaction: Better granularity on serialize() checks, added Transaction#getSerializationError.
    • Transaction: Add check for output amount > input amount.
    • Transaction: Update dust amount from 5430 to 546 (See: https://github.com/bitcoin/bitcoin/commit/6a4c196dd64da2fd33dc7ae77a8cdd3e4cf0eff1).
    • Documentation fixes.

    Special thanks to @throughnothing, @dskloet, and @micro-machine

    Source code(tar.gz)
    Source code(zip)
  • v0.10.4(Feb 18, 2015)

    Weekly maintenance release.

    • New examples section on README: https://github.com/bitpay/bitcore#examples
    • Various improvements to bitcore-p2p
    • Transaction: Add check for small fees
    • Transaction: Check that threshold is less than amount of signatures in multisig transactions
    • Script: Update max length for standard opreturn to 80
    • Minor code refactors
    • Releases are now PGP signed by one of the main contributors (see bitcore.min.js.sig and bitcore.js.sig in https://github.com/bitpay/bitcore/commit/2670cd1ac5ec1742aae0599e1583c063415959ff)

    Thanks @thofmann, @elichai, and @throughnothing for your contributions.

    Source code(tar.gz)
    Source code(zip)
    bitcore.min.js(536.44 KB)
    bitcore.min.js.sig(287 bytes)
  • v0.10.3(Feb 13, 2015)

  • v0.10.0(Feb 13, 2015)

    Minor release with various bug fixes, code optimizations, and a new module

    • New bitcore-message module for bitcoin message signing and verification. Check it out: https://github.com/bitpay/bitcore-message.
    • Transaction:
      • Add locktime handling methods like getLockTime, lockUntilBlockHeight and lockUntilDate.
      • Add removeInput method.
      • Several bug fixes on serialization/deserialization to JSON.
      • OP_RETURN is no longer considered dust.
      • Fix inspect method so it doesn't fail on incomplete TX.
      • Better error message on unsupported input types.
      • Fix bug in change and fee calculation.
    • Significant performance improvement on bn.js usage.
    • Expose lodash dependency to optimize submodule sizes for browser bundles.
    • Add fromBuffer and toBuffer to PrivateKey, HDPrivateKey and HDPublicKey.
    • Add Signature subclass for Transaction Signatures.
    • Fix HD path parsing for some edge cases.
    • Improve docs.
    Source code(tar.gz)
    Source code(zip)
  • v0.9.4(Feb 13, 2015)

  • v0.9.5(Feb 4, 2015)

  • v0.9.0(Jan 21, 2015)

    This is a project restructuring and general polishing release. The main changes are:

    • Modularize bitcore and separate some functionality into other subprojects:
      • https://github.com/bitpay/bitcore-ecies (Elliptic Curve Integrated Encryption Scheme)
      • https://github.com/bitpay/bitcore-mnemonic (BIP39 Mnemonics)
      • https://github.com/bitpay/bitcore-payment-protocol (BIP70 Payment Protocol support)
      • https://github.com/bitpay/bitcore-p2p (Interface to the bitcoin P2P network)
      • https://github.com/bitpay/bitcore-channel (Payment channels smart contract support)
      • https://github.com/bitpay/bitcore-explorers (Blockchain APIs)
    • Various Transaction and Block bugfixes
    • Added .toScriptHashOut() to scripts
    • Improved test coverage
    • Added zuul for cloud testing in many browsers
    Source code(tar.gz)
    Source code(zip)
  • v0.8.6(Jan 7, 2015)

    • Improved README and CONTRIBUTING files
    • Add fiat rate methods to Unit class
    • Add getData functionality to Script
    • Add Insight and Transaction.UnspentOutput classes for easier utxo data fetching
    • Increased test coverage
    • Add validations to derivation path
    • Fixed all bugs in IE11
    • Minor bugfixes
    Source code(tar.gz)
    Source code(zip)
  • v0.8.5(Dec 24, 2014)

    • Review and polish many classes (Unit, URI, Interpreter,PublicKey, PrivateKey, Network, Block, Blockheader, BN, ECDSA, random, hash)
    • Test coverage increased
    • Improved documentation
    • Added release automation script (gulp release)
    Source code(tar.gz)
    Source code(zip)
  • v0.8.2(Dec 19, 2014)

    Minor fixes to the code base:

    • Fix critical bugs when creating P2SH and Multisig scripts (commits https://github.com/bitpay/bitcore/commit/a35293756657f72ec4d96e1e6dbb5b4a9bf7408e, and https://github.com/bitpay/bitcore/commit/de4413745dfd3ead813c77f7efa548ae8ef5cc44)
    • Updated the transaction creation interface, adding checks on serialization and a uncheckedSerialize in case no check is necessary https://github.com/bitpay/bitcore/commit/e5631b1a69c303efa40b94cf432616d5fb82653e
    • Updated documentation
    Source code(tar.gz)
    Source code(zip)
  • v0.8.1(Dec 17, 2014)

    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
    Source code(tar.gz)
    Source code(zip)
  • v0.1.41(Dec 1, 2014)

  • v0.1.40(Nov 17, 2014)

  • v0.1.39(Oct 27, 2014)

  • v0.1.38(Oct 20, 2014)

  • v0.1.37(Oct 6, 2014)

  • v0.1.19(May 13, 2014)

    • Adds SecureRandom to generate cryptographically secure random numbers in node and browsers.
    • Adds Armory key derivation support
    • Many fixes in Script and ScriptInterpreter. Bitcoin core test passing!
    • new BIP32 Interface, name changed to HierarchicalKey
    • removes unused code in Block & Transaction.

    Documentation

    • Adds CONTRIBUTING.md
    • Adds docco grunt target, and documentation for TransactionBuilder and Address.
    Source code(tar.gz)
    Source code(zip)
🤖 GPU accelerated Neural networks in JavaScript for Browsers and Node.js

brain.js GPU accelerated Neural networks in JavaScript for Browsers and Node.js About brain.js is a GPU accelerated library for Neural Networks writte

brain.js 13.4k Jan 7, 2023
Graph theory (network) library for visualisation and analysis

Cytoscape.js Graph theory (network) library for visualisation and analysis : https://js.cytoscape.org Description Cytoscape.js is a fully featured gra

Cytoscape Consortium 8.9k Jan 9, 2023
A JavaScript PDF generation library for Node and the browser

PDFKit A JavaScript PDF generation library for Node and the browser. Description PDFKit is a PDF document generation library for Node and the browser

null 8.5k Jan 2, 2023
A pure JavaScript implementation of git for node and browsers!

isomorphic-git isomorphic-git is a pure JavaScript reimplementation of git that works in both Node.js and browser JavaScript environments. It can read

isomorphic-git 6.7k Jan 4, 2023
Yet another Linux distribution for voice-enabled IoT and embrace Web standards

YodaOS is Yet another Linux Distribution for voice-enabled IoT and embrace Web standards, thus it uses JavaScript as the main application/scripting la

YODAOS Project 1.2k Dec 22, 2022
Mad science p2p pipe across the web using webrtc that uses your Github private/public key for authentication and a signalhub for discovery

webcat Mad science p2p pipe across the web using webrtc that uses your Github private/public key for authentication and a signalhub for discovery We a

Mathias Buus 428 Dec 30, 2022
New tab browser extension (aka startpage) with nord colors and a dancing goose.

Nordic goose Nordic goose is a new tab extension (aka startpage) with nord colors and a dancing goose. Features: ?? Look at a dancing goose ?? Beautif

PrettyCoffee 9 Dec 30, 2022
A full stack for bitcoin and blockchain-based applications

Bitcore Infrastructure to build Bitcoin and blockchain-based applications for the next generation of financial technology. Getting Started Requirement

BitPay 4.5k Jan 4, 2023
It is a very basic implementation of how blockchain works, mainly how the bitcoin blockchain.

How to run this program npm install node core/blockchain.js What is this It is a very basic implementation of how blockchain works, mainly how the bit

Anish Jain 12 May 9, 2022
This is a full-stack exercise tracker web application built using the MERN (MongoDB, ExpressJS, ReactJS, NodeJS) stack. You can easily track your exercises with this Full-Stack Web Application.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

WMouton 2 Dec 25, 2021
Bitcoin terminal tracker is a terminal app which allow you to track bitcoin price from your terminal

BTC Terminal Tracker Bitcoin terminal tracker is a terminal app which allow you to track bitcoin price from your terminal. In this version (V1.2) I ch

Sina yeganeh 9 Jul 27, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Lecture by lecture commits of the https://www.udemy.com/build-blockchain-full-stack/ course

Commit-by-commit breakdown of "Build a Blockchain & Cryptocurrency | Full-Stack Edition" This is a commit-by-commit breakdown of "Build a Blockchain &

David Katz 9 Dec 12, 2022
Full-Stack Instgram Clone using MERN Stack and Socket.io

Instagram MERN Full-Stack Instgram Clone using MERN Stack and Socket.io Visit Now ?? ??️ Tech Stack Frontend: Backend: Realtime Communication: Cloud S

Jigar Sable 326 Dec 27, 2022
It is a solo Project and In this repo I try to build a E-Commerce full-stack website with MERN stack technologies. For Practice purpose.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Alok Kumar 5 Aug 3, 2022
ApostropheCMS is a full-featured, open-source CMS built with Node.js that seeks to empower organizations by combining in-context editing and headless architecture in a full-stack JS environment.

ApostropheCMS ApostropheCMS is a full-featured, open source CMS built with Node.js that seeks to empower organizations by combining in-context editing

Apostrophe Technologies 3.9k Jan 4, 2023
ApostropheCMS is a full-featured, open-source CMS built with Node.js that seeks to empower organizations by combining in-context editing and headless architecture in a full-stack JS environment.

ApostropheCMS ApostropheCMS is a full-featured, open source CMS built with Node.js that seeks to empower organizations by combining in-context editing

Apostrophe Technologies 3.9k Jan 4, 2023
A Full Stack Amazon Clone which created using ReactJS with full E-Commerce Functionality!!

Amazon Clone with ReactJS A small web app that tries to imitate the desktop web version of amazon site, you can add items to the basket, delete them,

Özge Coşkun Gürsucu 50 Oct 3, 2022