Skip to content

Releases: HathorNetwork/hathor-core

v0.55.0

08 Sep 22:05
v0.55.0
a5ad91c
Compare
Choose a tag to compare

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

14 Jun 15:24
v0.54.0
449666c
Compare
Choose a tag to compare

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

16 May 18:23
3fd8f4f
Compare
Choose a tag to compare

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
    • Release-candidate v0.53.0-rc.3 in #603
    • Release-candidate v0.53.0-rc.2 in #596
    • Release-candidate v0.53.0-rc.1 in #566

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

27 Apr 15:32
v0.52.3
53ab69c
Compare
Choose a tag to compare

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

16 Nov 19:35
v0.52.1
85206cb
Compare
Choose a tag to compare

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

  • ci: update workflow actions #499
  • dependencies: update cryptography as a precaution #511
  • init: use a builder to create objects and inject dependencies #495
  • metrics: avoid using RocksDB keys estimation #496
  • metrics: measure sync and load times #490

v0.51.0

14 Oct 14:48
v0.51.0
da526d0
Compare
Choose a tag to compare

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

14 Sep 16:49
v0.50.2
d978653
Compare
Choose a tag to compare

This is a minor release, that in practice only affects initialization speed when using a big cache.

Changes

  • feat(init): Reduce cache size during initialization #471
  • chore(ci): update python-rocksdb to restore CI on macOS #473
  • docs(readme): fix poetry install command line #474

v0.50.1

28 Aug 06:57
v0.50.1
5b79e0f
Compare
Choose a tag to compare

Fixes

sync: minor issue in certain cases in #468

v0.50.0

24 Aug 12:53
v0.50.0
ab5360d
Compare
Choose a tag to compare

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

  • cli: add deprecation warning for Python 3.7 #459
  • refactor: own rocksdb storage class #452

v0.49.2

27 Jul 13:45
v0.49.2
1b3e232
Compare
Choose a tag to compare

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

Chores

  • deps: update pycoin and add ripemd160 fallback #435
  • p2p: update latest checkpoints #433