Fulcrum

A fast & nimble SPV Server for BCH, BTC, and LTC

OTHER License

Stars
336
Committers
15

Bot releases are hidden (Show)

Fulcrum - Fulcrum 1.4.0

Published by cculianu almost 4 years ago

What's new:

This is a major minor release of Fulcrum! We bumped the version to 1.4.0 because we fixed a bunch of things, upgraded rocksdb, killed some memory leaks and memory bloat, and overall made everything more solid.

A note about the database format: This version introduces a slight database upgrade. The internal database format was tweaked somewhat for the "undo" table (only used on reorg). As an admin you should not notice anything different, but just be aware that if you open up a synched datadir with Fulcrum 1.4.0, it writes "undo" data in a different format than previous Fulcrum. So if you were to, for some reason, downgrade back to Fulcrum 1.3.x on the same datadir, then experience a reorg immediately, your undo info written by the new version will not be usable by the older version (but will still be usable on the new version).

In general though you should not worry -- don't downgrade Fulcrum and you'll be fine! Onward and upward!


Summary of changes:

  • Performance - For rocksdb, we now use a shared block cache & write buffer manager.
    • This drastically reduces memory bloat as the app runs.
    • This effectively caps rocksdb's memory usage to some known finite value. The config option db_mem directly influences the size of this cache and thus the rocksdb memory soft-cap.
    • db_mem and db_max_open_files have now been defaulted to more conservative values: 348 (from 768) and 20 (from 30) respectively.
    • This shared block cache and write buffer manager also seems to have a positive impact on performance (even though less memory is being used overall!).
  • BugFix - The robin_hood map we were using had memory leaks. We removed it from the codebase for the most part (and also patched it to latest to not leak!).
  • Added suppression of spam for "connection limit exceeded" log messages (these can occur frequently with some abusing clients). We rate limit the logging of these events to once every 5 seconds per IP address.
  • Added max_reorg and bitcoind_clients to admin RPC getinfo stats.
  • Added conf option: txhash_cache to specify max memory for some of the internal LRU caches (default: 128MB).
  • Controller: Ensure bitcoind is using txindex, and if not, warn the user
  • Upgraded rocksdb to version 6.14.6
  • Build: Added utility script contrib/build/rocksdb-static.sh which auto-rebuilds the rocksdb static library for you.
    • Useful if you are using arm64 since we don't bundle the lib for that arch, but it can be built using ths script!
  • Fixed some clang-11 compile warnings
  • Allow tor_proxy to be a hostname:port pair (in addition to IP:port)
    • If hostname:port, a DNS lookup will be done once at app init to resolve the tor_proxy to an actual IP address.
  • PeerMgr: Apply unconditional 30 second timeout for connectToHost()
    • This fixes an esoteric bug where if the tor_proxy is bad, some peers get stuck in limbo forever neither connected nor failed.
  • Allow for >65535 TXO IONums
    • Previous to this release, should a tx appear on the blockchain with >65535 outputs, it might confuse Fulcrum. This release fixes that situation.
  • -C/--checkdb now can be specified twice to do even more thorough checks on the db.
  • Fixed an issue where on BTC and BCH mainnet, -C/--checkdb would falsely report db corruption if it encountered the "dupe" txids that are known to exist on mainnet chain.
  • Set ScaleNet block prefetch to 10 after height 10,000. This is to avoid memory usage peaking to ridiculous levels.
  • Storage: gently close all open DBs on app exit. We call Flush/Sync and Close explicitly now on app close. (Even though rocksdb is very resilient, apparently doing it this way is easier on the db).
  • Misc. nits and fixups.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.4.0-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.4.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.4.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!

Fulcrum - Fulcrum 1.3.2

Published by cculianu almost 4 years ago

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 set rpcthreads= in your bitcoin.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), and db_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 an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.3.2-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.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 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!

Fulcrum - Fulcrum 1.3.1

Published by cculianu almost 4 years ago

What's new:

Summary of changes:

  • Added better handling for BTC RBF tx's randomly dropping out of the mempool.
  • Increased the PeerClient buffer size to 256KiB to allow for potentially large server.peers.subscribe messages from BTC peers.
  • Some internal nits and code refactoring.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.3.1-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.3.1-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.1-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!

Fulcrum - Fulcrum 1.3.0

Published by cculianu almost 4 years ago

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!

Fulcrum - Fulcrum 1.2.12

Published by cculianu almost 4 years ago

What's new:

This is mainly a performance release of Fulcrum. It adds support for synching while bitcoind is still in "initial block download" (IBD). In addition, the simdjson JSON parser was added.

Summary of changes:

  • Convenience - Added support for synching Fulcrum while bitcoind is in IBD (initial block download). This should help new server admins get started more quickly, since one no longer has to wait for bitcoind to be fully synched before starting a Fulcrum synch.
  • Performance - Added the simdjson library as an optional JSON parser backend to Fulcrum. Enable it with --simdjson on the CLI or simdjson=true in the config file. This parser is 2x faster than the regular parser. Since the regular parser has been war-tested for several releases, the simdjson parser must be explicitly enabled. It will be the default, however, in a future release. (So far it appears extremely stable and reliable, and is perfectly safe to use). Enabling this parser is recommended.
    • If you want to test it out, simdjson can be dynamically enabled or disabled at runtime by using the FulcrumAdmin script like so:
    $ ./FulcrumAdmin -p 8000 simdjson 0  # 0 = disable simdjson
    $ ./FulcrumAdmin -p 8000 simdjson 1  # 1 = enable simdjson
    $ ./FulcrumAdmin -p 8000 simdjson    # no args - query simdjson status
  • Added the advanced option db_use_fsync to the conf file. If set to true (default: false), the rocksdb library will use fsync() calls as opposed to fdatasync(). fsync() is slower but works around some potential issues in older Linux kernels and the ext4 filesystem. See the rocksdb documentation about this option.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.12-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.12-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.2.12-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!

Fulcrum - Fulcrum 1.2.11

Published by cculianu about 4 years ago

What's new:

This is a minor revision of Fulcrum. It adds support for the new BU and BCHN "scalenet" network.

Summary of changes:

  • Added scalenet support! This is a new experimental testnet designed for big blocks and stress testing (256 MB blocks) that BU and BCHN will start to support soon. When BCHN and BU release their scalenet-capable bitcoind's, Fulcrum 1.2.11 will be ready to synch against this network!

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.11-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.11-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.2.11-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!

Fulcrum - Fulcrum 1.2.10

Published by cculianu about 4 years ago

What's new:

This is a performance tweaking release of Fulcrum. Upgrading to this version is optional but recommended.

Summary of changes:

  • Added jemalloc support! The static binaries linked below are all now linked to jemalloc which improves memory allocation performance significantly under load. In tests, jemalloc also causes less "heap fragmentation" which means that Fulcrum should have a slightly smaller memory footprint now.
  • Added testnet4 support! #50. This is a new experimental testnet that BU and BCHN will start to support soon. When BCHN and BU release their testnet4-capable bitcoind's, Fulcrum 1.2.10 will be ready to synch against this network!
  • Added a new config option, db_mem (CLI: --db_mem) to try and constrain rocksdb's memory usage for some operations. Defaults to 512MB. Note that even with this option rocksdb may decide to use more memory -- but this option does decrease the minimum footprint somewhat under load.
  • Fixed misuse of notation MiB versus MB in some of the admin RPC output and other places in the codebase.
  • Miscellaneous fixes and improvements to the Fulcrum.pro file, RPM spec, and docker build systems (Jonny Heggheim, Axel Gembe)
  • Fix for Windows if building with -DENABLE_TESTS mode.
  • Added process memory usage information to the getinfo admin RPC.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.10-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.10-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.2.10-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!

Fulcrum - Fulcrum 1.2.9

Published by cculianu about 4 years ago

What's new:

This a bug-fix release of Fulcrum. It is strongly recommended that all admins upgrade to this version at their earliest convenience.

Summary of changes:

  • Bug fix - The listunspent call had a regression/bug which was introduced in Fulcrum v1.2.5 (#47). It has now been fixed. All apologies if this caused anybody any trouble.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.9-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.9-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 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.2.9-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 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!

Fulcrum - Fulcrum 1.2.8

Published by cculianu about 4 years ago

What's new:

  • Improved bchd compatibility - A new option was added (CLI: --bitcoind-tls, conf file: bitcoind_tls=true) to specify connecting to bitcoind using TLS (HTTPS) rather than plaintext sockets (HTTP). (Presently only bchd offers HTTPS for its JSON-RPC interface, which is why this feature is labelled a "bchd compatibility" feature.)
  • Optimized bitcoind requests - Some code paths for bitcoind JSON-RPC requests have been made slightly more efficient in the common case (this should reduce CPU usage for servers that receive many requests from Mist miners).
  • WSS-specific certificate support - Added the ability to specify an alternate certificate/key pair for WSS sockets. This allows the server to present one certificate for -s (Electron Cash SSL) sockets while presenting a different certificate for -W (wss://) sockets.
    • This feature is needed because WSS clients running in a browser require the server present CA-signed certs, while older Electron Cash clients may reject a server that switches from a pinned self-signed cert to a CA-signed cert.
    • It's recommended that server admins keep their old self-signed certs for Electron Cash -s/--ssl ports, and use CA-signed certs for -W/--wss ports.
    • WSS-specific cert. & key can be specified with --wss-cert and --wss-key (conf file: wss-cert= and wss-key=).
  • WebSocket fix - Correctly handle multiple values in the Connection: header. Some user agents and/or browsers may send multiple comma-delimited values here, so we must accept such headers. This should make WSS work reliably with all browsers. #37 (Axel Gembe)
  • WebSocket fix - On error, flush the socket to ensure that the other end gets the error reply before disconnecting. #39 (Axel Gembe)
  • Added the --tls-disallow-deprecated option (conf file: tls-disallow-deprecated=true). If set, this option makes all TLS/SSL sockets server-wide refuse to fall-back to deprecated protocol versions, requiring basically that clients speak TLS v1.2 or above. #42
  • ServerSSL: Do not request certificates from clients. The fact that previous code did so was a bug, but it happened to work anyway with Electrum Cash clients, while being antagonistic to WSS clients. This fix makes WSS work properly for all setups. #38 (Axel Gembe).
  • bitcoind RPC: Handle "Connection: keep-alive" header properly (this header may appear if using a proxy such as nginx to connect to bitcoind). (Cédric Félizard)
  • Minor fix: improved handling of bitcoind timeouts
  • Removed the periodic printing of "Fulcrum v1.2.8 (Release) ..." to the log. This message appearing every hour in the log was unnecessary.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.8-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.8-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 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.2.8-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 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!

Fulcrum - Fulcrum 1.2.7

Published by cculianu about 4 years ago

What's new:

This a maintenance release of Fulcrum. It improves performance slightly for servers being hammered by Mist miners. It also contains a few under-the-hood features that will come in handy in the future.

  • Optimized JSON parsing to shave more percentage points off CPU consumption when processing client requests (such as the numerous requests coming in from Mist miners).
  • Optimized internal asynchronous message-passing in the app to be more performant. This helps to reduce load from Mist miner requests, and it should also be visible on initial synch as a 1%-5% reduction in initial synch time.
  • bchd support is ready! It still requires bchd implement persistent connections (#28 ) -- however that's in the works with the bchd team and is in this PR in the bchd repo: https://github.com/gcash/bchd/pull/384. If you want to use Fulcrum with bchd -- you will need to build against that branch.. or wait until the bchd team releases a version with that branch merged. (I have been running bchd from that branch against Fulcrum for days now and it works great!) Update: bchd v0.16.5 now supports persistent connections. Fulcrum and bchd are now 100% compatible with each other!
  • Fixed a minor bug where sometimes the getinfo admin RPC command would show a nonsensical value for "avg_fee_sats_B" if the mempool was empty. Now it shows 0, as it should when there are 0 tx's!
  • Internal refactoring of code in some subsystems (such as hashing, bloom filtering, BitcoinD communication) to be more maintainable, easier to reason about, and also slightly faster.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.7-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.7-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 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.2.7-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 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!

Fulcrum - Fulcrum 1.2.6

Published by cculianu over 4 years ago

What's new:

This a bugfix release of Fulcrum. It is recommended that all admins upgrade to this version at their earliest convenience. Sorry for the quick release cycle. I hope this is the last one in a while!

Summary of changes:

  • Bug fix - On BU nodes, if the node is still coming up while Fulcrum is already up, the "Connection: close" header was causing Fulcrum to panic. We instead now just warn in a 1-liner in the log if we see this unsupported header, rather than panic. Sorry about that. Thanks to @EchterAgo for reporting this
  • Performance fix - The handling of Mist Miner hammering of the server has been optimized a bit to save on CPU cycles.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.6-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.6-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 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.2.6-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 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!

Fulcrum - Fulcrum 1.2.5

Published by cculianu over 4 years ago

What's new:

This a bugfix release of Fulcrum. It is recommended that all admins upgrade to this version at their earliest convenience.

Summary of changes:

  • Bug fix - If the system locale was set to something that would format numbers with a comma , for decimal "points" (such as de_DE), the JSON output of the application would be affected and would produce incorrect JSON.
    • This bug was introduced in Fulcrum v1.2.1 as a result of switching JSON serializer backends, but has now been fixed.
    • Most of the external RPC calls don't output floats to clients, fortunately, so this bug was mostly visible only as a JSON bug in the FulcrumAdmin script. Thanks to Georg Englemann for finding this bug and reporting it!
  • Bug fix: Added sending the Host: header to bitcoind. See issues: #27 & #28
  • New - Fulcrum now supports non-RSA (in addition to the previous RSA) SSL private keys on an experimental basis. Keys types such as DSA, Elliptic Curve, and Diffie-Hellman should work, however they are not fully tested and there are limitations to which key formats the Qt QSsl socket layer supports. YMMV. Addresses #27 .
  • Added code to intelligently suppress excess log output caused by Mist Miner clients. Your logs should no longer grow to 100's of megabytes per day with excess "Broadcast failed" messages.
  • Compile fix for 32-bit platforms (not currently officially supported -- but theoretically should work).
  • Misc. internal improvements and refactoring of the code.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.5-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.5-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 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.2.5-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 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!

Fulcrum - Fulcrum 1.2.4

Published by cculianu over 4 years ago

What's new:

This a maintenance release of Fulcrum. It refactors some of the code internally to be more correct and robust. No major changes observable from outside the application are included in this release, but I still recommend server admins run the latest.

Summary of changes:

  • Refactored the internal hash table calculations to be more resilient against hash collisions. This should improve app performance in all circumstances. Starting with this version, we seed the hash table hasher functions with a cryptographically secure random number at app startup, and then we ensure that all data that ends up in a hash table is suitably hashed using MurMur3 or CityHash64. This fix should improve performance overall and make the app resilient to hash table collision attacks.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.4-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.4-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 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.2.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 with 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!

Fulcrum - Fulcrum 1.2.3

Published by cculianu over 4 years ago

What's new:

This is a maintenance release of Fulcrum. It contains a bug fix and some internal refactoring.

Summary of changes:

  • Squashed a bug where if the number of transactions on the chain exceeded 4.29 billion, it might be possible to get data corruption in the database (CompactTXO numbers weren't being serialized to bytes correctly). There are currently ~290 million transactions on mainnet so this bug wouldn't have been triggered any time soon.
  • Refactored the internal hash table calculations to be more correct.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.3-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.3-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 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.2.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 with 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!

Fulcrum - Fulcrum 1.2.2

Published by cculianu over 4 years ago

What's new:

This is a maintenance release of Fulcrum. It contains a performance optimization to JSON parsing as well as 1 fix to a (rare) bug seen in the wild on some systems.

Summary of changes:

  • Squashed a bug where if the Qt library spuriously prints messages to the logger while the app is still being constructed, a null pointer dereference could occur, leading to a segfault. We now guard against this situation and take an alternate code path if a log message arrives during app construction. Special thanks to Chris Troutner for reporting this issue and helping to reproduce and fix it.
  • Some code cleanup and a ~10% performance speedup to the JSON parser.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.2-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.2-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 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.2.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 with 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!

Fulcrum - Fulcrum 1.2.1

Published by cculianu over 4 years ago

What's new:

This is mostly a maintenance release that updated the codebase to compile cleanly against Qt 5.15.x and to also work-around some bugs in Qt 5.15.x. If you intend to use Fulcrum with Qt 5.15.x, then you should upgrade since Qt 5.15.x introduced several bugs that versions of Fulcrum prior to this one cannot cope with.

This version of Fulcrum should work perfectly as before on all supported Qt versions (5.12.5 and above).

Note that the released precompiled binaries were all statically linked to Qt 5.14.2, so Qt's 5.15.x bugs only affected people that compiled their own Fulcrum against Qt 5.15.x, such as Arch Linux users.

Summary of changes:

  • Made the codebase compatible with the Qt 5.15.x series (as before, it still is backward compatible with Qt 5.12.5 or above).
  • Replaced the Qt JSON serializer and deserializer with our own custom code for parsing/writing JSON.
    • The motivation for this is because Qt recently replaced their JSON backend in 5.15.x and it has regressions in terms of correctness as well as performance.
    • In addition, our custom serializer now has much more generous limitations on data size and JSON nesting level than we had in previous releases, when we were using Qt's QJsonDocument for serialization/deserialization.
  • Added some benchmarks and tests to the codebase (only accessible if compiling with -DENABLE_TESTS).
  • Various bits of refactoring and code cleanup.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.1-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.1-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 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.2.1-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 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!

Fulcrum - Fulcrum 1.2.0

Published by cculianu over 4 years ago

What's new:

  • Bugfix: CA-signed SSL certificates were not being recognized properly.
    • CA-signed SSL certificates were not working as advertised previous to this release; now, they should work perfectly. Note that you need to give Fulcrum the full certificate chain, e.g. fullchain.pem if using CA-signed certificates.
    • Self-signed certificate functionality remains unchanged and works as before.
    • Fortunately, all the Fulcrum servers were using self-signed certificates so this bug affected nobody, but it's good that it was fixed.
    • Special thanks to @imaginaryusername for noticing this bug and reporting it, and helping to troubleshoot it.
  • New RPC Method: blockchain.utxo.get_info can be used to retrieve information (value, scripthash, confirmed_height) on an unspent output. This method can also be used as a quick test to see if a txo is spent or not. See the API docs for this new method here.
  • Updated the default server list seed file to contain a list of the latest, known-stable servers.

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.2.0-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.2.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 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.2.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 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!

Fulcrum - Fulcrum 1.1.1

Published by cculianu over 4 years ago

What's new:

  • The default output log format has changed slightly. We removed the uptime based timestamp (which wasn't very human friendly) and replaced it with a localtime timestamp of the form: [yyyy-MM-dd hh:mm:ss.zzz] <ThreadName> Log message... .
    • Additionally a CLI arg --ts-format has been added to control the format of this log timestamp. (Also can be done via conf file ts-format=). See the CLI built-in help (-h) for more details.
    • Syslog mode (-S) now defaults to not printing out any log timestamps (as if you had also passed --ts-format none on the CLI). This default behavior can be controlled via --ts-format as well.
  • Fixed a typo in the example config file (thanks to @EchterAgo for spotting this typo).
  • Internal changes (none of the below changes alter externally observable behavior of the app):
    • Optimization: Shaved a few CPU cycles from code that does logging.
    • Internal code refactoring of the socket server code.
    • Various small internal optimizations and misc. refactoring

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.1.1-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.1.1-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 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.1.1-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 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!

Fulcrum - Fulcrum 1.1.0

Published by cculianu over 4 years ago

What's new:

  • Web Socket support has been added
    • Fulcrum can now speak the Web Socket protocol! This facility is for extra compatibility. This allows Fulcrum to act as a useful blockchain server for web apps and/or JavaScript-based clients. Both ws:// and wss:// are supported (wss requires an SSL cert and key, of course -- if you already have an SSL port enabled, the same cert will be used for wss).
    • Enable it in the config file with ws=interface:port (for ws://) and wss=interface:port (for wss://), or from the CLI with -w/-W.
  • Two new advanced options were added to allow admins to tune/control rocksdb resource usage: db_max_open_files and db_keep_log_file_num. They are documented in the example config file bundled in the release archive.
  • Added some rocksdb statistics to the getinfo FulcrumAdmin call and even more rocksdb statistics to the /stats endpoint.
  • Small performance improvement to the subscriptions notifier.
  • Improvements to the socket code.
  • Stricter enforcement of the per-IP connection limit (if the limit is hit, we now kick the client as early as possible in the connection pipeline rather than e.g. letting the SSL handshake proceed, only to kick after).
  • Updated to use Qt 5.14.2.
  • Fixups and improvements to build system (using Docker for static building of Window and Linux binaries).

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.1.0-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.1.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 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.1.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 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!

Fulcrum - Fulcrum 1.0.5b

Published by cculianu over 4 years ago

What's new:

  • Performance improvements - Made the bitcoind_throttle facility (introduced in Fulcrum 1.0.4) behave in a peppier and more efficient manner when the server is not under load.
  • Resiliency - A new max subscriptions facility has been added to make it nearly impossible for abusive clients to degrade performance for normal clients.
    • max_subs_per_ip has been added as a conf file variable. Default is 50000 if unspecified. If the number of subscriptions from a particular IP address exceeds this value, new subscription requests are denied from that IP until its client(s) unsubscribe or disconnect. Note that clients belonging to subnets_to_exclude_from_per_ip_limits are not subjected to this limit.
    • max_subs has also been added as a conf file variable. Default is 10000000 (10 million) if unspecified. This is a limit on the number of subscriptions the server will allow, server-wide, for all clients. If this limit is reached, the server will take measures to potentially kick the most-offending client(s) that it detects.
  • Interoperability - Added 7 new RPC methods to make interoperability with scripting easier.
    • All the new methods live alongside the existing methods but they now accept addresses instead of script hashes, and all are prefixed with: blockchain.address.*
    • These work identically to their blockchain.scripthash.* counterparts, but can be given Bitcoin Cash addresses (rather than the esoteric script hash).
    • These methods increase interoperability of this server software with various clients that may or may not have a full bitcoin scripting lib to translate Bitcoin Addresses -> script hashes.
    • See the protocol documentation for a description of the methods in question.
  • Minor bug fix - The ban by client ID command wouldn't ban. (But ban by IP address worked). Fixed.
  • Internal code refactoring.

Due to the above improvements it is highly recommended that server admins upgrade to this version at their earliest convenience.


Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.0.5b-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.10 system.
  • Fulcrum-1.0.5b-x86_64-linux-ub16.tar.gz, which is compiled on a stock Ubuntu 16.04 system but with g++ 7.3.0 installed from this ppa source: ppa:jonathonf/gcc-7.3 & ppa:jonathonf/gcc

Both of the above binaries contains Qt5Core and Qt5Network from Qt 5.14.1 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.0.5b-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 Qt 5.14.1 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!

Package Rankings
Top 12.2% on Alpine-edge
Badges
Extracted from project README
Docker Build Copr build status bitcoincash:qphax4s4n9h60jxj2fkrjs35w2tvgd4wzvf52cgtzc
Related Projects