Skip to content

Fulcrum 1.3.0

Compare
Choose a tag to compare
@cculianu cculianu released this 10 Nov 13:40
· 492 commits to master since this release
da56409

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 to rlim_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 or simdjson = 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) and db_max_open_files = 100. Previous values were 512 and 25 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 an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.3.0-x86_64-linux-ub16.tar.gz, which is compiled on a stock Ubuntu 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 with jemalloc, Qt 5.14.2 and gcc 7.5.0.
    • Additionally, FulcrumAdmin.exe is included which is the python script, but made into a onefile .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!