/insight-bitcore-btx

A full stack for Bitcore (BTX) and blockchain-based applications

Primary LanguageJavaScriptMIT LicenseMIT

Bitcore

Circle CI

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

Easy Setup Guide for BTX (with docker-compose)

Checkout the repo bitcore-btx
git clone https://github.com/dalijolijo/bitcore-btx.git
cd bitcore-btx
git checkout master
Install docker.io and docker-compose v.3
cd bitcore-btx
./install_docker.sh
Modify Insight IP in docker-compose.yml file

Change YOUR_IP in environment variable - "API_PREFIX=http://YOUR_IP:3000/api"

  insight:
    image: insight
    build:
      context: .
      dockerfile: ./Dockerfile.insight.btx
    container_name: insight
    restart: always
    networks:
      insight-net:
        ipv4_address: 172.21.0.14
    ports:
      - 80:80
    environment:
      - "ENV=prod"
      - "CHAIN=BTX"
      - "NETWORK=mainnet"
      - "API_PREFIX=http://YOUR_IP:3000/api"
    depends_on:
      - bitcore-node
Starting Bitcore-Node, BTX Node, Mongo DB and Insight in Docker Containers
cd bitcore-btx
docker-compose up -d -f docker-compose.btx.json
Show logging of docker containers
#show all running docker containers
docker ps

#show logs of all docker containers
docker-compose logs -f

#show only a specific docker container log
docker logs -f <DOCKER NAME>
Check Insight and API in your browser

Find the REST API Documentation with examples here

Getting Started on Ubuntu (without docker-compose)

Requirements

  • Trusted P2P Peer
  • MongoDB Server >= v3.4
  • docker-compose v3
  • Node.js v8

Preparations

Checkout the repo bitcore-btx
git clone https://github.com/dalijolijo/bitcore-btx.git
cd bitcore-btx
git checkout master
npm install -g [--unsafe-perm]

Hint: After error, cleanup with:

npm cache clean --force
rm -rf ./node_modules
rm -rf packages/*/node_modules
Install docker-compose v3
./install_docker.sh
Install Node.js v18
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
apt-get install nodejs

Setup Guide for BTX

1. Setup Bitcore config for BTX

Configfile bitcore.config.json for BTX Mainnet
{
  "bitcoreNode": {
    "chains": {
      "BTX": {
        "mainnet": {
          "parentChain": "BTC",
          "forkHeight": 492820,
          "trustedPeers": [
            {
              "host": "127.0.0.1",
              "port": 40008
            }
          ],
          "rpc": {
            "host": "127.0.0.1",
            "port": 40009,
            "username": "username",
            "password": "password"
          }
        }
      }
    }
  }
}

2. Setup BTX Node

Build Docker Image for BTX Node
cd bitcore-btx/docker-bitcored
docker build -t dalijolijo/bitcored:<VERSION> .
# Example for VERSION 0.15.2.1
docker build -t dalijolijo/bitcored:0.15.2.1 .

3. Run BTX Node

Starting BTX Node Docker Container
cd bitcore-btx/docker-bitcored
docker run --rm --name bitcored -v /home/.bitcore:/data -d -p 40008:40008 -p 40009:40009 dalijolijo/bitcored:<VERSION> -rpcuser=<USER> -rpcpassword=<PWD>
# Example for VERSION 0.15.2.1
docker run --rm --name bitcored -v /home/.bitcore:/data -d -p 40008:40008 -p 40009:40009 dalijolijo/bitcored:0.15.2.1 -rpcuser=btx -rpcpassword=btx
Check if BTX Node is fully synced
docker logs --tail 30 bitcored

4. Start MongoDB Server with docker-compose

Configfile docker-compose.yml for MongoDB Server
version: '3'
services:
  database:
    image: mongo:3.4-jessie
    ports:
    - 27017:27017
    volumes:
    - /data/db:/data/db
Starting MongoDB Server Docker Container
cd bitcore-btx
docker-compose up -d
docker-compose logs

5. Start Bitcore

Starting Bitcore
npm run node

Setup Guide for BTC

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"
          }
        }
      },
      "BTX": {
        "mainnet": {
          "parentChain": "BTC",
          "forkHeight": 492820,
          "trustedPeers": [
            {
              "host": "127.0.0.1",
              "port": 40008
            }
          ],
          "rpc": {
            "host": "127.0.0.1",
            "port": 40009,
            "username": "username",
            "password": "password"
          }
        },
        "regtest": {
          "chainSource": "p2p",
          "trustedPeers": [
            {
              "host": "127.0.0.1",
              "port": 40020
            }
          ],
          "rpc": {
            "host": "127.0.0.1",
            "port": 40021,
            "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

Starting 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 Lib BTX - A pure and powerful JavaScript Bitcore BTX 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
  • Bitcore P2P BTX - The peer-to-peer networking protocol for BTX
  • 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.