8000 GitHub - qubic/core-bob · GitHub
[go: up one dir, main page]

Skip to content
qubicPublic

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

326 Commits

Folders and files

Repository files navigation

Qubic Bob

A high-performance indexer for the Qubic blockchain network. Bob syncs tick data, verifies integrity via logging events, indexes blockchain data, and exposes it through an Ethereum-style JSON-RPC 2.0 API (HTTP & WebSocket) and a REST API.


Table of Contents


System Requirements

Resource Minimum Recommended
CPU 4 cores (AVX2 support required) 8 cores
RAM 12 GB 16 GB
Storage 600 GB fast SSD / NVMe (stores 2 epochs of data, default) 1 TB fast SSD / NVMe

Quick Start

Choose the method that best fits your setup. If you just want to get Bob running with minimal effort, Option 1 is the way to go.

Option 1: Docker Hub (Recommended)

The standalone image bundles Bob, Redis, and Kvrocks into a single container -- no extra services needed. If you already run your own KeyDB/Kvrocks instances, you can point Bob to them via the config file (see Configuration).

docker run -d --name qubic-bob \
  -p 21842:21842 \
  -p 40420:40420 \
  -v qubic-bob-redis:/data/redis \
  -v qubic-bob-kvrocks:/data/kvrocks \
  -v qubic-bob-data:/data/bob \
  qubiccore/bob:latest

Check the logs to make sure everything is running:

docker logs -f qubic-bob

Ports exposed:

Port Purpose
21842 P2P server
40420 REST API & JSON-RPC

Option 2: Docker from Source

If you want to build the Docker image yourself instead of pulling from Docker Hub, first change image: qubiccore/bob:latest to image: qubic-bob in docker/examples/docker-compose.yml so compose uses your build:

git clone https://github.com/qubic/core-bob.git
cd core-bob
docker build -t qubic-bob -f docker/Dockerfile .
docker compose -f docker/examples/docker-compose.yml up -d

Check the logs:

docker logs -f qubic-bob

Option 3: Build from Source (No Docker)

1. Install system dependencies

sudo apt-get update
sudo apt install -y vim net-tools tmux cmake git libjsoncpp-dev \
  build-essential uuid-dev libhiredis-dev zlib1g-dev unzip

2. Install KeyDB

KeyDB is a Redis-compatible database required by Bob. Follow the KeyDB installation guide.

Optionally, install KVRocks for additional disk-based persistence: KVRocks installation guide.

3. Build Bob

git clone https://github.com/qubic/core-bob.git
cd core-bob
mkdir build && cd build
cmake ..
make bob -j$(nproc)

4. Run

./bob <path-to-config.json>

For example, using the provided default config:

./bob ../default_config_bob.json

Configuration

An example configuration file, default_config_bob.json, ships with the repository. Below is an annotated reference:

{
  "p2p_node": ["BM:157.180.10.49:21841:0-0-0-0", "BM:65.109.122.174:21841:0-0-0-0"],
  "request_cycle_ms": 100,
  "request_logging_cycle_ms": 30,
  "future_offset": 10,
  "log_level": "info",
  "keydb_url": "tcp://127.0.0.1:6379",
  "run_server": false,
  "server_port": 21842,
  "arbitrator_identity": "AFZPUAIYVPNUYGJRQVLUKOPPVLHAZQTGLYAAUUNBXFTVTAMSBKQBLEIEPCVJ",
  "tick_storage_mode": "kvrocks",
  "kvrocks_url": "tcp://127.0.0.1:6666",
  "tx_storage_mode": "kvrocks",
  "tx_tick_to_live": 1000,
  "max_thread": 8,
  "spam_qu_threshold": 0
}

Key fields:

Field Description
p2p_node Nodes to sync from. Format: BM:IP:PORT[:P0-P1-P2-P3] or bob:IP:PORT[:P0-P1-P2-P3]. Empty or omitted = peer discovery
request_cycle_ms Interval (ms) for tick data requests. Too low may overload the node
future_offset How many ticks ahead to request. Too high may overload the node
keydb_url Redis / KeyDB connection URL
run_server Set to true to serve data to other nodes on server_port
tick_storage_mode "kvrocks", "lastNTick", or "free"
tx_storage_mode "lastNTick", "kvrocks", or "free"
log_level "trace", "debug", "info", "warn", "error", "critical", or "off". Omitted or unknown = logging off
max_thread Max worker threads (0 = auto)
spam_qu_threshold Minimum QU amount to index a transfer

Usage

Once Bob is running you can interact with it via the JSON-RPC or REST API:

  • JSON-RPC (HTTP): POST http://localhost:40420/qubic
  • JSON-RPC (WebSocket): ws://localhost:40420/ws/qubic

Example JSON-RPC call:

curl -s -X POST http://localhost:40420/qubic \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"qubic_getTickNumber","params":[],"id":1}'

Releases

  • RELEASE_NOTES.md — human-written changelog of user-visible changes (RPC, REST, WS, config) per version, including migration notes for breaking changes.
  • GitHub Releases — every tagged version (v*.*.*) triggers a GitHub Action that builds and publishes the docker image to Docker Hub as qubiccore/bob:<version> and qubiccore/bob:latest. The release page lists each tag with its build artifacts and the diff against the previous tag.
  • Docker Hub — pre-built images at qubiccore/bob. Use :latest for the newest stable, or pin to a specific :1.4.x tag for reproducibility.

Useful Resources

Using Bob

Inside Bob

About

No description, website, or topics prov 4C3B ided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0