BlockFlock

command module
v0.0.0-...-47bc026 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2024 License: AGPL-3.0 Imports: 19 Imported by: 0

README

BlockFlock

BlockFlock is a simple caching layer compatible with the Hive-Engine protocol. It is designed to be used in front of a classic Hive Engine node.

Build and Install

You will need Go 1.22+ installed.

git clone https://github.com/CADawg/BlockFlock
cd BlockFlock
go build
cp config.example.json config.json
./BlockFlock
# Or if you want to automatically download blocks over time
./BlockFlock auto

What does it cache?

It caches only one call, getBlockInfo. This is because it takes a fair time to request and the data doesn't change once it's set. Otherwise, it pipes the request straight through to the real hive engine node.

Database

This is built on top of the very fast BadgerDB, and once a block is cached, it can respond within 3 milliseconds (excluding network time). This is considerably faster than the 40 - 70 ms I got when requesting from the node directly from the same rack in the datacenter.

Error Handling

When an incorrect input is specified, if it can't be decoded, it will not pass it on to the hive engine node, and you will receive a response as follows:

{
    "jsonrpc": "2.0",
    "id": 0,
    "error": {
        "code": -69,
        "message":"invalid character '}' looking for beginning of value"
    }
}

Compatibility

Apart from the error cases where there is a malformed input, we aim to be 1:1 compatible with Hive Engine, please report any inconsistencies in the issues tab.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL