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.
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 Third Party Libs
Install recent version of Boost
Install SWIG 3
Follow this guide to install gRPC and Protobuf for your system if it is not already installed.
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.
Make sure you have bitcoind running and the following options enabled in
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
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.