A C++ based indexer for blockfiles that works on Bitcoin and its derivatives https://blkidx.org/
Branch: master
Clone or download
Latest commit f2ae12d Jul 18, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
build/base Fixed caching issue with apt repositories Oct 26, 2017
coins Prelminary support for other chains Nov 11, 2017
src Add CORS header Jan 17, 2018
.dockerignore Added the data subdir to .dockerignore to prevent sending it to the b… Oct 26, 2017
.gitignore Reversed hashes by convention, added some extra comments to the code Oct 27, 2017
.gitmodules Added addressTxos and addressTxosSince Oct 22, 2017
CODE_OF_CONDUCT.md Add Code of Conduct Jun 18, 2018
Dockerfile Moved the coin parameters to a separate settings file so we can index… Nov 11, 2017
LICENSE
Makefile Various fixes for Bitcoin Nov 16, 2017
README.md Added pre-release warning Nov 23, 2017
bitcoin-mainnet.yml Rewrote readme and changed network name to match the new name of bloc… Nov 23, 2017
bitcoin-testnet.yml Rewrote readme and changed network name to match the new name of bloc… Nov 23, 2017
build.sh Clean up dependencies and build dockerfiles Oct 21, 2017
docker-compose.yml Prelminary support for other chains Nov 11, 2017
litecoin-mainnet.yml Rewrote readme and changed network name to match the new name of bloc… Nov 23, 2017
litecoin-testnet.yml Rewrote readme and changed network name to match the new name of bloc… Nov 23, 2017
vertcoin-mainnet.yml Added ?raw=1 parameter to outpointSpend and outpointSpends APIs Dec 7, 2017
vertcoin-testnet.yml Rewrote readme and changed network name to match the new name of bloc… Nov 23, 2017

README.md

C++ Blockchain Indexer

https://blkidx.org/

Pre-release warning

IMPORTANT: This software is still under active development. Do not depend on this for production situations.

What is this?

This project aims to be a independant blockchain indexer for Bitcoin-based blockchains. It can read the blockfiles directly and indexes these blocks to allow a number of queries via its built-in HTTP service:

  • Fetch TXOs for an address
    • Optionally only return new TXOs since a particular height
    • Return only unspent TXOs
  • Fetch the balance for an address
  • Check if one or more outpoints are spent
  • Get a transaction
  • Send a transaction
  • Return the most recent blocks (hash, height, time)
  • Return basic sync status (highest block on coind, highest block in index)

Supported elements

The indexer currently supports:

  • Standard P2PK and P2SH scripts
  • Segwit P2WPK and P2WSH scripts (using bech32 address formats)
  • Multi-sig scripts

Compatible coins

The indexer should work for any Bitcoin derivative. The indexer is working for Vertcoin and Litecoin, whereas Bitcoin support is currently under development.

Docker

The indexer is built around Docker. It is possible to compile and run it on bare Linux, but to get running quickly it's easier to use Docker. There's docker-compose files available for all the supported coins.

Get started

  • Install Docker

  • Since the containers for the indexer will run in an isolated network, we first have to create it:

docker network create blockchain-indexer
  • Clone the repository and build the images
git clone https://github.com/gertjaap/blockchain-indexer
cd blockchain-indexer
./build.sh
  • Once the images are built, you can start the indexer -for example- for Vertcoin:
docker-compose -f vertcoin-mainnet.yml up -d
  • You can now check you running containers and look up the IP address for the indexer:
docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                   NAMES
034492bce34b        vtc-wallet-middleware   "/root/sources/vtc..."   5 seconds ago       Up 1 second         8888/tcp                                blockchainindexer_vtc-middleware-cpp-main_1
48c3446ed3df        lukechilds/vertcoind    "init -rpcuser=mid..."   5 seconds ago       Up 3 seconds        0.0.0.0:5889->5889/tcp, 8332-8333/tcp   blockchainindexer_vertcoind-main_1
  • Using the ID of the container you can find out its IP address
docker inspect 034492bce34b
{
    {...}
        "Networks": {
                "blockchain-indexer": {
                    {...}
                    "IPAddress": "172.19.0.3",
                    {...}
                }
            }
}
  • You can then look at the status by opening the URL in the browser port 8888:
http://172.19.0.3:8888/blocks