DigiByte Rosetta Node

DigiByte Rosetta Node

This node implementation uses the experimental Rosetta Node SDK.
Check out the Community thread here about the SDK here: Rosetta SDK (Javascript).

Foreword

Ideally, we would have released and announced the source code weeks in the past.
However, how things go, we had to build our own UTXO indexing middleware in Javascript, and I had to test all of it very thoroughly, which took me a while.

But here we are, having a very reliable Rosetta Node Implementation of DigiByte.

Features

A UTXO-Indexer Middleware was implemented to enable balance lookups. Historical balance lookups are supported as well. By using the Syncer class of the Rosetta SDK, the sync has become exceptionally reliable and even reorgs are supported very well. LevelDB (the same database that is being used in Bitcoin and its forks) is used to store the UTXO data. A space efficient encoding was chosen in order to avoid redundancy and to save some disk space (usage: 6.7G, as of 08th September, 2020), as described here.

  • Fast, reliable sync
  • Space efficient, non-redundant implementation
  • Tested with addresses that have more than 399k transactions (historical balance calculation may take several seconds for these accounts)
  • Balances are subtracted and UTXOs removed on reorgs (which happen several times a day in livenet)
  • Automated Docker Testing environment, which consists of an offline and online environment and will be tested automatically using rosetta-cli.

Installation Instructions

Check out the instructions on how to deploy a node here: https://github.com/SmartArray/digibyte-rosetta-server.git.

State of Development

The implementation of the Data API is completed and was exhaustively tested using rosetta-cli and several other tests.
The implementation of the Construction API is not finished yet, as I ran into some issues regarding the automated testing. This should be resolved very soon.

I am looking forward to hear your ideas, criticism and general opinions.