# GS++
GS++ is a fast SLP indexer, validator, and graph search server. This means you can query for the full DAG of transactions in order to trustlessly verify SLP transactions.
# Introduction
GS++ is a suite of tools built in C++ for high-performance SLP. The main program is a server, which returns graph search data using gRPC. The auxillary tools exist for debugging and testing SLP implementations.
# Install
# Install Third Party Libs
Install recent version of Boost (opens new window)
Install SWIG 3 (opens new window)
Follow this (opens new window) guide to install gRPC and Protobuf for your system if it is not already installed.
# Build
The initial build might take a long time to download and build required dependencies, so grab some coffee.
From root directory build like normal CMake program.
mkdir build
cd build
cmake ..
make -j
You can use -DCMAKE_BUILD_TYPE=Debug
for debug build.
# Running
Make sure you have bitcoind running and the following options enabled in bitcoin.conf
:
txindex=1
server=1
rpcuser=bitcoin
rpcpassword=password
rpcport=8332
rpcworkqueue=10000
rpcthreads=8
zmqpubhashtx=tcp://*:28332
zmqpubrawtx=tcp://*:28332
zmqpubhashblock=tcp://*:28332
zmqpubrawblock=tcp://*:28332
# Configuration
Set up a config.toml
and start gs++ like so:
$ gs++ config.toml
These options should be self-explanatory, if not please ask in Telegram or open an issue:
[cache]
dir = "/tmp/gs++/cache"
[grpc]
host = "0.0.0.0"
port = 50051
[bitcoind]
host = "0.0.0.0"
port = 8332
user = "user"
pass = "password"
zmq_port = 28332
[utxo]
checkpoint = "./utxo-checkpoints/QmXkBQJrMKkCKNbwv4m5xtnqwU9Sq7kucPigvZW8mWxcrv"
block_height = 543375
block_hash = "0000000000000000000000000000000000000000000000000000000000000000"
checkpoint_load = false
checkpoint_save = false
[zmqpub]
bind = "tcp://127.0.0.1:29069"
[graphsearch]
max_exclusion_set_size = 5
[services]
graphsearch = true
graphsearch_rpc = true
zmq = true
grpc = true
utxosync = false
cache = true
zmqpub = true
# ZMQ Publishing
gs++ publishes valid SLP transactions with ZMQ, similarly to how bitcoind
publishes valid transactions. You can connect directly to the zmq port configured in config.toml
or use slpstream to listen to new transactions and blocks from gs++.
# Further Reading
Make sure to check out the collection of tools included with GS++ to help develop on SLP.