Mandatory Komodo Daemon Update Before October 3, 2024

This is an announcement from the Komodo Platform team regarding an upcoming mandatory update to the Komodo daemon. The Komodo development team has already activated changes to the Komodo code base. The changes are mandatory for the entire network before October 3, 2024.

This release includes the newly elected notary node pubkeys for S8 (Season 8), along with other important consensus changes and improvements such as KIP0002 (KMD Block Reward Reduction) and KIP0003 (KMD Transaction Fee Burn), both of which were voted on and accepted by the Komodo community.

Please make sure to update your Komodo daemon promptly to ensure users can continue to use wallets without service interruption.

Timeline

Exchanges and service providers are advised to pause all wallet operations (deposits/withdrawals) from October 3, 2024, 03:00 UTC until October 6, 2024, 23:00 UTC.

The Komodo daemon will activate the hard fork at KMD block height 4125988 (expected to take place on October 5, 2024, at 17:18:48 UTC). Assetchains (Komodo Smart Chains) will activate the upgrade precisely at timestamp 1728049053.

0.9.0 [Drogon] Changelog

This is a mandatory major version that does include breaking changes.

  • Removed libsnark, libgmp, mini-gmp
  • The old mini-gmp C-library has been removed, and the functions bitcoin_base58{en,de}code have been replaced with internal {En,De}codeBase58 from the Bitcoin codebase.
  • GMP functions are no longer used in rewards CC; the same results can be achieved more efficiently using the internal arith_uint256 type.
  • GMP functions are no longer used in payments CC; refactoring has been done to work with large numbers in calculations using arith_uint256.
  • Dilithium and musig have been removed from the CC in preparation for the upcoming update to the secp256k1 codebase.
  • Old pre-sapling Sprout (PHGRProof) proofs validation has been removed. komodod will no longer verify old Sprout proofs and will assume they are valid. This change is safe for KMD and ACs, as transactions involving Sprout after KOMODO_SAPLING_DEADLINE (February 15, 2019) were prohibited at the consensus level.
  • libnsnark and libgmp have been removed from dependencies and build systems.
  • KMD and dPoW-protected AC checkpoints have been updated.
  • These changes will result in faster Initial Block Download (IBD) due to saving CPU time on verifying old Sprout transactions and disabling scripts and other resource-intensive checks during IBD. Additionally, with the removal of old pre-sapling Sprout, the need for sprout-proving.key and sprout-verifying.key files in .zcash-params (~910 Mb) is eliminated.
  • Prepended additional checks for consensus-critical constants. Introduced the NotaryChecker class, designed to pre-check the public keys array, season heights, and timestamps before launching the daemon. This check prevents the daemon from starting if any critical information in these arrays is incorrectly filled.
  • Fixed datacarrier related command-line args.
  • Added new S8 (Season 8) related consensus rule changes, including updates such as new notary node pubkeys, KIP0002, KIP0003, and more. According to the KIP0002 proposal, starting from S8, the block subsidy will be reduced to 1 KMD. This change is intended to reduce market sell pressure and allow previously created coins to increase in cost basis over time. Additionally, per the KIP0003 proposal, transaction fees for blocks produced by notary nodes will be burned. The primary objective of this change is to enhance KMD tokenomics by creating a deflationary effect through the burning of transaction fees.
  • In this release, we are still maintaining compatibility with Ubuntu 16.04 LTS Xenial Xerus as it is supported with Extended Security Maintenance (ESM) until April 2026. This means that Xenial users can continue to use the Komodo daemon (This can be changed in future releases.)
  • Minor fixes and updates.

Instructions for Updating the CLI Daemon

If you have the Komodo daemon running, you can keep it running while updating if your machine has sufficient processing power. If you prefer to stop it before updating, please use

~/komodo/src/komodo-cli stop

to stop the daemon and proceed with the steps to update.

Be sure to follow each of these steps carefully. Don’t move onto the next step until the previous one is successfully completed.

Step 1

Navigate to your Komodo directory.

cd ~/komodo

Step 2

Make sure you don't have any changes made to the source and reset it. This will ensure a clean source and shouldn't create any issues while pulling the latest source in the next step.

git reset --hard

Step 3

Use master branch

git checkout master

Step 4

Clean the source directory.

make clean

Step 5

Update the source. (If you’ve made any changes to the source code, this step may not pull the latest source. Please make sure you use the step above to eliminate this issue.)

git pull

Step 6

Compile the latest binary.

Start your services as usual. (If you have not stopped the Komodo daemon before compiling, please stop the daemon now and start it again.)

./zcutil/build.sh -j$(nproc)

Step 7

Verify the update.

~/komodo/src/komodo-cli getinfo

Please look for the KMDversion in the output of the above call, which should display:

"KMDversion": "0.9.0",

This verifies your Komodo (KMD) wallet daemon is updated to the latest version which has the required updates.

Troubleshooting

If your blockchain data folder contains data from an older daemon version (before we switched to the 0.7.x versioning, such as 3.x.x), you might encounter this error when starting the 0.9.0 daemon:

2024-08-21 18:49:12 ERROR: LoadBlockIndex() : failed to read value
2024-08-21 18:49:12 : Error loading block database.
error in HDD data, might just need to update to latest, if that doesn't work, then you need to resync.

This should only be an issue on long running nodes that have been running continuously without a recent "sync from scratch"

In this case, you have several options:

  • Resync from scratch (slowest but most accurate, allowing your node to recalculate value pools).
  • Bootstrap from dexstats.info (fastest, but since the initial sync version is unknown, value pools might be incorrectly calculated). Value pools refer to the stats for transparent, sprout, sapling, and burned chain values.
  • Reindex with -reindex (but options resync and bootstrap are recommended).

Need Assistance?

If you have any questions or need further assistance with this update, please contact the Komodo support team at support@komodoplatform.com. Komodo team members are also available on the Komodo Discord server.