LicenseRef-PublicDomain licensed by Jean-Pierre Rupp
Maintained by xenog@protonmail.com

Module documentation for 0.2.3

Haskoin Store

Full blockchain index & store featuring:

  • Bitcoin Cash (BCH) & Bitcoin SegWit (BTC) support.
  • Address balance, transaction, and UTXO index.
  • Mempool support (SPV).
  • XPub balance, transaction, and UTXO support.
  • Persistent storage using RocksDB.
  • RESTful endpoints for blockchain data.
  • Concurrent non-blocking transactional design.
  • JSON and Protocol Buffers serialization support.

Install

  • Get Stack.
  • Get Nix.
  • Clone this repository git clone https://github.com/haskoin/haskoin-store.
  • From the root of this repository run stack --nix build --copy-bins.
  • File will usually be installed in ~/.local/bin/haskoin-store.

API Documentation

Changes

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

0.14.1

Added

  • Extra debugging around code that freezes.

Changed

  • Bump dependency on haskoin-node.

0.14.0

Removed

  • Dump slow protobuf serialization.

Added

  • Add custom serialization.
  • Extra debug logging.

Changed

  • Bump haskoin-core nad haskoin-node.

0.13.1

Changed

  • Bump haskoin-node in stack.yaml.
  • Do not send empty getdata messages.

0.13.0

Added

  • Primitive content negotiation for web exceptions.
  • Protobuf support for errors.
  • Protobuf support for tranasction ids.

Changed

  • Protobuf format changed in non-backwards-compatible manner for transaction ids.

0.12.0

Added

  • Support for binary serialization using Protocol Buffers.
  • New endpoints for binary raw transactions (not hex-encoded).

Changed

  • Services field now a hex string instead of a number to avoid overflowing signed 64-bit integer.
  • Flatten list of block data objects when responding to request for multiple block heights.
  • Errors now reported in plain text without container JSON object.
  • Transaction broadcasts are responded to with transaction id in plaintext hex (no JSON).
  • Remove database snapshots to improve performance.

0.11.2

Changed

  • Fix duplicate mempool transaction announcements in event stream.

0.11.1

Removed

  • Removed latest block time check.

0.11.0

Changed

  • Improve post transactions endpoint.

0.10.1

Changed

  • Fix bug where transaction lists from multiple addresses would sort incorrectly.
  • Address gap reduced to 20.

0.10.0

Removed

  • Remove addresses from transaction lists.
  • No longer use container objects for xpub transactions.

0.9.3

Added

  • Permissive CORS headers to allow queries from any domain.
  • Improved documentation using real-world examples from the BCH testnet.

0.9.2

Added

  • HTTP JSON API switch to turn off transaction list when retrieving blocks.

0.9.1

Added

  • Total block fees.
  • Total block outputs.
  • Block subsidy.

Changed

  • Do not consider the blocks less one block away from headers as out of sync in health check.
  • Health check now returns HTTP 503 when not OK or out of sync.

0.9.0

Added

  • Version to health check output.
  • Block weight for segwit.
  • Transaction weight for segwit.

0.8.1

Added

  • Health check endpoint.

0.8.0

Added

  • Limits and skips.
  • Add timestamps to transactions.
  • Add transaction count to address balance object.
  • Add Merkle root to block data.
  • Total funds received by an address now shows up in balance.
  • Balances for any address that ever had funds show up in xpub endpoints.

Changed

  • Data model update.
  • Performance improvement for xpub calls.
  • Transactions are returned in reverse mempool/block order (highest or most recent first).
  • Balance objects do not get deleted from database ever.

0.6.9

Changed

  • Reduce number of coinbase checks to 10,000 ancestors.

0.6.8

Changed

  • Further optimize coinbase after height checks.

0.6.7

Changed

  • Impose restrictions on recursion for coinbase after height checks.

0.6.6

Added

  • Check whether a transaction can be traced back to a coinbase after certain height.

0.6.5

Changed

  • Delete transactions in reverse topological order when reverting a block.

0.6.4

Changed

  • Do not fail silently when importing orphan transactions into the mempool.

0.6.3

Changed

  • Dummy release to bump haskoin-node in stack.yaml.

0.6.2

Changed

  • Correct bug where coinbase transactions weren’t properly flagged.

0.6.1

Changed

  • Compatibility with Bitcoin Cash hard fork.
  • Various bug fixes.

0.6.0

Added

  • Address balance cache in memory.

Changed

  • Simplify data model further.
  • Fix bug importing outputs with UTXO cache.
  • Unspent balances cannot be negative.

0.5.0

Added

  • Add UTXO cache in memory.
  • Get transactions with witness data in segwit networks.

Changed

  • Paths for derivations in xpubs is a list and no longer a string.
  • Various bug fixes.

0.4.2

Removed

  • Remove extended public key itself from output of relevant endpoints to save bandwidth.

0.4.1

Changed

  • Fix bug when deleting coinbase transactions.
  • Extended public key API support.

0.4.0

Changed

  • Generate events for mempool transactions.
  • Respond with entire block data when querying blocks by height.

0.3.1

Changed

  • Do not import transactions to mempool while not synced.
  • Only sync mempool against a single peer.
  • Allow duplicate transactions to fix re-introduced sync bug.

0.3.0

Added

  • Update dependencies.
  • Keep orphan blocks and deleted transactions in database.
  • Add a mainchain field for block data and a deleted field for transactions.
  • Stream records for performance.
  • Show witness data for transaction inputs in SegWit network.
  • Support RBF in SegWit network.

Changed

  • Refactor all data access code away from actor.
  • Refactor import logic away from actor.
  • Abstract data access using typeclasses.
  • Implement data access using clean layered architecture.
  • Make most of import logic code pure.
  • Database now in db as opposed to blocks directory.
  • Use latest haskoin-node.

Removed

  • Remove some data from peer information output.
  • Remove full transaction from address transaction data.
  • Remove limits from address transaction data.
  • Remove block data from previous output.
  • Remove spender from JSON response when output not spent.
  • Remove block hash from block reference.

0.2.3

Removed

  • Do not send transaction notifications if a block is being imported.

0.2.2

Added

  • Peer information endpoint.

Changed

  • Update haskoin-node.

0.2.1

Changed

  • Fix tests

0.2.0

Added

  • Documentation everywhere.
  • Ability to retrieve address transactions.

Changed

  • New versions of NQE and Haskoin Node upstream.
  • Improve and simplify API.
  • Multi-element endpoints return arrays of arrays.
  • Database snapshots for all queries are now mandatory.

Removed

  • Retrieving unspent and spent outputs for an address.
  • Redundant API endpoints for multiple elements.

0.1.3

Changed

  • Fix a bug with transaction notifications.
  • Improve handling orphan transactions.

0.1.2

Changed

  • Specify dependencies better.

0.1.1

Changed

  • Dependency secp256k1 is now secp256k1-haskell.

0.1.0

Added

  • New CHANGELOG.md file.
  • Bitcoin (BTC) and Bitcoin Cash (BCH) compatibility.
  • RocksDB database.
  • Mempool support.
  • HTTP streaming for events.
  • CashAddr support.
  • Bech32 support.
  • Rate limits.

Changed

  • Split out of former haskoin repository.
  • Use hpack and package.yaml.

Removed

  • Removed Stylish Haskell configuration file.
  • Remvoed haskoin-core and haskoin-wallet packages from this repository.
comments powered byDisqus