github cculianu/Fulcrum v1.5.0
Fulcrum 1.5.0

latest releases: v1.12.0.1, v1.12.0, v1.11.1...
4 years ago

What's new:

This is a major "minor" release of Fulcrum! It adds a new index, some new RPC methods, and optimizes some of the internals to be faster.

  • Note that this release will upgrade the database - But fear not -- the upgrade happens automatically the first time you upgrade from a previous version of Fulcrum.
    • It should take between 5 and 20 minutes on mainnet, ~1 minute on testnet. Just let it run and it will print progress information to the log.
    • The upgrade adds a new db index which requires an additional ~5.7GB for BCH mainnet and ~12GB for BTC mainnet.
    • The upgrade happens only once and does use more space but it's worth it!
    • If you hit ctrl-c in the middle of the upgrade, that's fine. It will just restart the next time.
    • Adding the new index still keeps the datadir backwards compatible. You can always go back to an earlier version of Fulcrum.
      • However if you do mix-and-match earlier versions of Fulcrum with this one, the next time you run 1.5.0+, the txhash index will need to be rebuilt since it will be "stale" (because previous versions of Fulcrum ignore the new index and it will be out of synch as a result).
    • If you are curious: PR #75 was the set of commits that adds this index, so you can read a more detailed description of the index there (plus read the code if you are so inclined!).

Summary of changes:

  • RPC improvements & changes
    • Added 7 new RPC methods to support double-spend proofs as well as allowing for notifications on transaction status changes.
    • Bumped RPC protocol version to 1.4.5.
    • blockchain.transaction.get_merkle now no longer requires the height parameter (but passing it is still recommended as a performance optimization).
  • Added double-spend proof support. Double-spend proofs are now queried and tracked if the bitcoin daemon supports them via RPC; currently only BCHN v22.3.0 (gitlab master) supports them.
  • Performance - Optimized the code to make calculating the status hash 2x faster.
  • Safety - Reduced the maximum max_history size that Fulcrum supports from 100M to 25M. Note that there are no histories on the blockchain that are large enough to hit this limit -- the limit is theoretical and more of a safety measure to prevent pathological circumstances. After we upgrade to protocol v1.5.0 in the future, this limit will no longer be in place since histories will be paged and status hashes will be computed differently.
  • Added a new index that maps tx_hash -> TxNum (see blurb in the "What's new" section above)
    • Bumped default db_mem to 420 MB from the previous 384 MB (this is to account for the new index's needs).
  • Made the app log more exceptional circumstances as errors to the log (such as bumping into the max worker job queue limit being hit, and others).
  • Misc. improvements to the build system to auto-detect a few things better.
  • Misc. unit tests and benches added
  • Misc. fixups and code quality improvements

Pre-compiled binaries for Linux

I have provided two pre-built binaries for Linux:

  • Fulcrum-1.5.0-x86_64-linux.tar.gz, which is compiled on an Ubuntu 18.04 system using Docker.
  • Fulcrum-1.5.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, libzmq, Qt5Core and Qt5Network from Qt 5.15.2 statically linked. They still require 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 regular -linux binary fails, try the second one (-linux-ub16), which should work on older systems, hopefully.

Pre-compiled binaries for Windows

  • Fulcrum-1.5.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, libzmq, Qt 5.15.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!

Don't miss a new Fulcrum release

NewReleases is sending notifications on new releases.