Releases: cculianu/Fulcrum
Release list
Fulcrum 2.1.1
What's New:
Fulcrum 2.1.1 is a bugfix version of the 2.x series. Most significantly, it fixes a bug when using BTC on the Windows version of Fulcrum, where sometimes you can get spammy messages about exhausted Win32 API handles. (See: #324 ). This issue has now been fixed. It also contains other minor nits and fixups and 1 new JSON-RPC protocol method.
Detailed Summary of Changes (vs v2.1.0)
- Add RPC method:
blockchain.address.get_status&blockchain.scripthash.get_status(#316), providing a way to query scripthash status without actually subscribing. Thanks to @mainnet-pat for suggesting this change. - Minor nit/tweak to
BTC::AddresstoCScript() - Performance: Add ability of
CScriptto push byte blobs from std::span - Internals: Fix
isWindows()returning the wrong result on Windows inCommon.h - PeerMgr: Throttle new connections in process() (fixes issue #324)
- On unclean shutdown and restart, lower the number of blocks we undo to 1 (was: 6).
- Fix for compile issue with rocksdb v11 or greater (thus fixing a build issue on latest arch linux).
- Code nits: Moved the code to figure out rocksdb version into
Storage/Compat.cpp - Pulled latest changes from BCHN sources for:
bitcoin/token.h, plus some code quality tweaks tobitcoin/token.h.
Pre-compiled Binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-2.1.1-x86_64-linux.tar.gz, which is compiled on anUbuntu 18.04system using Docker.Fulcrum-2.1.1-arm64-linux.tar.gz, which is compiled on anUbuntu 22.04system (for ARM64 bit) using Docker.
All of the above binaries contain jemalloc, libzmq, libminiupnpc, Qt6Core, Qt6Network (from Qt 6.10.0), 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-2.1.1-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 6.10.10,OpenSSL 3.3.0, andgcc 15.2.0. - Additionally,
FulcrumAdmin.exeis included which is the python script, but made into aonefile .exeusing PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exeas containing a virus. This is because many heuristic scanners dislike the use ofPyInstalleronefile .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!
Fulcrum 2.1.0
What's New:
Fulcrum 2.1.0 is a minor upgrade version of the 2.x series. Most significantly, it contains support for the new Electrum Cash protocol v1.6 (which has some minor tweaks, mainly for BTC). This release also contains some bugfixes, optimizations and improvements to peering, and some dependent packages were updated for the static build.
Detailed Summary of Changes vs v2.0.0
- Added support for Electrum Cash protocol v1.6. See: https://electrum-cash-protocol.readthedocs.io/en/latest/protocol-changes.html#version-1-6-0 for differences vs. 1.4 & 1.5.
- Note: As usual, if the client declares protocol <1.6, nothing changes.
- This upgrade to the protocol came from the BTC people and mainly concerns BTC. See: spesmilo/electrum-protocol#6
- Note for BTC admins: If you want to take full advantage of protocol 1.6, please upgrade your node to Bitcoin Core or Bitcoin Knots v28.0.0 or above.
- Improvements to the logic and code of the
PeerMgrwhich controls peering (federation) behavior of Fulcrum:- Fulcrum no longer maintains active connections to all peers in the "Good" list, as it has always done. Instead, it simply disconnects from "Good" peers and periodically reconnects to them to refresh them (every 30 mins).
- Motivation: The previous behavior of keeping connections alive to all "Good" turned-out to annoy some people, in particular on the BTC mainnet network, because there are so many BTC peers that Fulcrum can eat 200+ connections on any 1 server doing this. See: #307 .
- Fulcrum tries harder now to reconnect to seemingly-failed peers on their SSL port if their TCP port has failed.
- Motivation: Many servers declare a TCP port that doesn't work, but their SSL port works ok.
- Fulcrum no longer maintains active connections to all peers in the "Good" list, as it has always done. Instead, it simply disconnects from "Good" peers and periodically reconnects to them to refresh them (every 30 mins).
- Switched all static builds to no longer use the Qt5 series but instead use the Qt6 series, specifically Qt 6.10.0.
- Motivation: Qt5 is ancient at this point and I don't trust it to not contain dragons and subtle bugs.
- Static build: Updated miniupnpc to use a custom-patched version. This fixes an esoteric crash bug when using UPnP (
--upnp) and when more than 1024 clients are connected. - Some code quality / compiler warning fixups for newer GCC, etc.
- Some updates of the codebase to use more modern C++20 features in many places.
- Updated servers.json for BCH and BTC.
Pre-compiled Binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-2.1.0-x86_64-linux.tar.gz, which is compiled on anUbuntu 18.04system using Docker.Fulcrum-2.1.0-arm64-linux.tar.gz, which is compiled on anUbuntu 22.04system (for ARM64 bit) using Docker.
All of the above binaries contain jemalloc, libzmq, libminiupnpc, Qt6Core, Qt6Network (from Qt 6.10.0), 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-2.1.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 6.10.10,OpenSSL 3.3.0, andgcc 15.2.0. - Additionally,
FulcrumAdmin.exeis included which is the python script, but made into aonefile .exeusing PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exeas containing a virus. This is because many heuristic scanners dislike the use ofPyInstalleronefile .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!
Note: If ugprading from Fulcrum 1.x, please read the below!
Brief Summary: What's New in the 2.x series
A brief summary of what Fulcrum 2.x offers vs the 1.x series:
- Database Reliability - one of the main weaknesses of Fulcrum 1.x was that should the process be killed at an inopportune time, or should abrupt powerloss or kernel-level crash occur at an inopportune time, there was always a risk that the datadir would get corrupted and the admin would be forced to do a full database resynch. This is no longer the case!
- Fulcrum 2.x series will no longer suffer from this problem and the process can be killed at any time (including abrupt powerloss), without any database corruption. At worst the last few blocks worth of data is rolled-back and Fulcrum will re-synch from the rollback point.
- It is still recommended that admins gracefully shut-down Fulcrum, however, via
SIGINT/SIGTERM/SIGQUIT(either from their init/systemd scripts or viakill -TERM <pid>, etc), and wait for it to terminate. This maximizes performance and minimizes startup times for Fulcrum the next time it is restarted.
- Platform Neutrality - database format is now 100% platform-neutral. This means it should be possible to always copy datadirs around regardless if transferring them from Windows, Linux, BSD, macOS, and regardless of platform architecture (including big endian platforms).
- Improved database performance.
Upgrading from the Fulcrum 1.x Series
Upgrade Instructions
Fulcrum 2.x has a different database format than the 1.x series. As such, you have two options for upgrading:
- Create a blank new datadir and just re-synch from block 0 (slow, but 100% reliable)
- Upgrade your existing 1.x datadir (faster, but irreversible and destructice)
To upgade your existing database, be sure to pass the one-time --db-upgrade flag to Fulcrum. It will refuse to start up if it detects that your datadir is in the old format and you did not pass this flag. This ensures that admins know what they are getting into.
Note: The upgrade process takes seconds to minutes on BCH and BTC testnet(s), maybe ~15 minutes on BCH mainnet, and around an hour or more (depending on hardware) on BTC mainnet.
--utxo-cache Removed
The --utxo-cache option has been completely removed. If you want to temporarily leverage memory to help out initial synch, use a temporary --db_mem (CLI) or db_mem= setting in the conf file to give Fulcrum more memory for initial synch, stop Fulcrum, then set it down again to a smaller value for continued operations.
Critical Note On Upgrading the DB from 1.x -> 2.x
Let it run to completion!
While Fulcrum 2.x is 100% reliable and may be killed at any time during its operation -- there is one exception to this rule: the upgrade process that converts 1.x databases -> 2.0. As such please let the upgrade process run to completion and do not kill, stop, molest, or otherwise abuse the Fulcrum process while it's upgrading the DB!!. If you do, the old 1.x database will be lost and your 2.x database will also be corrupted.
You have been warned!
Detailed Summary of Changes in 2.x vs 1.x:
- Completely redid the database format to leverage rockskdb atomicity and reliability guarantees.
- Added
--db-upgradeCLI arg (required to upgrade an existing DB from Fulcrum 1.x to 2.x format) - Added some performance improvements to the rocksdb database
- Made some tables use point-lookup optimizations
- Made all tables use 2-level indexing which is more appropriate for the way Fulcrum data is laid out
- Made some of the tables' keys be properly sorted (such as scripthash_history) -- they were not always completely sorted in an optimal fashion before, which cost a few cycles sometimes.
- Changes to make better use of
db_memdb memory (should also help slightly reduce memory consumption) - More forcefully enforce rocksdb
kNoCompressionfor all levels.
- Made the database format have a specifiec endian-ness for all data and so the database is completely cross-platform. You should now be able to copy any Fulcrum datadir from any OS and architecture to any other OS and architecture, regardless of endianness, word size, etc.
- Got rid of the entire
--utxo-cachemechanism (it's no longer compatible with Fulcrum's newfound data reliability guarantees). db_memnow defauls to 2048 MiB or 25% of total physical memory, whichever is smallerdb_max_open_filesnow defaults to 1000 (was: 40)- Internal misc. other performance fixups
- Internal code quality improvements
- Removal of some dead/unused code
- Redid some aspects of the internal unit test system, and added some unit tests
- Various build system and misc. compile issue fixes
Fulcrum 2.0
What's New:
This is a major release of Fulcrum which adds much-needed reliability and performance improvements.
The database format has been completely redone and now Fulcrum provides reliability guarantees such that Fulcrum's db can no longer get corrupted. In other words, you should never see the dreaded "your database is corrupt, please resynch"-style messages, even if Fulcrum is killed at an inopportune time.
Since the database format has been completely redone, the database is no longer backward compatible with older Fulcrum versions, but you can upgrade your existing database to the new format by passing the one-time flag --db-upgrade the first time you run Fulcrum 2.0 when upgrading from a 1.x install.
Brief Summary: What's New in 2.0
A brief summary of what Fulcrum 2.0 offers vs the 1.x series:
- Database Reliability - one of the main weaknesses of Fulcrum 1.x was that should the process be killed at an inopportune time, or should abrupt powerloss or kernel-level crash occur at an inopportune time, there was always a risk that the datadir would get corrupted and the admin would be forced to do a full database resynch. This is no longer the case!
- Fulcrum 2.x series will no longer suffer from this problem and the process can be killed at any time (including abrupt powerloss), without any database corruption. At worst the last few blocks worth of data is rolled-back and Fulcrum will re-synch from the rollback point.
- It is still recommended that admins gracefully shut-down Fulcrum, however, via
SIGINT/SIGTERM/SIGQUIT(either from their init/systemd scripts or viakill -TERM <pid>, etc), and wait for it to terminate. This maximizes performance and minimizes startup times for Fulcrum the next time it is restarted.
- Platform Neutrality - database format is now 100% platform-neutral. This means it should be possible to always copy datadirs around regardless if transferring them from Windows, Linux, BSD, macOS, and regardless of platform architecture (including big endian platforms).
- Improved database performance.
Upgrading from the Fulcrum 1.x Series
Upgrade Instructions
Fulcrum 2.0 has a different database format than the 1.x series. As such, you have two options for upgrading:
- Create a blank new datadir and just re-synch from block 0 (slow, but 100% reliable)
- Upgrade your existing 1.x datadir (faster, but irreversible and destructice)
To upgade your existing database, be sure to pass the one-time --db-upgrade flag to Fulcrum. It will refuse to start up if it detects that your datadir is in the old format and you did not pass this flag. This ensures that admins know what they are getting into.
Note: The upgrade process takes seconds to minutes on BCH and BTC testnet(s), maybe ~15 minutes on BCH mainnet, and around an hour or more (depending on hardware) on BTC mainnet.
--utxo-cache Removed
The --utxo-cache option has been completely removed. If you want to temporarily leverage memory to help out initial synch, use a temporary --db_mem (CLI) or db_mem= setting in the conf file to give Fulcrum more memory for initial synch, stop Fulcrum, then set it down again to a smaller value for continued operations.
Critical Note On Upgrading the DB from 1.x -> 2.0
Let it run to completion!
While Fulcrum 2.0 is 100% reliable and may be killed at any time during its operation -- there is one exception to this rule: the upgrade process that converts 1.x databases -> 2.0. As such please let the upgrade process run to completion and do not kill, stop, molest, or otherwise abuse the Fulcrum process while it's upgrading the DB!!. If you do, the old 1.x database will be lost and your 2.0 database will also be corrupted.
You have been warned!
Detailed Summary of Changes:
- Completely redid the database format to leverage rockskdb atomicity and reliability guarantees.
- Added
--db-upgradeCLI arg (required to upgrade an existing DB from Fulcrum 1.x to 2.0 format) - Added some performance improvements to the rocksdb database
- Made some tables use point-lookup optimizations
- Made all tables use 2-level indexing which is more appropriate for the way Fulcrum data is laid out
- Made some of the tables' keys be properly sorted (such as scripthash_history) -- they were not always completely sorted in an optimal fashion before, which cost a few cycles sometimes.
- Changes to make better use of
db_memdb memory (should also help slightly reduce memory consumption) - More forcefully enforce rocksdb
kNoCompressionfor all levels.
- Made the database format have a specifiec endian-ness for all data and so the database is completely cross-platform. You should now be able to copy any Fulcrum datadir from any OS and architecture to any other OS and architecture, regardless of endianness, word size, etc.
- Got rid of the entire
--utxo-cachemechanism (it's no longer compatible with Fulcrum's newfound data reliability guarantees). db_memnow defauls to 2048 MiB or 25% of total physical memory, whichever is smallerdb_max_open_filesnow defaults to 1000 (was: 40)- Internal misc. other performance fixups
- Internal code quality improvements
- Removal of some dead/unused code
- Redid some aspects of the internal unit test system, and added some unit tests
- Various build system and misc. compile issue fixes
Pre-compiled Binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-2.0.0-x86_64-linux.tar.gz, which is compiled on anUbuntu 18.04system using Docker.Fulcrum-2.0.0-arm64-linux.tar.gz, which is compiled on anUbuntu 22.04system (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-2.0.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.exeis included which is the python script, but made into aonefile .exeusing PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exeas containing a virus. This is because many heuristic scanners dislike the use ofPyInstalleronefile .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!
Fulcrum 2.0 Pre-Release 1 (Beta)
This is a beta test and/or pre-release version of Fulcrum 2.0.
While it has been thoroughly tested by me here on several machines -- and should be very stable -- there have been massive modifications to the database format and/or other Fulcrum internals. As such, it is best if cautious admins don't run this version until it is officially released, and more adventuresome admins that are willing to test beta software do.
Note that, like I said, it should be very stable.
Brief Summary: What's New in 2.0
A brief summary of what Fulcrum 2.0 offers vs the 1.x series:
- Database Reliability - one of the main weaknesses of Fulcrum 1.x was that should the process be killed at an inopportune time, or should abrupt powerloss or kernel-level crash occur at an inopportune time, there was always a risk that the datadir would get corrupted and the admin would be forced to do a full database resynch. This is no longer the case!
- Fulcrum 2.x series will no longer suffer from this problem and the process can be killed at any time (including abrupt powerloss), without any database corruption. At worst the last few blocks worth of data is rolled-back and Fulcrum will re-synch from the rollback point.
- It is still recommended that admins gracefully shut-down Fulcrum, however, via
SIGINT/SIGTERM/SIGQUIT(either from their init/systemd scripts or viakill -TERM <pid>, etc), and wait for it to terminate. This maximizes performance and minimizes startup times for Fulcrum the next time it is restarted.
- Database format is now 100% platform-neutral. This means it should be possible to always copy datadirs around regardless of whether one is transferring them from Windows, Linux, BSD, macOS, and regardless of platform architecture (including big endian platforms).
- Improved performance.
Upgrading from the Fulcrum 1.x Series
Upgrade Instructions
Fulcrum 2.0 has a different database format than the 1.x series. As such, you have two options for upgrading:
- Create a blank new datadir and just re-synch from block 0 (slow, but 100% reliable)
- Upgrade your existing 1.x datadir (faster, but irreversible and destructice)
To upgade your existing database, be sure to pass the one-time --db-upgrade flag to Fulcrum. It will refuse to start up if it detects that your datadir is in the old format and you did not pass this flag. This ensures that admins know what they are getting into.
Note
The --utxo-cache option has been completely removed. If you want to temporarily leverage memory to help out initial synch, use a temporary --db_mem (CLI) or db_mem= setting in the conf file to give Fulcrum more memory for initial synch, stop Fulcrum, then set it down again to a smaller value for operations.
Critical Note On Upgrading the DB from 1.x -> 2.0
Let it run to completion!
While Fulcrum 2.0 is 100% reliable and may be killed at any time during its operation -- there is one exception to this rule: the upgrade process that converts 1.x databases -> 2.0. As such please let the upgrade process run to completion and do not kill, stop, molest, or otherwise abuse the Fulcrum process while it's upgrading the DB!!. If you do, the old 1.x database will be lost and your 2.0 database will also be corrupted.
You have been warned!
Fulcrum 1.12.0
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
libminiupnpclibrary 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
pubhashtxmessage. 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.04system using Docker.Fulcrum-1.12.0-arm64-linux.tar.gz, which is compiled on anUbuntu 20.04system (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.exeis included which is the python script, but made into aonefile .exeusing PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exeas containing a virus. This is because many heuristic scanners dislike the use ofPyInstalleronefile .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!
Fulcrum 1.11.1
What's new:
This is a minor update to Fulcrum. The most significant feature added is support for BTC's new testnet4, which was recently merged into Core master but is as yet unreleased. BCH and LTC users of Fulcrum don't really have a pressing need to upgrade to this release, but are welcome to do so to take advantage of the minor performance fix contained in this release.
Summary of changes:
- Added BTC testnet4 support (auto-detected) #255. Requires a bitcoin core bitcoind built to support this new chain.
- There are currently 2 active servers, one Fulcrum, the other ElectrumX that serve blockchain data for testnet4.
- Slight performance improvement to the UTXO Cache pre-fetcher mechanism
- Various code quality fixes and nits
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.11.1-x86_64-linux.tar.gz, which is compiled on anUbuntu 18.04system using Docker.Fulcrum-1.11.1-arm64-linux.tar.gz, which is compiled on anUbuntu 20.04system (for ARM64 bit) using Docker.
All of the above binaries contain jemalloc, libzmq, 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.11.1-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,Qt 5.15.13,OpenSSL 3.3.0, andgcc 13.2.0. - Additionally,
FulcrumAdmin.exeis included which is the python script, but made into aonefile .exeusing PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exeas containing a virus. This is because many heuristic scanners dislike the use ofPyInstalleronefile .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!
Fulcrum 1.11.0
What's new:
This release brings with it performance improvements and an update to the pre-built binary's compiled-in RocksDB version (updated to latest 9.2.1). The latest RocksDB is faster and also better, so yay!
Also in this release we switched the Linux pre-built binary to statically-link libstdc++ which should improve compatibility for the binary and have it "just work" on a wider variety of systems.
NOTE: Since this release contains an updated RocksDB in the release binary, RocksDB will internally "upgrade" the data dir to the newer RocksDB format on first-run (this is fast). However, this means that users that run this version cannot "go back" to the previous Fulcrum versions before 1.11.0 with the same data dir, because RocksDB is backwards compatible but not "forward compatible".
Summary of changes:
- Rename CLI/conf file option
--fast-sync->--utxo-cache- Also renamed various conf file options that contain hyphens in their names (
-) to also work with_instead (e.g.ts-format->ts_format), so that they can be passed-in from env. vars. - Old option names that were renamed still are supported.
- Also renamed various conf file options that contain hyphens in their names (
- Switched codebase to use C++20. As a result of this, we also redid the static builds to use newer tools (e.g. gcc 13) and to also statically link
libstdc++. - Switched pre-built binaries to use newer RocksDB v9.2.1. This breaks "forward compatibility" with previous Fulcrum releases, but should bring in performance and stability improvements from latest RocksDB.
- Fixes for compatibility between datadirs copied between Windows & Unix (they should all be interoperable now).
- Updated static pre-built binaries to use latest
libzmqandlibjemalloc - Performance optimizations related to RPA indexing, in particular, testnets as well as low-core-count machines should benefit from the improvements.
- Controller: Ensure download blocks tasks use all physical CPUs.
- IPv6: Render
ip6:portas[ip6]:portin user-facing strings. Also accept this notation from the conf. file - Various fixups related to C++20 in the codebase such as fix some compile warnings, update to newer idioms such as: C++20
concept/requiresreplaced olderstd::enable_if, etc. - Fix for compiling against Qt 6.7.1
- Fixed typos in
fulcrum-example-config.conf&fulcrum-quick-config.conf - RPC: Support downloading of >1GiB blocks from bitcoind (requires Qt6)
- Fixed
assert()inController.cpp-- before this fix "Debug" builds were not working with RPA (oops! Fixed!). - Refreshed BCH & BTC compiled-in server lists
- Fix to support BU chipnet (which is reported as "chipnet" rather than "chip" by BU).
- Added
FulcrumAdminto the dockerhub docker image. - Misc. internal code quality nits, tweaks and fixes; various compiler warning fixups
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.11.0-x86_64-linux.tar.gz, which is compiled on anUbuntu 18.04system using Docker.Fulcrum-1.11.0-arm64-linux.tar.gz, which is compiled on anUbuntu 20.04system (for ARM64 bit) using Docker.
All of the above binaries contain jemalloc, libzmq, 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.11.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,Qt 5.15.13,OpenSSL 3.3.0, andgcc 13.2.0. - Additionally,
FulcrumAdmin.exeis included which is the python script, but made into aonefile .exeusing PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exeas containing a virus. This is because many heuristic scanners dislike the use ofPyInstalleronefile .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!
Fulcrum 1.10.0
What's new:
Added official Reusable Payment Address (RPA) support. A few new RPCs are offered for servers that have it enabled (default on for BCH only, off for other coins). Also fixed a few minor esoteric bugs.
Summary of changes:
- Added RPA support (#234 ). This work was community-funded. Thanks to all the contributors to my flipstarter that helped pay for this work.
- Added a new index,
rpa, which is currently only ~42M on mainnet. It starts indexing from block 825000 on mainnet (can be controlled withrpa_start_height=conf file option). - RPA is only on-by-default for BCH, off for all other coins. Can be manually enabled/disabled with
--rpaorrpa=1from conf file. - A few new RPCs are offered to clients if the index is enabled.
- Bumped Electrum Cash protocol version to 1.5.3
- Added a new index,
- Bugfix: Deal with esoteric 0-input and 0-output txns better (even though they can't happen due to consensus, there was a uint wraparound issue if they do happen to be encountered in some esoteric environments). Fixes #235.
- Bugfix: In rare circumstances, if the "Download Blocks Task" is interrupted / gets an error, one of the 3 BitcoinD client threads may go out to lunch and never become usable again to do work. Symptoms would include it spamming "Reconnecting ..." messages to the log every 5 seconds. This has been corrected.
- Lots of code refactoring and code fixups.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.10.0-x86_64-linux.tar.gz, which is compiled on anUbuntu 18.04system using Docker.Fulcrum-1.10.0-arm64-linux.tar.gz, which is compiled on anUbuntu 20.04system (for ARM64 bit) using Docker.Fulcrum-1.10.0-x86_64-linux-ub16.tar.gz, which is compiled on a stockUbuntu 16.04system (using Docker) but with g++ 8.1.0 installed from this ppa source:ppa:jonathonf/gcc-8&ppa:jonathonf/gcc
All 3 of the above binaries contain jemalloc, libzmq, Qt5Core, Qt5Network (from Qt 5.15.6), and OpenSSL 1.1.1 statically linked. They still require libz2, libstd++, and the right libc version as dynamic libs on your system (but those are usually present if you are on a recent system).
If the first regular -linux binary fails, try the second one (-linux-ub16), which should work on older systems, hopefully.
Pre-compiled binaries for Windows
Fulcrum-1.10.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,Qt 5.15.2,OpenSSL 3.0.1, andgcc 11.2.0. - Additionally,
FulcrumAdmin.exeis included which is the python script, but made into aonefile .exeusing PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exeas containing a virus. This is because many heuristic scanners dislike the use ofPyInstalleronefile .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!
Fulcrum 1.9.8
What's new:
This is a minor correctness improvement release of Fulcrum. See issue #221. Upgrading to this release is optional but is strongly recommended for BTC (and LTC) node operators since the fix contained in this release affects them. (BCH users are unaffected.)
Summary of changes:
- Fixed a correctness bug whereby the mempool fee histogram returned by the
mempool.get_fee_histogramRPC was calculating fees in sats-per-serialized-byte and not sats-per-vbyte. This affects segwit coins like LTC and BTC. BCH users are unaffected.- As a result of the histogram using the wrong fee rate (sats/B rather than sats/vB), the results were a bit too optimistic and painted a picture of a lower-fee situation than actually exists in the real mempool (this is because serialized size almost always is >= vsize, so fees computed as sats/B are usually lower than fees computed in sats/vB). See issue #221
- It is recommended that BTC and LTC server operators upgrade to Fulcrum v1.9.8 at their earliest convenience.
- Fee estimates and "distance from tip" if using Electrum BTC should now be more accurate and more in-line with what a wallet connected to ElectrumX servers would see.
- Some internal code refactoring and code cleanup to reduce boilerplate code in
src/bitcoin/transaction.handsrc/bitcoin/transaction.cpp.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.9.8-x86_64-linux.tar.gz, which is compiled on anUbuntu 18.04system using Docker.Fulcrum-1.9.8-arm64-linux.tar.gz, which is compiled on anUbuntu 20.04system (for ARM64 bit) using Docker.Fulcrum-1.9.8-x86_64-linux-ub16.tar.gz, which is compiled on a stockUbuntu 16.04system (using Docker) but with g++ 8.1.0 installed from this ppa source:ppa:jonathonf/gcc-8&ppa:jonathonf/gcc
All 3 of the above binaries contain jemalloc, libzmq, Qt5Core, Qt5Network (from Qt 5.15.6), and OpenSSL 1.1.1 statically linked. They still require libz2, libstd++, and the right libc version as dynamic libs on your system (but those are usually present if you are on a recent system).
If the first regular -linux binary fails, try the second one (-linux-ub16), which should work on older systems, hopefully.
Pre-compiled binaries for Windows
Fulcrum-1.9.8-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,Qt 5.15.2,OpenSSL 3.0.1, andgcc 11.2.0. - Additionally,
FulcrumAdmin.exeis included which is the python script, but made into aonefile .exeusing PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exeas containing a virus. This is because many heuristic scanners dislike the use ofPyInstalleronefile .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!
Fulcrum 1.9.7
What's new:
This is a bugfix release of Fulcrum. A very rare corner-case "abort" bug introduced in version 1.9.4 has been identified and fixed. See issue #214. While this bug is very rare and requires precise timing to occur, please do upgrade to 1.9.7 if you are running 1.9.4, 1.9.5 or 1.9.6 (1.9.3 and earlier are unaffected).
Summary of changes:
- Fixed a rare corner-case race condition leading to a potential "abort" out of Fulcrum (server death), in very rare cases while synching mempool. It wouldn't lead to data corruption but could be highly annoying. Probability of it occurring was close-to-but-not-0. See issue #214 and commit 34a825a.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.9.7-x86_64-linux.tar.gz, which is compiled on anUbuntu 18.04system using Docker.Fulcrum-1.9.7-arm64-linux.tar.gz, which is compiled on anUbuntu 20.04system (for ARM64 bit) using Docker.Fulcrum-1.9.7-x86_64-linux-ub16.tar.gz, which is compiled on a stockUbuntu 16.04system (using Docker) but with g++ 8.1.0 installed from this ppa source:ppa:jonathonf/gcc-8&ppa:jonathonf/gcc
All 3 of the above binaries contain jemalloc, libzmq, Qt5Core, Qt5Network (from Qt 5.15.6), and OpenSSL 1.1.1 statically linked. They still require libz2, libstd++, and the right libc version as dynamic libs on your system (but those are usually present if you are on a recent system).
If the first regular -linux binary fails, try the second one (-linux-ub16), which should work on older systems, hopefully.
Pre-compiled binaries for Windows
Fulcrum-1.9.7-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,Qt 5.15.2,OpenSSL 3.0.1, andgcc 11.2.0. - Additionally,
FulcrumAdmin.exeis included which is the python script, but made into aonefile .exeusing PyInstaller.- NOTE Windows virus scanners have been known to erroneously identify
FulcrumAdmin.exeas containing a virus. This is because many heuristic scanners dislike the use ofPyInstalleronefile .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!