Releases: HathorNetwork/hathor-core
v0.55.0
This release contains several behind the scene improvements that will mostly affect future features that aren't in use yet. Notably there is good progress on the feature activation mechanism and also a disabled by default preview version of sync-v2.
Features
- feat(events): add event simulator scenarios and tests #609
- feat(feature-activation): bit count optimization #633
- feat(feature-activation): block features endpoint #690
- feat(feature-activation): fix criteria validation #708
- feat(feature-activation): implement bit signaling service #702
- feat(feature-activation): implement block ancestor optimization #644
- feat(feature-activation): implement caching mechanism #645
- feat(feature-activation): implement feature service #639
- feat(feature-activation): implement get endpoint #634
- feat(feature-activation): implement signal_bits field in txs #623
- feat(feature-activation): new MUST_SIGNAL and LOCKED_IN states #675
- feat(indexes): add get_n_height_tips method to height index #734
- feat(p2p): add setting to enable/disable peer whitelist for sync-v2 #735
- feat(sync-v2): sync-v2 implemented, sync-v1 still default #275
- feat(traversal): add BFS order traversal #672
- feat: add get-best-blockchain capability #686
Fixes
- fix(event-queue): fix event simulator scenario parsing #706
- fix(events): fix bugs in the event stream and improve tests #647
- fix(metadata): actually use None for unset height #671
- fix(simulator): Patch BaseTransaction.resolve() to prevent updating timestamp #641
- fix(storage): incorrect validation store when using cache storage #663
- fix(test): regression after sync-v2 command was removed #730
- fix(tests): remove undeeded broken tests #668
- fix: consensus-fail-id marker should not be treated as a tx-id #695
- fix: send tips rate limit disconnect #650
- fix: settings initialization #666
Chores
- chore(events): move event queue option to unsafe args #656
- chore(extras): script to generate list of PRs that master is ahead of rc #701
- chore: add peer connecting event #693
- chore: bump version to v0.55.0 #661
- chore: deprecate set output #689
- chore: improve progress function #651
- chore: p2p rate limit call later max limit #657
- chore: remove --x-fast-init-beta CLI option #643
- chore: update autobahn package #713
- chore: update checkpoints #687
- chore: update default Python version to 3.10 #712
- chore: update mypy, mypy-zope, and pydantic #691
- docs: add PR templates for the new release process #674
- refactor(builder): Build IndexesManager on builders #640
- refactor(events): improve events during the load phase #652
- refactor(init): Remove duplicate code and simplify full verification method #662
- refactor(p2p): rename sync manager to sync agent #729
- refactor(sync): move sync-v1 files to a separate module #667
- refactor(sync-v2): improve deferreds handling #732
- refactor: Add common Hathor types #642
- refactor: Change HathorManager.on_new_tx() to accept only fully validated transactions #664
- refactor: Prepare for sync-v2 #697
- refactor: do not use built-in random and add proper linter check #698
- refactor: implement typed RunNodeArgs #636
- refactor: improve manager building on simulator #653
- refactor: migrate all type annotations to PEP 585 #654
- refactor: move ValidationState to its own file #635
- refactor: remove deprecated typing uses and add custom linter script #699
- refactor: use None by default for height metadata #665
- tests(events): migrate flaky event simulation tests to new format #649
- tests(feature-activation): implement reorg test #660
- tests: Do not update time by default on BaseTransaction.resolve() #669
- tests: Skip flaky event tests #646
- tests: implement new PubSub tests #696
v0.54.0
This release drops support for Python 3.8, introduces a new internal settings format in YAML (the old format is still supported in this release but will be removed in the future), and changes the default values for WS_MAX_SUBS_ADDRS_CONN
and WS_MAX_SUBS_ADDRS_EMPTY
(which was commonly customized by several deploys, such that now they won't need to customize it anymore). Other changes include mostly the groundwork for future features.
Features
- feat(events): reliable integration during the load phase #555
- feat(events): reset event queue command #608
- feat(feature-activation): implement basic structures #611
- feat(sysctl): Add helper command #620
- feat(ws): Change default configuration of WS_MAX_SUBS_ADDRS_CONN and WS_MAX_SUBS_ADDRS_EMPTY to infinite #625
- feat: Add safeguards for partially validated transactions [part 1/2] #577
- feat: add safeguards for partially validated transactions [part 2/2] #617
Chores
- chore(bump): v0.54.0 #567
- chore(python): drop support for Python 3.8 #615
- chore: add yamllint to all files #598
- chore: implement yaml settings inheritance #618
- chore: python 3.9 updates #616
- refactor(builder): Split resources creation from CliBuilder to ResourcesBuilder #605
- refactor(p2p): Build ConnectionsManager in builder #622
- refactor(settings): make HathorSettings always return the same instance #626
- refactor(stratum): Build StratumFactory on builder #619
- refactor: move hathor settings to yaml configuration files [part 1/2] #593
v0.53.0
This release contains a significant number of minor improvements and fixes made in the last few months. Most notably though, is the minor sync update sync-v1.1, which basically limits the max number of peers used for the sync algorithm, instead of using all connected peers, this limits CPU usage such that sync will not affect normal node operations.
It also introduces the sysctl subsystem to modify parameters at runtime. It works with both UNIX Socket and TCP Sockets, but it is not enabled by default. You can enable it using the parameter --sysctl unix:/path/sysctl.sock
or --sysctl tcp:8001
. For further information and examples, check out its pull request.
- Release v0.53.0 in #610
Features
- feat(events): emit reorg event during consensus in #500
- feat: Install Pydantic in #520
- feat(events): remove NETWORK_NEW_TX_VOIDED event in #529
- feat(events): implement websocket endpoints and message handling in #522
- feat(events): implement events REST API in #525
- feat(events): implement metadata events in #530
- feat(remove-retain-events-flag): remove --retain-events flag in #536
- feat(events): extract event information in #535
- feat(events): remove NETWORK_BEST_BLOCK_FOUND and NETWORK_ORPHAN_BLOCK_FOUND events in #537
- feat(events): handle events during the load phase in #534
- feat: add best_block and best_block_tips to dag on status in #549
- feat(events): improve event mapping in #543
- feat: allow version overwriting by creating a BUILD_VERSION file in #546
- feat(simulator): Add a trigger to stop the simulator when a condition is satisfied in #563
- feat(cli): Add --color parameter to replay-logs cli in #594
- feat(sync): Limit number of sync running simultaneously in #581
- feat(sync): boilerplate for sync-v1.1 protocol in #583
- chore: improve exception message in #585
- feat(core): Add a sysctl subsystem to modify full node parameters at runtime in #587
- feat(sysctl): Validate types before calling setter in #607
Fixes
- fix(ci): update python-rocksdb binding for rocksdb 8.0.0 compatibility in #553
- fix: fix initialization order bugs in #550
- fix: handle missing git command when getting local version in #557
- fix: EventData model in #569
- fix(version): copy the BUILD_VERSION file into the Docker image in #576
- fix(init): gc consuming high CPU for a long time in #600
- fix(p2p): Fix v1.1 not enforcing whitelist in #604
Chores
- chore: update dependencies and add support for Python 3.11 in #515
- chore(docs): fix worflow badges on rendered README in #517
- chore: Test Improvements in #521
- feat(mypy-daemon): implement mypy daemon commands in #526
- chore(ci): fix installing dependencies on macos in #531
- feat(parallel-tests): update Makefile to perform tests in parallel in #533
- feat(events): CLI tool for testing event integration in #539
- ci: adapt to the new release process in #547
- chore: bump version and update checkpoints in #554
- chore(ci): Change should-notify-slack to disable-slack-notification and extract scripts from the workflow definition in #548
- Update static-typing related packages in #544
- ci: add commit sha on nigthly image tags in #545
- chore(extras): Fix missing envvar in GitHub extras tests in #560
- tests: Non-stopped simulator causing other tests to fail in #578
- chore: add RocksDB and EventManager builder configs in #568
- chore(ci): use GITHUB_SHA env var instead of github.sha in #579
- chore: Fix mypy warnings in #588
- fix: do not include newline in the BUILD_VERSION file in #606
Refactors
- refactor(manager): Move contructor's parameter wallet_index and utxo_index to builder in #504
- refactor(indexes): Create a generic TxGroupIndex and uses it on AddressIndex in #524
- refactor(indexes): move interest scope to inside the index in #538
- refactor(builder): HathorManager stops building ConsensusAlgorithm itself in #558
- refactor(builder): Change HathorManager.init and change tests to use TestBuilder in #559
- refactor: implement AbstractMiner class for hathor simulator in #564
- refactor: use new Builder class on Simulator in #561
- refactor(wallet): Reduce indentations to increase readability in #562
- refactor(consensus): Split consensus.py in multiple files in #573
Full Changelog: v0.52.3...v0.53.0
v0.52.3
This version fixes a mining API bug that was wrongly calculating the weight in specific conditions.
Fixes
- Prevent float precision error in the score when calculating the next block weight.
v0.52.1
This release adds important optimizations for runtime and startup (it should now take 5~10 min to load depending on the setup). Additionally there is some ground work for new features, and small chores related to development environments. Version v0.52.0 was skipped because of an issue that was caught after the image was built.
Features
- events: add management layer #454
- events: add storage mechanism for events #451
- indexes: make sync-v2 indexes only load when sync-v2 is enabled #486
- storage: remove binary and compact tx storage #505
- tx: improved reward lock verification algorithm #300
Fixes
- cli: builder refactor regression skipped register_resources #507
- cli: regression made it so testnet couldn't be selected #501
- init: indexes could not be used on migrations when using cache #509
- tests: fix too many files open errors #503
- tests: simple regression from #509 that ended up being merged #510
Chores
v0.51.0
This release drops support for Python 3.7, which was deprecated on v0.50.0
. Additionally there are performance improvements and stability fixes, in particular the memory usage and initialization time improvements (that were previously released under the --x-rocksdb-indexes
flag) are now turned on by default (they can still be turned off with --memory-indexes
).
Features
- cli: make rocksdb indexes the default for rocksdb storage #494
- cli: subcommand to replay json logs as console logs #482
- cli: support to add a blacklist of peer ids in the netfilter #484
- indexes: partial optimization of tips indexes using rocksdb #480
- metrics: monitor network usage segmented by peer #467
- metrics: monitor tx cache hits/misses #466
- metrics: p2p readiness healthcheck #483
- storage: RocksDB storage monitoring #485
Fixes
- indexes: RocksDB UTXO index could miss some results #493
- metrics: peers connected metric in Prometheus #464
- p2p: Fix too many connection failures at startup #478
- pubsub: Calling events out-of-order #488
- storage: database corruption when stopping node with cache enabled #489
- sync: downloader could wrongfully re-order pending transactions #479
Chores
- python: drop support for Python 3.7 #450
v0.50.2
v0.50.1
v0.50.0
This release is fairly small, it has some small features and fixes, but also starts the deprecation of support for Python 3.7, while it is still supported this will be the last point release to do so, starting from v0.51.0
Python 3.8 will be the minimal supported version, but even then we recommend using Python 3.9 (which is the current default of the docker images) or Python 3.10.
Features
- cli: add --no-wait option to quick_test subcommand #447
- cli: add flags related to the event mechanism #434
- loading: add total to progress logger #448
- loading: optimize GC so pauses only happen when we want #445
- p2p: add client timeout to whitelist update GET request #458
- p2p: cache peer certificate options #446
Fixes
- api: validate token_uid before using it internally #449
- indexes: RocksDB empty address test fail for some multisig addresses #455
- simulator: division by zero when measuring elapsed time #462
Chores
v0.49.2
This is a small release that mainly fixes a case where it wouldn't be possible to start if the cache storage was enabled and no snapshot was used, and also a case where a wallet wouldn't load if the experimental RocksDB indexes were enabled (this was caught after v0.49.1
was built, so it was skipped and v0.49.2
is being released instead). Additionally it includes a fix to run on Ubuntu 22.04 (and possibly other recent releases of other distros).
Fixes
- cache: unexpected crash when using cache and no snapshot #436
- indexes: RocksDB empty address test implementation was broken #442