This post is mainly for me to keep track of which hardforks did what.
The main hardforks in Komodo are for the election of notaries. But there are other purposes. I will add to the list as I learn more. Eventually these should be documented within the code (comments near the declaration of a #define or something).
Note that the KMD chain hardforks are normally based on chain height. Asset chains are normally based on time. Hence season hardforks have both.
- nStakedDecemberHardforkTimestamp – December 2019
- Modifies block header to include segid if it is a staked chain (chain.h)
- Many areas use komodo_newStakerActive(), which uses this hardfork
- nDecemberHardforkHeight – December 2019
- Many areas use komodo_hardfork_active() which uses this hardfork and the above
- Disable the nExtraNonce in the miner (miner.cpp)
- Add merkle root check in CheckBlock() for notaries (main.cpp)
- nS4Timestamp / nS4HardforkHeight – 2020-06-14 Season 4
- Only for notary list
- nS5Timestamp 2021-06-14 Season 5
- ExtractDestination fix (see komodo_is_vSolutionsFixActive() in komodo_utils.cpp)
- Notary list updated
- nS5HardforkHeight 2021-06-14 Season 5
- Add merkle root check in CheckBlock() for everyone (main.cpp)
Many areas have hardfork changes without much detail. Here are some heights found by searching the code base for “height >”:
- 792000 does some finagling with notaries on asett chains in komodo_checkPOW (komodo_bitcoind.cpp). See also CheckProofOfWork() in pow.cpp and komodo_is_special() in komodo_bitcoind.cpp.
- 186233 komodo_eligiblenotary() (komodo_bitcoind.cpp)
- 82000 komodo_is_special() (komodo_bitcoind.cpp)
- 792000 komdo_is_special() and komodo_checkPOW()
- 807000 komodo_is_special()
- 34000 komodo_is_special()
- limit is set to different values based on being under 79693 or 82000 in komodo_is_special()
- 225000 komodo_is_special()
- 246748 komodo_validate_interest() starts to work (komodo_bitcoind.cpp)
- 225000 komodo_commission() (komodo_bitcoind.cpp)
- 10 komodo_adaptivepow_target() (komodo_bitcoind.cpp)
- 100 (KOMODO_EARLYTXID_HEIGHT) komodo_commission() (komodo_bitcoind.cpp)
- 2 PoS check in komodo_checkPOW() and komodo_check_deposit()
- 100 komodo_checkPOW() (komodo_bitcoind.cpp)
- 236000 komodo_gateway_deposits() (komodo_gateway.cpp)
- 1 komodo_check_deposit() (komodo_gateway.cpp) (a few places)
- 800000 komodo_check_deposit() (komodo_gateway.cpp)
- 814000 (KOMODO_NOTARIES_HEIGHT1) fee stealing check in komodo_check_deposit() as well as another check a little below.
- 1000000 komodo_check_deposit() (2 places in that method)
- 195000 komodo_operturn() (komodo_gateway.cpp)
- 225000 komodo_opreturn() (komodo_gateway.cpp)
- 238000 komodo_operturn()
- 214700 komodo_opreturn()
I need to continue searching for “height >” in komodo_interest.cpp, komodo_kv.cpp, komodo_notary.cpp, komodo_nSPV_superlite.h, komodo_nSPV_wallet.h, komodo_pax.cpp, komodo.cpp, main.cpp, metrics.cpp, miner.cpp, net.cpp, pow.cpp, rogue_rpc.cpp, cc/soduko.cpp as well as more searches like “height <” and “height =” to catch more.