Browse by type
FulcrumA fast & nimble SPV server for Bitcoin Cash, Bitcoin BTC, and Litecoin.
For more information, visit The Official Fulcrum Website™️.
(C) 2019-2025 Calin Culianu calin.culianu@gmail.com
GPLv3. See the included LICENSE.txt file or visit gnu.org and read the license.

C++20 using multi-threaded and asynchronous programming techniques.litecoind with -rpcserialversion=1 to have your daemon return transactions in pre-mweb format which is understood by most Electrum-LTC clients.txindex=1.zmqpubhashblock=tcp://0.0.0.0:8433 in your bitcoin.conf file (zmq is only available on: Core, BCHN, BU 1.9.1+, or Litecoin Core).Qt Core & Qt Networking libraries 5.15.2 or above (I use 6.10.0 myself). Qt 5.15.1 (or earlier) is not supported.libzmq 4.x development headers and library (also known as libzmq3-dev on Debian/Ubuntu and zeromq-devel on Fedora). Fulcrum will run just fine without linking against libzmq, but it will run better if you do link against libzmq and also turn on zmqpubhashblock notifications in bitcoind (zmq is only available on: Core, BCHN, or BU 1.9.1+).libminiupnpc 2.x/3.x development headers and library (also known as libminiupnpc-dev on Debuan/Ubuntu and miniupnpc-devel on Fedora). Fulcrum will run just fine without this library, but it is needed if you want Fulcrum to use UPnP to open up firewall ports on your router (CLI arg: --upnp, conf var: upnp=true).C++20 compiler. clang-17 or g++-13 are recommended. MSVC on Windows is not supported (please use MinGW G++ instead, which ships with Qt Open Source Edition for Windows)../Fulcrum -h to see the CLI options.Compiling is for those users that do not wish to use the pre-built static binaries provided here, or for users on platforms for which the static binaries are not provided (such as FreeBSD or macOS). To compile, it's recommended you use the Qt Creator IDE.
Fulcrum.pro file.You may also build from the CLI (on Linux and MacOS):
qmake in your path and all the requisite Qt5 dev libs installed.qmake (to generate the Makefile)make -j8 (replace 8 here with the number of cores on your machine)A note for Linux users: You may have to install the Qt5 or Qt6 networking package separately such as libqt5network5 or libqt6network6 (depending on your distribution). You also need libbz2-dev otherwise compilation will fail. If you are having trouble finding the required Qt versions, you can try this link: https://launchpad.net/~beineri (for Ubuntu/Debian ppas). For best results, you may wish to also ensure you have the following installed: pkg-config, libzmq (aka libzmq3-dev on Debian/Ubuntu, zeromq-devel on Fedora), and libminiupnpc (aka libminiupnpc-dev on Debian/Ubuntu, miniupnpc-devel on Fedora).
A note for Windows users: Qt 5.15.2 (or above) with MinGW G++ 11.x.x (or above) is the compiler/Qt kit you should be using. MSVC is not supported by this codebase at the present time.
If you have problems compiling, the most likely culprit would be your compiler not being C++20 compliant (please use a recent version of gcc or clang on Linux, Apple's Xcode on Mac, or MinGW G++ 11.x or above on Windows).
The other likely culprit is the fact that at the present time I have included a statically-built librocksdb in the codebase. There are versions of this library for Windows, Mac, and Linux included right in the source tree, and Fulcrum.pro looks for them and links to them. Instructions are included within the Fulcrum.pro project file about how to build your own static librocksdb if the bundled one does not work on your system.
If you are still having trouble, file an issue here in this github.
librocksdb.so (experimental)You may optionally build against the system rocksdb (Linux only) if your distribution offers rocksdb version 6.6.4 or newer.
qmake LIBS+=-lrocksdb (to generate the Makefile without linking to the included static lib)make clean && make -j8 (replace 8 here with the number of cores on your machine)Note: Some Linux distributions have been known to package librocksdb.so incorrectly. See here for an example, so until I can be confident most distributions do it right, I am considering using the system librocksdb.so an experimental feature for the time being (in principle it should work ok if the library is compiled correctly).
libzmq is detected and used (optional but recommended)Ensure that libzmq3 (Debian/Ubuntu) and/or zeromq-devel (Fedora/Redhat) is installed, and that pkg-config is also installed. If on Unix (macOS, Linux, or Windows MinGW), then ideally the qmake step will find libzmq on your system and automatically use it. If that is not the case, you may try passing flags to qmake such as LIBS+="-L/path/to/libdir_containting_libzmq -lzmq" and INCLUDEPATH+="/path/to/dir_containing_zmq_h" as arguments when you invoke qmake. Using libzmq is optional but highly recommended. If you have trouble getting Fulcrum to compile against your libzmq, open a new issue and maybe I can help.
libminiupnpc is detected and used (optional)Ensure that libminiupnpc (Debian/Ubuntu) and/or miniupnpc-devel (Fedora/Redhat) is installed, and that pkg-config is also installed. If on Unix (macOS, Linux, or Windows MinGW), then ideally the qmake step will find libminiupnpc on your system and automatically use it. If that is not the case, you may try passing flags to qmake such as LIBS+="-L/path/to/dir_containing_libminiupnpc -lminiupnpc" and INCLUDEPATH+="/path/to/dir_containing_miniupnpc_headers_dir" as arguments when you invoke qmake. Using libminiupnpc is optional but necessary if you want UPnP support in Fulcrum. If you have trouble getting Fulcrum to compile against your libminiupnpc, open a new issue and maybe I can help.
Fulcrum.exeNew! I recently added a mechanism using Docker to build a statically-linked
Windows .exe. This build is 100% compatible with any stock 64-bit Windows 7 or
above system -- you don't have to install anything -- it just works. You can
download the pre-built .exe yourself here from the releases
page.
If you want to build it yourself though, you can do so, but it requires Docker on either a MacOS or a Linux host system (it may work on Windows too with Linux tools for Windows -- but I haven't tried it myself). It builds all dependencies, including a static Qt and static rocksdb. As such, it may take a while so be patient.
Make sure Docker is installed such that you don't need to use sudo. This is the default on MacOS, but on Linux you may need to follow these instructions here.
Run the build script:
$ contrib/build/build.sh windows master
The first argument to the script is the platform to build (in this case
windows). The second argument to the script is a git branch or tag to
build. Two .exe files will be generated, Fulcrum.exe and FulcrumAdmin.exe,
which will appear in dist/win after the build process completes.
Note: You can point the build script to any repository, not just this one, by giving it a GIT_REPO environment variable:
$ GIT_REPO=https://github.com/myusername/MyFulcrumFork contrib/build/build.sh windows master
$ GIT_REPO=$(pwd) contrib/build/build.sh windows master
New! I recently added a mechanism using Docker to build a statically-linked Linux executable. This build is 100% compatible with most stock 64-bit Linux systems with a new enough glibc. So on a relatively modern Linux system, you don't have to install anything -- it just works. You can download the pre-built binary yourself here from the releases page.
If you want to build it yourself though, you can do so, but it requires Docker on either a MacOS or a Linux host system. It builds a static Qt and static rocksdb.
Make sure Docker is installed such that you don't need to use sudo. This is the default on MacOS, but on Linux you may need to follow these instructions here.
Run the build script:
$ contrib/build/build.sh linux master
The first argument to the script is the platform to build (in this case
linux). The second argument to the script is a git branch or tag to build.
Note: You can point the build script to any repository, not just this one, by giving it a GIT_REPO environment variable:
$ GIT_REPO=https://github.com/myusername/MyFulcrumFork contrib/build/build.sh linux master
$ GIT_REPO=$(pwd) contrib/build/build.sh linux master
Execute the binary, with -h to see the built-in help, e.g. ./Fulcrum -h. You can set most options from the CLI, but you can also specify a config file as an argument. See:
Fulcrum requires a bitcoind instance running either on testnet or mainnet (or regtest for testing), which you must tell it about via the CLI options or via the config file. You also need to tell it what port(s) to listen on and optionally what SSL certificates to use (if using SSL). Note: Electron Cash (and/or Electrum) at this time no longer support connecting to non-SSL servers, so you should probably configure SSL for production use.
It is recommended you specify a data dir (-D via CLI or datadir= via config file) on an SSD drive for best results. Synching against testnet should take you about 10-20 minutes (more
$ claude mcp add Fulcrum \
-- python -m otcore.mcp_server <graph>