Fulcrum 1.3.0
What's new:
Summary of changes:
- Stability - On Unix systems (Darwin, Linux, BSD), Fulcrum now asks the OS to raise its max open files to the hard limit (
RLIM_NOFILE
set torlim_max
). This is to ensure Fulcrum won't run out of file descriptors should it get 1000 or more connections from clients. (On Windows nothing has changed since Windows has 16.7 million max open handles per process always). - Performance - The
simdjson
backend has been tested and is now the default backend for JSON parsing on platforms that support it. To not use simdjson, you can specify--no-simdjson
from the CLI orsimdjson = false
in the conf file. Simdjson is 2x faster than the previous parser, so it is recommended. - BTC Support - Fulcrum can now work with BTC! Just start a new Fulcrum instance and point it to a Bitcoin Core bitcoind and it will understand that it's serving up BTC. Note that at this time only Bitcoin Core is supported as the bitcoind for BTC (v0.17.0 or newer).
- ScaleNet Bugfix - Fulcrum pointed to ScaleNet wasn't synching properly on extremely large blocks and had various quirks.
- This is mainly because Fulcrum was rejecting large JSON replies from bitcoind.
- Made sure the maximum size of data we accept from bitcoind connections is extremely large (600 MiB). This allows us to download large 256MB blocks from bitcoind for ScaleNet.
- Added a larger timeout (20 secs) for requests to bitcoind originating in the Controller class.
- Bugfix - Made POSIX signal handling safer, e.g. for Ctrl-C, etc. We only call into reentrant functions now in the signal handler (this means we cannot allocate!) -- and the real work done to shutdown the app is now done outside of the signal handler in a helper thread.
- Added the advanced option
bitcoind_timeout
to the conf file (CLI:--bd-timeout
). It defaults to 20.0 seconds. See the sample configuration file for an explanation of what this does, but for most users it's safe to ignore. The tl;dr is: it provides a way to be more tolerant of slow bitcoind's in case you are synching to a bitcoind that is not on the local machine. - Defaults Changed -- DB memory allocation now is much more generous by default. It defaults to
db_mem = 768
(MB) anddb_max_open_files = 100
. Previous values were512
and25
respectively. It is hoped that most people running Fulcrum have at least 2GB of RAM so these new more generous defaults should not be a problem, but rather a boon for performance. - Various internal refactoring and small performance tweaks.
Pre-compiled binaries for Linux
I have provided two pre-built binaries for Linux:
Fulcrum-1.3.0-x86_64-linux.tar.gz
, which is compiled on anUbuntu 18.04
system using Docker.Fulcrum-1.3.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
, 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.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
,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!