Releases: cculianu/Fulcrum
Fulcrum 1.9.0
What's new:
This is an important release of Fulcrum focusing on additional CashToken support (BCH only). Support for CashTokens has been expanded with some RPC protocol additions. RPCs such as blockchain.scripthash.listunspent
may now (optionally) return token information for UTXOs that contain tokens. Since the API has changed, the maximum electrum-cash protocol version is now 1.5.0. However, by default Fulcrum continues to support protocol 1.4.x and is backwards compatible with clients requesting this protocol version. For more information on the RPC API changes, see the latest changes to the Electrum Cash Protocol Specification.
Additionally, the database format has changed slightly, and your datadir will be automatically upgraded to the new V2 format*
. That is, if you run Fulcrum 1.9.0 against your current synched datadir, it will automatically be upgraded to V2. Older Fulcrum versions (which only understand V1) will not be able to read the datadir after it is upgraded, however.
*
- The exception to this is if you are running your server synched to current BCH ChipNet, in which case you will need to delete your datadir and resynch because ChipNet has CashTokens activated on it already, and we need to grab on-chain token information again from bitcoind via a full resynch. Fulcrum will complain and exit with an error telling you to resynch if you are on ChipNet.
Note for BTC & LTC users: It is safe to upgrade to this version of Fulcrum if you are using BTC or LTC, since the API changes affect BCH only. This version of Fulcrum behaves identically to previous versions if serving up BTC or LTC blockchain data, with 0 negative performance or other impact for BTC or LTC servers.
Summary of changes:
- Upgaded protocol to to version 1.5. Fulcrum still supports 1.4.x, but 1.5 adds the ability to retrieve CashToken token data for UTXOs containing such data (BCH only).
blockchain.*.listunspent
now may optionally return token information for UTXOs that contain CashTokens (BCH only).blockchain.utxo.get_into
now will return token information if the UTXO in question contains CashTokens (BCH only).blockchain.*.get_balance
now may optionally return the balance with or without token UTXOs (BCH only).- For a full summary of changes, see: https://electrum-cash-protocol.readthedocs.io/en/latest/protocol-changes.html#version-1-5-0
- Some code cleanup and performance improvement for the
blockchain.*.listunspent
RPCs. - Update BCH mainnet & chipnet server lists.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.9.0-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.9.0-arm64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system (for ARM64 bit) using Docker.Fulcrum-1.9.0-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (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.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.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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.8.2
What's new:
This is a minor release of Fulcrum. The main change from the previous release is that support for BCH "chipnet" has been added, and is now auto-detected when the daemon returns the network name from getblockchaininfo
as "chip"
. Upgrading from v1.8.1 is not required (but is still recommended, especially if you intend to use chipnet now).
To use chipnet, you should build BCHN MR !1600. A pre-built binary of BCHN supporting chipnet is available for download here.
Discussion and references to what chipnet itself is can be found here.
Summary of changes:
- Added support for BCH "chipnet", which is auto-detected. The Fulcrum binary has a static list of seed peers, so that it may find other peers for chipnet specifically. (Calin Culianu)
- Added some more unit tests for the merkle calculation code. (Calin Culianu)
- Fixed a long-standing out-of-spec implementation of the CTRL-C/SIGTERM signal handler (made sure it's 100% async signal safe).
- Added build support for compiling on FreeBSD. #137 (Andrew Kallmeyer)
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.8.2-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.8.2-arm64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system (for ARM64 bit) using Docker.Fulcrum-1.8.2-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (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.8.2-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.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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.8.1
What's new:
This is a minor release of Fulcrum. The main change from the previous release is that the release binaries now include a statically-linked OpenSSL 1.1.1 library. This should improve compatibility of the release binary with various Linux systems. Upgrading from v1.8.0 is not required (but is still recommended).
Summary of changes:
- We now statically link OpenSSL 1.1.1 into all Linux release binaries. This should fix issues where users were getting various error messages related to OpenSSL on newer Linux systems. Closes #132 and #126.
- Updated the Linux release binaries to use Qt 5.15.6 and gcc 8.x (gcc 8.1 for the
-ub16
binary and gcc 8.4 for the regular Linux binary). - Updated the Windows release binary to use GCC 11.2.0 and OpenSSL 3.0.1.
- Performance improvement for Merkle tree calculations (as much as 10% speedup).
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.8.1-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.8.1-arm64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system (for ARM64 bit) using Docker.Fulcrum-1.8.1-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (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.8.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.2
,OpenSSL 3.0.1
, andgcc 11.2.0
. - Additionally,
FulcrumAdmin.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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.8.0
What's new:
This is an upgrade & enhancement release of Fulcrum. It provides some better support for the upcoming May 2023 BCH network upgrade, as well as some internal code refactoring changes. The database format remains unchanged and is both forward and backward compatible with previous versions of Fulcrum.
It is recommended that users running a BCH Fulcrum instance upgrade to this version before May 15, 2023 (if not sooner).
Summary of changes:
- (BCH only) Added support for correctly indexing addresses containing CashTokens (#135)
- (BCH only) Added support for parsing CashToken-aware cash addresses (type=2 and type=3) (#135)
- (BCH only) Added support for parsing P2SH32 cash addresses (#135)
- Fixed issue where spurious OpenSSL error messages were being printed to the console on newer Linux systems that use OpenSSL3 (#132).
- Misc. code fix-ups and internal improvements.
A Note about OpenSSL 1.1.1
Note to Linux server admins - There is an extant OpenSSL vulnerability in versions of OpenSSL 1.1.1-1.1.1j. If you are using Qt 5.15 with OpenSSL 1.1.1, it is recommended you update your system OpenSSL to 1.1.1k (or later). The Linux static build does not bundle OpenSSL, but instead loads the system OpenSSL at run-time. So please update your system to use OpenSSL 1.1.1k or later!
Windows static builds do embed OpenSSL, however, and they have been updated below with an embedded OpenSSL 1.1.1k.
Linux Ubuntu 16 (Xenial) static builds are compiled to look for the system OpenSSL 1.0.x series, which does not suffer from the above-linked vulnerability.
If unsure which OpenSSL Fulcrum is using, run ./Fulcrum --version
and it should tell you which libssl
version it found and is using at runtime.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.8.0-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.8.0-arm64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system (for ARM64 bit) using Docker.Fulcrum-1.8.0-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (using Docker) but with g++ 7.3.0 installed from this ppa source:ppa:jonathonf/gcc-7.3
&ppa:jonathonf/gcc
All 3 of the above binaries contain jemalloc
, libzmq
, Qt5Core
and Qt5Network
from Qt 5.15.2 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.8.0-win64.zip
- Pre-built, statically linked Windows version.- It should "just work" on any Windows 7 or above 64-bit system.
- Includes is a statically-linked
Fulcrum.exe
, built withjemalloc
,libzmq
,Qt 5.15.2
,OpenSSL 1.1.1k
, andgcc 7.5.0
. - Additionally,
FulcrumAdmin.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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.7.0
What's new:
This is an upgrade & enhancement release of Fulcrum. It provides a couple of new features, as well as some performance improvements and minor bugfixes. The database format remains unchanged and is both forward and backward compatible with previous versions of Fulcrum.
Summary of changes:
- Added Litecoin (LTC) support. (#114)
- Tested and works with latest Litecoin Core (v0.21.2).
- Mimble-wimble is "supported" in that it doesn't crash the app, but is mostly ignored since no Electrum clients understand mw txns.
- It is advised you run
litecoind
with the-rpcserialversion=1
option so as to prevent serving clients mw txns that they may not understand. - Special thanks to Sellix, SRL for requesting and funding Litecoin support.
- Blocks DL: Improved reliability of RPC connection to bitcoind on slow systems (or when downloading huge blocks) (#120)
- Fixes issue #116
- Should address the apparently poor performance of Fulcrum as observed in the first Bitcoin Verde BCH Scaling Report
- On startup, proceed anyway if
PeerMgr
fails to start (but display a warning).- Should address issues when using Fulcrum on a chain or coin that is unknown to Fulcrum and for which no
servers.json
exists.
- Should address issues when using Fulcrum on a chain or coin that is unknown to Fulcrum and for which no
- Added support for Bitcoin Core (BTC) signet (#108) ( @quad )
- Simplify Docker builds (#106) ( @AaronDewes )
- Fix RPM build error at Copr + cleanup (#111) ( @hegjon )
- Fixed some typos in
fulcrum-example-config.conf
( @pseudoramdom ) - Misc. code fix-ups and internal improvements.
A Note about OpenSSL 1.1.1
Note to Linux server admins - There is an extant OpenSSL vulnerability in versions of OpenSSL 1.1.1-1.1.1j. If you are using Qt 5.15 with OpenSSL 1.1.1, it is recommended you update your system OpenSSL to 1.1.1k (or later). The Linux static build does not bundle OpenSSL, but instead loads the system OpenSSL at run-time. So please update your system to use OpenSSL 1.1.1k or later!
Windows static builds do embed OpenSSL, however, and they have been updated below with an embedded OpenSSL 1.1.1k.
Linux Ubuntu 16 (Xenial) static builds are compiled to look for the system OpenSSL 1.0.x series, which does not suffer from the above-linked vulnerability.
If unsure which OpenSSL Fulcrum is using, run ./Fulcrum --version
and it should tell you which libssl
version it found and is using at runtime.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.7.0-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.7.0-arm64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system (for ARM64 bit) using Docker.Fulcrum-1.7.0-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (using Docker) but with g++ 7.3.0 installed from this ppa source:ppa:jonathonf/gcc-7.3
&ppa:jonathonf/gcc
All 3 of the above binaries contain jemalloc
, libzmq
, Qt5Core
and Qt5Network
from Qt 5.15.2 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.7.0-win64.zip
- Pre-built, statically linked Windows version.- It should "just work" on any Windows 7 or above 64-bit system.
- Includes is a statically-linked
Fulcrum.exe
, built withjemalloc
,libzmq
,Qt 5.15.2
,OpenSSL 1.1.1k
, andgcc 7.5.0
. - Additionally,
FulcrumAdmin.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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.6.0
What's new:
This is an upgrade & enhancement release of Fulcrum. It provides a couple of new features, as well as some performance improvements and minor bugfixes. The database format remains unchanged and is both forward and backward compatible with previous versions of Fulcrum.
Summary of changes:
- Faster sync time - (Experimental) Added a new CLI arg (
--fast-sync
, or conf optionfast-sync
, default disabled). With this option enabled, Fulcrum will use a large UTXO Cache as it syncs, which should save on DB back-and-forth. The option takes a numeric argument which specifies the maximum RAM to give to the UTXO Cache, in MB. Larger values generally yield better results, but try not to exceed the system's available RAM. PR: #98.- In my experiments, a
--fast-sync
of2000
on BCH testnet3 yields ~1.7x speed improvement over no--fast-sync
. Using8000
for testnet3 yields a ~2x speedup. - Even modest values of
512
for--fast-sync
yield benefits on the order of 1.5x or more speedup. - Similar results were found for both BCH and BTC mainnet.
- I haven't tried it with an HDD setup yet, but in theory this option should be particularly beneficial for users using hard disks, since the savings on disk ops is very real with the cache and should be particularly impactful for such setups.
- Given that the option is still experimental (but perfectly safe to use!), I am making it opt-in for now, and the default behavior of Fulcrum is to sync as it did before, without any sort of UTXO Cache.
- This option has no effect outside of initial sync, and if the Fulcrum instance is given this option but it is already synched, the option does nothing. This is because a custom UTXO Cache is not really needed outside of initial sync since the regular rocksdb memory table caches give excellent performance results for normal, post-sync patterns of usage.
- In my experiments, a
- Added JSON-RPC batching support. Fulcrum now understands and serves JSON-RPC batches as described in the JSON-RPC 2.0 specification. PR: #97 .
- This option is controlled with new conf option
max_batch
, default345
, which controls the maximum size of batches that are accepted. Set to0
to disable batching (pre-1.6.0 behavior of Fulcrum). - Additionally, batches are limited to
max_buffer
bytes (default:8000000
), in terms of request + response size. - Special thanks to: @craigraw for suggesting I add this and for helping me to debug this and for catching at least 1 bug in the initial implementation. Thank you!
- This option is controlled with new conf option
- Increased the defaults on some of the resource-related conf options to more generous settings. The previous defaults were a bit on the conservative side, perhaps, and after 2 years of running my servers with higher-than-default settings, I have not experienced any problems, so I decided to make my own server's settings also be the factory defaults.
db_max_open_files
default is now40
(was20
)db_mem
default is now512
(was420
)max_buffer
default is now8000000
(was4000000
)workqueue
default is now15000
(was10000
)max_subs_per_ip
default is now75000
(was50000
)
- For Fulcrum nodes running on the BTC blockchain, the block prefetch has been increased to
250
blocks rather than100
(on account of BTC blocks being bounded in size to at most ~1.7 MB of data). - Minor performance enhancements in JSON-RPC processing.
- Minor corner-case bug fixes/correctness handling improvments for things like
server.banner
, Json serialization, and other miscellaneous odds & ends. - Update of the embedded
robin_hood
hash table library tov3.11.5
,
A Note about OpenSSL 1.1.1
Note to Linux server admins - There is an extant OpenSSL vulnerability in versions of OpenSSL 1.1.1-1.1.1j. If you are using Qt 5.15 with OpenSSL 1.1.1, it is recommended you update your system OpenSSL to 1.1.1k (or later). The Linux static build does not bundle OpenSSL, but instead loads the system OpenSSL at run-time. So please update your system to use OpenSSL 1.1.1k or later!
Windows static builds do embed OpenSSL, however, and they have been updated below with an embedded OpenSSL 1.1.1k.
Linux Ubuntu 16 (Xenial) static builds are compiled to look for the system OpenSSL 1.0.x series, which does not suffer from the above-linked vulnerability.
If unsure which OpenSSL Fulcrum is using, run ./Fulcrum --version
and it should tell you which libssl
version it found and is using at runtime.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.6.0-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.6.0-arm64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system (for ARM64 bit) using Docker.Fulcrum-1.6.0-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (using Docker) but with g++ 7.3.0 installed from this ppa source:ppa:jonathonf/gcc-7.3
&ppa:jonathonf/gcc
All 3 of the above binaries contain jemalloc
, libzmq
, Qt5Core
and Qt5Network
from Qt 5.15.2 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.6.0-win64.zip
- Pre-built, statically linked Windows version.- It should "just work" on any Windows 7 or above 64-bit system.
- Includes is a statically-linked
Fulcrum.exe
, built withjemalloc
,libzmq
,Qt 5.15.2
,OpenSSL 1.1.1k
, andgcc 7.5.0
. - Additionally,
FulcrumAdmin.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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.5.4
What's new:
This is a maintenance release of Fulcrum. It provides a couple of minor fixes and a compatibility workaround for the Phoenix BTC wallet.
Summary of changes:
- Added a compatibility workaround so that Fulcrum will be able to serve Phoenix wallet clients (BTC). Thanks @hMsats for reporting and troubleshooting. Closes issue #91.
- Build system: Don't use system rocksdb lib if it is not compiled with RTTI support (which is required by Fulcrum). Instead, use the in-tree rocksdb static lib in that case. Thanks @EchterAgo, PR #92.
- Demoted the spurious error message:
Could not create per-IP data object in ServerBase::attachPerIPDataAndCheckLimits
, which was wrongly being reported at error level "Error". It now is reworded to be less scary and is at the more appropriate "Warning" error level.- Note that this warning is not really a problem -- it can happen under normal operation if a client disconnects very quickly after connecting, before we can even process their connection fully.
- An option would have been to not even warn when this happens. However if a client were to frequently do this, it is an indication of a misbehaving client, so the diagnostic message could perhaps be helpful to server admins.
- Some tiny code fixups.
A Note about OpenSSL 1.1.1
Note to Linux server admins - There is an extant OpenSSL vulnerability in versions of OpenSSL 1.1.1-1.1.1j. If you are using Qt 5.15 with OpenSSL 1.1.1, it is recommended you update your system OpenSSL to 1.1.1k (or later). The Linux static build does not bundle OpenSSL, but instead loads the system OpenSSL at run-time. So please update your system to use OpenSSL 1.1.1k or later!
Windows static builds do embed OpenSSL, however, and they have been updated below with an embedded OpenSSL 1.1.1k.
Linux Ubuntu 16 (Xenial) static builds are compiled to look for the system OpenSSL 1.0.x series, which does not suffer from the above-linked vulnerability.
If unsure which OpenSSL Fulcrum is using, run ./Fulcrum --version
and it should tell you which libssl
version it found and is using at runtime.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.5.4-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.5.4-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (using Docker) but with g++ 7.3.0 installed from this ppa source:ppa:jonathonf/gcc-7.3
&ppa:jonathonf/gcc
Both of the above binaries contain jemalloc
, libzmq
, Qt5Core
and Qt5Network
from Qt 5.15.2 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.5.4-win64.zip
- Pre-built, statically linked Windows version.- It should "just work" on any Windows 7 or above 64-bit system.
- Includes is a statically-linked
Fulcrum.exe
, built withjemalloc
,libzmq
,Qt 5.15.2
,OpenSSL 1.1.1k
, andgcc 7.5.0
. - Additionally,
FulcrumAdmin.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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.5.3
What's new:
This is a maintenance release of Fulcrum. It provides a few minor quality-of-life improvements for admins, as well as some minor internal fixes.
Summary of changes:
- Added auto-detection for when SSL certs change on the filesystem.
- This allows admins to swap out their SSL certs on the filesystem (when renewing them) without needing to restart Fulcrum.
- Added
--compact-dbs
CLI arg.- This option compacts all of the databases on startup, which reduces disk space consumed by the DBs. Note that Fulcrum already compacts databases in the background periodically, so using this option is not strictly necessary.
- Added support for bitcoind
.cookie
-file authentication.- To use cookie-file-based auth instead of a hard-coded user/pass, simply specify
--rpccookie
or-K
on the CLI (orrpccookie=
in the conf file) and supply the full path of the ".cookie" file that bitcoind generates. This file normally lives in the<bitcoind_datadir>/.cookie
.
- To use cookie-file-based auth instead of a hard-coded user/pass, simply specify
- Added support for compiling against the Qt 6.x series.
- Improved RPC auth error message. Thank you @ejose19 .
- Added arm64 support to Docker image + added
librocksdb.a
for linuxaarch64
. Thank you @mainnet-pat . - RPM package fixups. Thank you @hegjon .
- Compile fixup for fedora rawhide / newer rocksdb libs.
- Various internal bugfixes and code quality fixups.
A Note about OpenSSL 1.1.1
Note to Linux server admins - There is an extant OpenSSL vulnerability in versions of OpenSSL 1.1.1-1.1.1j. If you are using Qt 5.15 with OpenSSL 1.1.1, it is recommended you update your system OpenSSL to 1.1.1k (or later). The Linux static build does not bundle OpenSSL, but instead loads the system OpenSSL at run-time. So please update your system to use OpenSSL 1.1.1k or later!
Windows static builds do embed OpenSSL, however, and they have been updated below with an embedded OpenSSL 1.1.1k.
Linux Ubuntu 16 (Xenial) static builds are compiled to look for the system OpenSSL 1.0.x series, which does not suffer from the above-linked vulnerability.
If unsure which OpenSSL Fulcrum is using, run ./Fulcrum --version
and it should tell you which libssl
version it found and is using at runtime.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.5.3-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.5.3-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (using Docker) but with g++ 7.3.0 installed from this ppa source:ppa:jonathonf/gcc-7.3
&ppa:jonathonf/gcc
Both of the above binaries contain jemalloc
, libzmq
, Qt5Core
and Qt5Network
from Qt 5.15.2 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.5.3-win64.zip
- Pre-built, statically linked Windows version.- It should "just work" on any Windows 7 or above 64-bit system.
- Includes is a statically-linked
Fulcrum.exe
, built withjemalloc
,libzmq
,Qt 5.15.2
,OpenSSL 1.1.1k
, andgcc 7.5.0
. - Additionally,
FulcrumAdmin.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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.5.2
What's new:
This is a critical bugfix release of Fulcrum. It fixes a crash bug that we thought we handled in 1.5.1 but it turns out we did not fix. It is recommended that all admins update to 1.5.2 as soon as they can.
Summary of changes:
- Fixed the crash bug that could be caused by a dangling reference to the
MethodMap
. - It turns out the simdjson upgrade to 0.9.2 was a lemon. We reverted back to 0.6.0. 0.9.2 appears to have some crash bugs in the westmere implementation.
Changes from 1.5.1
- Recompiled Windows build to embed OpenSSL 1.1.1k which addresses these vulnerabilities in OpenSSL.
--version
now also prints information on whichlibssl
was loaded at run-time.- Minor fix: fixed compile error when building against Qt 5.12
- Minor fix: fixed a typo in an error message
- Updated
servers.json
(BCH) andservers_scalenet.json
(BCH) to latest Electron Cash servers.
A Note about OpenSSL 1.1.1
Note to Linux server admins - There is an extant OpenSSL vulnerability in versions of OpenSSL 1.1.1-1.1.1j. If you are using Qt 5.15 with OpenSSL 1.1.1, it is recommended you update your system OpenSSL to 1.1.1k (or later). The Linux static build does not bundle OpenSSL, but instead loads the system OpenSSL at run-time. So please update your system to use OpenSSL 1.1.1k or later!
Windows static builds do embed OpenSSL, however, and they have been updated below with an embedded OpenSSL 1.1.1k.
Linux Ubuntu 16 (Xenial) static builds are compiled to look for the system OpenSSL 1.0.x series, which does not suffer from the above-linked vulnerability.
If unsure which OpenSSL Fulcrum is using, run ./Fulcrum --version
and it should tell you which libssl
version it found and is using at runtime.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.5.2-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.5.2-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (using Docker) but with g++ 7.3.0 installed from this ppa source:ppa:jonathonf/gcc-7.3
&ppa:jonathonf/gcc
Both of the above binaries contain jemalloc
, libzmq
, Qt5Core
and Qt5Network
from Qt 5.15.2 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.5.2-win64.zip
- Pre-built, statically linked Windows version.- It should "just work" on any Windows 7 or above 64-bit system.
- Includes is a statically-linked
Fulcrum.exe
, built withjemalloc
,libzmq
,Qt 5.15.2
,OpenSSL 1.1.1k
, andgcc 7.5.0
. - Additionally,
FulcrumAdmin.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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.5.0
What's new:
This is a major "minor" release of Fulcrum! It adds a new index, some new RPC methods, and optimizes some of the internals to be faster.
- Note that this release will upgrade the database - But fear not -- the upgrade happens automatically the first time you upgrade from a previous version of Fulcrum.
- It should take between 5 and 20 minutes on mainnet, ~1 minute on testnet. Just let it run and it will print progress information to the log.
- The upgrade adds a new db index which requires an additional ~5.7GB for BCH mainnet and ~12GB for BTC mainnet.
- The upgrade happens only once and does use more space but it's worth it!
- If you hit ctrl-c in the middle of the upgrade, that's fine. It will just restart the next time.
- Adding the new index still keeps the datadir backwards compatible. You can always go back to an earlier version of Fulcrum.
- However if you do mix-and-match earlier versions of Fulcrum with this one, the next time you run 1.5.0+, the txhash index will need to be rebuilt since it will be "stale" (because previous versions of Fulcrum ignore the new index and it will be out of synch as a result).
- If you are curious: PR #75 was the set of commits that adds this index, so you can read a more detailed description of the index there (plus read the code if you are so inclined!).
Summary of changes:
- RPC improvements & changes
- Added 7 new RPC methods to support double-spend proofs as well as allowing for notifications on transaction status changes.
- Bumped RPC protocol version to 1.4.5.
blockchain.transaction.get_merkle
now no longer requires theheight
parameter (but passing it is still recommended as a performance optimization).
- Added double-spend proof support. Double-spend proofs are now queried and tracked if the bitcoin daemon supports them via RPC; currently only BCHN v22.3.0 (gitlab master) supports them.
- Performance - Optimized the code to make calculating the status hash 2x faster.
- Safety - Reduced the maximum
max_history
size that Fulcrum supports from 100M to 25M. Note that there are no histories on the blockchain that are large enough to hit this limit -- the limit is theoretical and more of a safety measure to prevent pathological circumstances. After we upgrade to protocol v1.5.0 in the future, this limit will no longer be in place since histories will be paged and status hashes will be computed differently. - Added a new index that maps
tx_hash
->TxNum
(see blurb in the "What's new" section above)- Bumped default
db_mem
to 420 MB from the previous 384 MB (this is to account for the new index's needs).
- Bumped default
- Made the app log more exceptional circumstances as errors to the log (such as bumping into the max worker job queue limit being hit, and others).
- Misc. improvements to the build system to auto-detect a few things better.
- Misc. unit tests and benches added
- Misc. fixups and code quality improvements
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.5.0-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.5.0-x86_64-linux-ub16.tar.gz
, which is compiled on a stockUbuntu 16.04
system (using Docker) but with g++ 7.3.0 installed from this ppa source:ppa:jonathonf/gcc-7.3
&ppa:jonathonf/gcc
Both of the above binaries contain jemalloc
, libzmq
, Qt5Core
and Qt5Network
from Qt 5.15.2 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.5.0-win64.zip
- Pre-built, statically linked Windows version.- It should "just work" on any Windows 7 or above 64-bit system.
- Includes is a statically-linked
Fulcrum.exe
, built withjemalloc
,libzmq
,Qt 5.15.2
andgcc 7.5.0
. - Additionally,
FulcrumAdmin.exe
is included which is the python script, but made into aonefile .exe
using PyInstaller.
See the .asc
files at the bottom for signatures; 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!