Skip to content

Releases: cculianu/Fulcrum

Fulcrum 1.2.7

19 Jul 19:09
a396cff
Compare
Choose a tag to compare

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: gcash/bchd#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 1.2.6

13 Jul 14:47
2c4b96e
Compare
Choose a tag to compare

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 1.2.5

12 Jul 20:45
080355f
Compare
Choose a tag to compare

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 1.2.4

02 Jul 13:29
adff50d
Compare
Choose a tag to compare

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 1.2.3

02 Jul 00:52
d813a77
Compare
Choose a tag to compare

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 1.2.2

30 Jun 21:30
3e08389
Compare
Choose a tag to compare

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 1.2.1

27 Jun 18:55
72f3403
Compare
Choose a tag to compare

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 1.2.0

24 Jun 09:29
40a9b60
Compare
Choose a tag to compare

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 1.1.1

15 May 09:24
2bc06f1
Compare
Choose a tag to compare

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 1.1.0

16 Apr 19:36
4c386fe
Compare
Choose a tag to compare

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!