Fulcrum 1.3.2
What's new:
This is largely a performance release. The major new change is that mempool handling has been made much more efficient than in previous versions.
Summary of changes:
- Performance - The mempool handling code has been heavily redone to cope with large / full mempools in a much more performant manner. Gone are the days of stalls on BTC or on a full ABC chain!
- Added logic to support mempool drops efficiently.
- We now do all mempool processing entirely in parallel (with respect to the main app), only committing changes with the lock held at the very last minute when all data is ready. (Previous to this it would hold a lock for entirely too long).
- Made the mempool itself take up 25% less memory by using more compact data structures
- Performance - Reduced peak memory consumption in some execution paths (namely when downloading blocks on ScaleNet).
- Versatility - Added the conf file setting
max_reorg
(default: 100). This specifies how much block undo data to keep in the database.- Previous to this release internally the hard-coded value was always 100. Now it is configurable to any value from 100 to 500,000.
- Since thousand-block-deep reorgs are a rare event (unless on a test chain), the default is fine for most users.
- Users of test or experimental chains may wish to set this to a high value if they anticipate needing to reorg past the default of 100 blocks.
- Note: As always, if the reorg limit is hit and Fulcrum tries to reorg to a block deeper than it has undo data, Fulcrum will error out and require a full resynch.
- Note 2: Storing huge amounts of block undo data comes with a cost in terms of disk space consumed by the undo database, so the default setting is an acceptable tradeoff in that regard.
- Added CLI arg
--bd-clients
(conf file var:bitcoind_clients
) - This controls the number of bitcoind HTTP JSON-RPC clients to spawn in parallel when connecting to the bitcoind node. The default is 3. Note that by default bitcoind is configured to only use 4 RPC threads, so if you increase this past 4, you may need to setrpcthreads=
in yourbitcoin.conf
file. Also note that in general setting this to values much higher than the number of processors is not a good idea either. The default setting is good unless you really know what you are duning. - Default settings for two conf file variables have changed.
bitcoind_timeout
now defaults to 30 seconds (from the previous 20), anddb_max_open_files
now defaults to the much more conservative value of 30 (previously it was 100). - Various small refactorings and bugfixes.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.3.2-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.3.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
, Qt5Core
and Qt5Network
from Qt 5.14.2 statically linked. They still requires 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 binary fails, try the second one (-ub16
), which should work on older systems, hopefully.
Pre-compiled binaries for Windows
Fulcrum-1.3.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
,Qt 5.14.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!