What's new:
This release of Fulcrum adds UPnP support for Fulcrum. This allows automatic port mapping for installs behind NAT firewalls. Enable with --upnp
from the CLI or upnp=true
in the conf file. In addition, the bitcoind ZMQ hashtx
message is now supported (if configured on the bitcoind side, also needs to be enabled on the Fulcrum side with conf arg: zmq_allow_hashtx=true
).
Also included in this release are some mempool-related performance improvements and some internal code quality improvements.
Summary of changes:
- Added support for UPnP. Requires the
libminiupnpc
library be detected and linked at compiled-time (this is the case for the released static builds). UPnP is not used by default, but enable it if you are behind a NAT firewall and your router supports UPnP. You can use this new feature to automatically open up any non-loopback ports to the internet for incoming connections. (Enabled with CLI:--upnp
/conf file:upnp=1
) (#280). - Added support for bitcoind's ZMQ
pubhashtx
message. This means Fulcrum can be instantly-notified when new txn's show up in the bitcoind mempool and as such it should reduce latency for Fulcrum to "see" new mempool txns, at the expense of more CPU utilization. This support is off by default but can be enabled with conf file arg:zmq_allow_hashtx=true
(#262). - Improved Fulcrum's mempool model efficiency by adding parent/child links for txns (this change makes mempool txn removal faster and as a consequence it makes block processing faster for new blocks being added to the chain tip and being reconciled with the mempool) (#265).
- Fixed a rare and esoteric bug where Fulcrum would announce its TCP/SSL/WS/WSS port(s) to peers even if it was actually listening on a loopback interface for those ports (thus the announcement was useless and should ideally not show up/be suppressed).
- Added support for Unix domain sockets in ZeroMQ notifications. (@doitwithnotepad, #267)
- Assorted code quality/readability/etc improvements.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.12.0-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.12.0-arm64-linux.tar.gz
, which is compiled on anUbuntu 20.04
system (for ARM64 bit) using Docker.
All of the above binaries contain jemalloc
, libzmq
, libminiupnpc
, Qt5Core
, Qt5Network
(from Qt 5.15.6), OpenSSL 1.1.1
and libstdc++
statically linked. They still require libz2
, and the right libc
version as dynamic libs on your system (but those are usually present if you are on a recent system).
Pre-compiled binaries for Windows
Fulcrum-1.12.0-win64.zip
- Pre-built, statically linked Windows version.- It should "just work" on any Windows 10 or above 64-bit system.
- Includes is a statically-linked
Fulcrum.exe
, built withjemalloc
,libzmq
,libminiupnpc
,Qt 5.15.13
,OpenSSL 3.3.0
, andgcc 13.2.0
. - Additionally,
FulcrumAdmin.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exe
as containing a virus. This is because many heuristic scanners dislike the use ofPyInstaller
onefile .exe's. See: #203. Please ignore this -- we contain no viruses! Also please complain to your virus software vendor about this.
- NOTE Windows virus scanners have been known to erroneously identify
See the .asc
file for signatures; I signed the sha256 hashes of all the release binaries. My gpg public key can be obtained here: https://github.com/Electron-Cash/keys-n-hashes/blob/master/pubkeys/calinkey.txt
Binary builds for macOS coming soon -- Until then you can always build from source!