Skip to content

Releases: openhive-network/hive

1.28.3

07 Nov 21:58

Choose a tag to compare

Hive Blockchain Detailed Change Log: v1.27.0 to v1.28.0

This detailed log outlines the key features, bug fixes, and preparatory changes introduced in incremental releases leading up to the v1.28.0 release, which includes Hardfork 28 (HF28).


⚠️ Important Upgrade Notice

Upgrading to 1.28.0 will typically require a full node replay due to changes in the internal hived state format and data structures.

New options impacting behavior:

  • block-log-split - defaults to 9999 to support splitting the block_log file into multiple "part" files (each part file stores 1 million blocks). If you wish to preserve the previous monolithic block_log file behavior, set this option to -1.

    Splitting the block_log file into multiple part files allows you to relocate part files on different filesystems and symlink them in the blockchain directory. This means that multiple hived nodes can use a single set of part files to share most of the block log history (once a part file is filled with 1M blocks, it is never written to again).

    If the default block-log-split value is lowered, nodes will operate in a "pruned" mode, only keeping the latest N 1M block parts. In the extreme case of setting block-log-split to 0, the node will not keep the raw contents of any blocks.

    Operating in pruned mode saves disk space, but also reduces the node's ability to support block_api usage (API for fetching historical blocks) and provide old blocks to other nodes that are syncing from scratch.

    Note for updating an older version of hived: the hived tool will automatically perform a block_log split of an existing monolithic block_log file when the block-log-split option is changed from monolithic (-1) to any other value, including the new default value of 9999. This will temporarily require double the normal storage during the time the file is being split into part files. If you wish to avoid this, you must explicitly set block-log-split to -1 before starting the upgraded node.

  • comments-rocksdb-path - option to specify location of the external storage database directory for comments (this is state data that was previously stored directly in the shared memory file). Defaults to comments-rocksdb-storage subdirectory in the shared memory directory. You can specify an absolute path to place it in a separate directory from the one used to store the shared memory file (and thus reduce the ramdisk size required to most efficiently perform replay or sync operations).

  • changes related to options useful for testing like stop-replay-at-block (renamed to stop-at-block also allowing to stop processing at block received from sync), exit-at-block allowing to stop hived process after receiving given block


πŸš€ I. Hardfork 28 (HF28) - Protocol Consensus Changes

These changes were implemented in the 1.27.x branch and are scheduled to be activated upon reaching the HF28 block.

Feature Area Change / Details MR/Issue Reference
Block Size Limit Witness-configurable block size is capped at 2MB. Merge Request 1357
Transaction Expiration Increased the transaction expiration time for better network resilience. Merge Request 1383
HBD Treasury Inflation HBD held in the Treasury is removed from inflation calculations. Merge Request 1467
Authority Checks Stricter authority matching is enforced (e.g., an active authority can no longer satisfy a posting level requirement). Merge Request 1408, Issue 716
Signature Flexibility Redundant (ineffective) signatures are allowed. Owner/active/posting authorities required by mixed operation types can be combined in a single transaction. Merge Request 1420
Vote Limits Vote edit limits are eliminated on posts. Issue 458
Recurrent Transfers Multiple recurrent transfers are allowed for the same sender/receiver pair. Issue 382
Proposal Voting Votes for invalid proposals will cause the transaction to fail. Merge Request 1460

II. Incremental Release Changes (v1.27.0 to v1.27.12)

Version 1.27.1 (Hotfix)

  • Fixes: Hotfix specific to the condenser_api::get_ops_in_block call.

Version 1.27.2

  • New Tools & Performance: Added block_log_util tool (Merge Request 694). Upgraded secp256k1-zkp library for signature processing performance improvements (Merge Request 689).
  • API & RC: Added support to automatically generate RC statistics (get_rc_stats, get_rc_operation_stats) (Merge Request 670). Improved transaction status API calls to include the optional RC cost consumed by a given transaction (Merge Request 771).
  • Fixes: Improved block statistics logging (Merge Request 650). Fixed slow shutdown if node was syncing (Merge Request 741).
  • New Operation: Added virtual operation: proxy_cleared_operation (Merge Request 681).

Version 1.27.3

  • RC Features: Implemented minimum RC delegation feature (Merge Request 775). Improved RC cost calculation for recurrent_transfer operations (Merge Request 803).
  • Fixes: Improved chain-state verification to prevent issues when a new index is added to an already filled state file (Issue 423). Fixed filtering in database_api::list_proposal_votes (Merge Request 773).

Version 1.27.4

  • Features: New virtual operations added (Merge Request 332). Prerequisites coded for strict matching of data structures to shared_memory.bin and snapshot contents (Merge Request 784).
  • Fixes: Fixed hived shutdown problems when executing broadcast_transaction_synchronuous and when using --exit-before-sync. RC mana can no longer go under zero (Merge Request 863).

Version 1.27.5

  • API Changes: All condenser_api methods now return result sets using the legacy JSON form (Merge Request 964).
  • Infrastructure: Introduced the Beekeeper tool for secure key management and signing. RC code moved closer to the chain code for future consensus preparation (Merge Request 917). New dependency on uring library to speed up file I/O (Merge Request 968).

Version 1.27.6

Version 1.27.7

  • Disk & Data Management: Introduced Pruned Block Log support via the new block-log-split configuration option.
  • Security & Stability: Added new options (rc-flood-level, rc-flood-surcharge, max-mempool-size) to prevent potential transaction flooding (Merge Request 1397).
  • Configuration Cleanup (Deprecation):
    • Removed deprecated plugins: follows and tags.
    • Renamed options: seed-node β†’ p2p-seed-node; rpc-endpoint removed in favor of explicit webserver-http-endpoint / webserver-ws-endpoint.
  • Functional: Hived internal default option values are now set regardless of config.ini presence.

Version 1.27.8

  • Fixes: Relaxed chain state comparison rules to facilitate seamless node upgrades (Issue 734). Fixed issues where a broken peers.json file could block P2P communication.

Version 1.27.9

  • HBD treasury removed from inflation calculation (to be activated at HF28)
  • vote operations pointing to nonexisting proposals will fail (to be activated at HF28)
  • bugfixes in beekeeper implementation related to wallet locking
  • size optimizations of Typescript version of beekeeper

Version 1.27.10

  • Fixes: Fixed bugs in Account History RocksDB plugin specific to full pruned node configurations (Issue 748). Fixed bugs specific to chain state comparison after snapshot loading (Issue 749).
  • Functional: Improved snapshot loading verification (Merge Request 1505). Updated the RocksDB library version to gain stability bugfixes.

Version 1.27.11

  • Upgrade from Ubuntu 22.04 to Ubuntu 24.04 as base build environment
  • optimization: eliminate undo sessi...
Read more

1.28.0

28 Oct 15:48

Choose a tag to compare

Hive Blockchain Detailed Change Log: v1.27.0 to v1.28.0

This detailed log outlines the key features, bug fixes, and preparatory changes introduced in incremental releases leading up to the v1.28.0 release, which includes Hardfork 28 (HF28).


⚠️ Important Upgrade Notice

Upgrading to 1.28.0 will typically require a full node replay due to changes in the internal hived state format and data structures.

New options impacting behavior:

  • block-log-split - defaults to 9999 to support splitting the block_log file into multiple "part" files (each part file stores 1 million blocks). If you wish to preserve the previous monolithic block_log file behavior, set this option to -1.

    Splitting the block_log file into multiple part files allows you to relocate part files on different filesystems and symlink them in the blockchain directory. This means that multiple hived nodes can use a single set of part files to share most of the block log history (once a part file is filled with 1M blocks, it is never written to again).

    If the default block-log-split value is lowered, nodes will operate in a "pruned" mode, only keeping the latest N 1M block parts. In the extreme case of setting block-log-split to 0, the node will not keep the raw contents of any blocks.

    Operating in pruned mode saves disk space, but also reduces the node's ability to support block_api usage (API for fetching historical blocks) and provide old blocks to other nodes that are syncing from scratch.

    Note for updating an older version of hived: the hived tool will automatically perform a block_log split of an existing monolithic block_log file when the block-log-split option is changed from monolithic (-1) to any other value, including the new default value of 9999. This will temporarily require double the normal storage during the time the file is being split into part files. If you wish to avoid this, you must explicitly set block-log-split to -1 before starting the upgraded node.

  • comments-rocksdb-path - option to specify location of the external storage database directory for comments (this is state data that was previously stored directly in the shared memory file). Defaults to comments-rocksdb-storage subdirectory in the shared memory directory. You can specify an absolute path to place it in a separate directory from the one used to store the shared memory file (and thus reduce the ramdisk size required to most efficiently perform replay or sync operations).

  • changes related to options useful for testing like stop-replay-at-block (renamed to stop-at-block also allowing to stop processing at block received from sync), exit-at-block allowing to stop hived process after receiving given block


πŸš€ I. Hardfork 28 (HF28) - Protocol Consensus Changes

These changes were implemented in the 1.27.x branch and are scheduled to be activated upon reaching the HF28 block.

Feature Area Change / Details MR/Issue Reference
Block Size Limit Witness-configurable block size is capped at 2MB. Merge Request 1357
Transaction Expiration Increased the transaction expiration time for better network resilience. Merge Request 1383
HBD Treasury Inflation HBD held in the Treasury is removed from inflation calculations. Merge Request 1467
Authority Checks Stricter authority matching is enforced (e.g., an active authority can no longer satisfy a posting level requirement). Merge Request 1408, Issue 716
Signature Flexibility Redundant (ineffective) signatures are allowed. Owner/active/posting authorities required by mixed operation types can be combined in a single transaction. Merge Request 1420
Vote Limits Vote edit limits are eliminated on posts. Issue 458
Recurrent Transfers Multiple recurrent transfers are allowed for the same sender/receiver pair. Issue 382
Proposal Voting Votes for invalid proposals will cause the transaction to fail. Merge Request 1460

II. Incremental Release Changes (v1.27.0 to v1.27.12)

Version 1.27.1 (Hotfix)

  • Fixes: Hotfix specific to the condenser_api::get_ops_in_block call.

Version 1.27.2

  • New Tools & Performance: Added block_log_util tool (Merge Request 694). Upgraded secp256k1-zkp library for signature processing performance improvements (Merge Request 689).
  • API & RC: Added support to automatically generate RC statistics (get_rc_stats, get_rc_operation_stats) (Merge Request 670). Improved transaction status API calls to include the optional RC cost consumed by a given transaction (Merge Request 771).
  • Fixes: Improved block statistics logging (Merge Request 650). Fixed slow shutdown if node was syncing (Merge Request 741).
  • New Operation: Added virtual operation: proxy_cleared_operation (Merge Request 681).

Version 1.27.3

  • RC Features: Implemented minimum RC delegation feature (Merge Request 775). Improved RC cost calculation for recurrent_transfer operations (Merge Request 803).
  • Fixes: Improved chain-state verification to prevent issues when a new index is added to an already filled state file (Issue 423). Fixed filtering in database_api::list_proposal_votes (Merge Request 773).

Version 1.27.4

  • Features: New virtual operations added (Merge Request 332). Prerequisites coded for strict matching of data structures to shared_memory.bin and snapshot contents (Merge Request 784).
  • Fixes: Fixed hived shutdown problems when executing broadcast_transaction_synchronuous and when using --exit-before-sync. RC mana can no longer go under zero (Merge Request 863).

Version 1.27.5

  • API Changes: All condenser_api methods now return result sets using the legacy JSON form (Merge Request 964).
  • Infrastructure: Introduced the Beekeeper tool for secure key management and signing. RC code moved closer to the chain code for future consensus preparation (Merge Request 917). New dependency on uring library to speed up file I/O (Merge Request 968).

Version 1.27.6

Version 1.27.7

  • Disk & Data Management: Introduced Pruned Block Log support via the new block-log-split configuration option.
  • Security & Stability: Added new options (rc-flood-level, rc-flood-surcharge, max-mempool-size) to prevent potential transaction flooding (Merge Request 1397).
  • Configuration Cleanup (Deprecation):
    • Removed deprecated plugins: follows and tags.
    • Renamed options: seed-node β†’ p2p-seed-node; rpc-endpoint removed in favor of explicit webserver-http-endpoint / webserver-ws-endpoint.
  • Functional: Hived internal default option values are now set regardless of config.ini presence.

Version 1.27.8

  • Fixes: Relaxed chain state comparison rules to facilitate seamless node upgrades (Issue 734). Fixed issues where a broken peers.json file could block P2P communication.

Version 1.27.9

  • HBD treasury removed from inflation calculation (to be activated at HF28)
  • vote operations pointing to nonexisting proposals will fail (to be activated at HF28)
  • bugfixes in beekeeper implementation related to wallet locking
  • size optimizations of Typescript version of beekeeper

Version 1.27.10

  • Fixes: Fixed bugs in Account History RocksDB plugin specific to full pruned node configurations (Issue 748). Fixed bugs specific to chain state comparison after snapshot loading (Issue 749).
  • Functional: Improved snapshot loading verification (Merge Request 1505). Updated the RocksDB library version to gain stability bugfixes.

Version 1.27.11

  • Upgrade from Ubuntu 22.04 to Ubuntu 24.04 as base build environment
  • optimization: eliminate undo sessi...
Read more

1.27.8

30 Jan 08:17

Choose a tag to compare

This is a minor release that does not require a hardfork yet.

Warning If you are upgrading from version older than 1.27.7 please read all relevant release notes, i.e.: https://github.com/openhive-network/hive/releases

Fixes:

  • relaxed rules specific to chain state comparison (version difference does not invalidate state what blocked seamless upgrade of hived node)
  • Issue #734 - broken peers.json can block p2p communication
  • Issue #739 - fixed build problems

1.27.7

14 Dec 11:33

Choose a tag to compare

Release notes

Minor release. DOES NOT REQUIRE hardfork yet.

Warning: this update changes hived state format and requires hived node replay, if you are using version 1.27.6 or earlier.

Configuration option changes

  1. The default behavior of options has changed. Previously, an option's default value would only take effect when the config.ini file was generated for the first time. In that case, the file contained explicit option assignments based on their defaults. This was misleading because it was impossible to determine later whether an option was intentionally set by the user or simply left as the default.
    Now, options without explicit assignments in the config.ini (or in application command line argument list) have internally set default value regardless of config.ini presence.

  2. Changes made in the hived configuration option set:

    1. Added new options specific to performance tweaks (to prevent transaction flood):

    2. Added option to configure a block log splitting:

      • block-log-split, defaults to 9999 and allows to automatically split monolithic block log file into 1M block chunks.

      Please note that this behavior can be troublesome if your environment has limited disk space (you need temporarily twice the size of block_log to split it).

      If you want to keep old behavior (monolithic block_log), please set this option to -1.

    3. Simplified usage of transaction status plugin and change its options:

      • removed transaction-status-track-after-block,
      • removed transaction-status-rebuild-state,

      Right now transaction status plugin relies only on transaction-status-block-depth and head block number estimation so it activates tracking automatically according to chosen depth.

    4. Removed deprecated hived plugins: follows and tags

    5. Eliminated options for deprecated plugins: https://gitlab.syncad.com/hive/hive/-/issues/649

    6. Changed p2p plugin options:

      • removed seed-node in favor to p2p-seed-node
      • removed force-validate in favor to p2p-force-validate
    7. Changed webserver plugin options:

      • rpc-endpoint option removed in favor of: webserver-http-endpoint or webserver-ws-endpoint
    8. Changes in the set of options useful for testing:

      • stop-replay-at-block has been changed to stop-at-block which also allows to stop during p2p sync (i.e. not only during replay).
      • exit-before-sync option has been replaced by exit-at-block which also allows to exit during p2p sync.
      • Removed debug plugin edit-script option

Functional changes

Implemented HF28 changes (even this version does not activate the Hardfork)

  1. Improved witness properties update (new values appeared too early) https://gitlab.syncad.com/hive/hive/-/merge_requests/1360
  2. Max block size configuration (by witnesses) can't exceed 2MB value: https://gitlab.syncad.com/hive/hive/-/merge_requests/1357
  3. Increased transaction expiration time: https://gitlab.syncad.com/hive/hive/-/merge_requests/1383
  4. Authority verification changes:
  5. Voting power changes: https://gitlab.syncad.com/hive/hive/-/issues/609
  6. Eliminate vote edit limits: https://gitlab.syncad.com/hive/hive/-/issues/458
  7. Recurrent transfer changes:
  8. Fixes related to decline_voting_rights operation: https://gitlab.syncad.com/hive/hive/-/issues/441

HF28 has been scheduled to 08. February 2025 13:00 UTC, although to make it possible another (1.28.0) version must be published. It is planned to make it backward compatible to this one (containing only version change).

New features

  1. Support for pruned block log. Hived configuration options allows to store blocks in local blockchain subdirectory as:
    • monolithic file (as previously: single block_log file),
    • split into 1M block parts what allows you to relocate files across different filesystems and symlink them in the blockchain directory
    • prunned to store latest N 1M block parts (including 0 to avoid block storage at all) Block log prunning allows to save disk space, but also reduces ability to support block_api usage and P2P communication. The hived tool is also able to perform automatically block_log split when configuration change from monolithic to split storage. The block-log-split option defaults to 9999 to enable split mode in the block storage. block_log_util tool also has been extended by support of file splitting.
  2. Hived API supports keep-alive connections: https://gitlab.syncad.com/hive/hive/-/merge_requests/1363
  3. Configuration ability preventing hived node flooding. See previously mentioned options for details.

Functional and performance improvements

  1. Better error handling in case of missing disk space to store shared memory file. Allows to see error at hived startup, instead of at random time when actual memory allocation failed during runtime processing. See https://gitlab.syncad.com/hive/hive/-/merge_requests/1372 for details

Bug fixes

  1. Fixed api_account_object::post_voting_power value returned by all database_api methods providing account properties (like find_accounts - previously hived returned incorrect data. See https://gitlab.syncad.com/hive/hive/-/merge_requests/1401 for details
  2. Fixed operation JSON format returned by condenser_api methods: https://gitlab.syncad.com/hive/hive/-/merge_requests/1381
  3. Fixed database_api.verify_account_authority call: https://gitlab.syncad.com/hive/hive/-/merge_requests/1328/diffs?commit_id=3156ddf4bf16e2f0b4742762115651010621dac3
  4. condenser_api.verify_account_authority adjusted to above changes
  5. Some DGPO properties have been updated too early: https://gitlab.syncad.com/hive/hive/-/merge_requests/1360
  6. Eliminated crash at resync: https://gitlab.syncad.com/hive/hive/-/merge_requests/1367
  7. Eliminated multi threading issues in witness plugin: https://gitlab.syncad.com/hive/hive/-/merge_requests/1268
  8. Hived shutdown fixes: https://gitlab.syncad.com/hive/hive/-/merge_requests/1418

1.27.6

07 Jul 19:23

Choose a tag to compare

No consensus changes (No HardFork Required).

No replay required when upgrading from version 1.27.5.
Replay required from versions 1.27.4 and older.

P2P Communication Stability: Resolved an issue in peer-to-peer communication where, under rare circumstances, faulty code could cause a crash.

v1.27.5

25 Apr 23:25

Choose a tag to compare

This is a minor release: 1.27.5. It does not require a hardfork nor a hived node upgrade (although it is recommended). Upgraded nodes will require a full replay.

Most of changes is specific to API nodes improvements like also this version is required by HAF node.

  1. Hive/Blockchain features/improvements
  2. New beekeeper tool that safely holds customer keys and signs Hive transactions without a need to directly access private keys:
  3. DevOps/CI improvements:
  4. Tests improvements:

and more (to be supplemented soon)

v1.27.4

11 Apr 09:29

Choose a tag to compare

Warning: this update changes hived state format and requires hived node replay, if you are using version 1.27.3 or earlier.

  1. General notes: upgrade to Ubuntu 22.04 as base supported OS: https://gitlab.syncad.com/hive/hive/-/merge_requests/838
  2. New features:
  3. Hived bugfixes:
  4. Python regression test improvements:
  5. Low level unit tests extended by suite of tests covering AH calls (prerequisites to internal code cleanup/refactoring, which will need good test base):
  6. Devops/workflow automation:

v1.27.0

21 Oct 06:11

Choose a tag to compare

Restore the prior timeshare/backup witness scheduling behavior.
Due the nature of this change it is a hardfork release.

v1.26.1

21 Oct 05:58

Choose a tag to compare

Optional bugfix release: snapshot dump and load extended by generic_index::_next_id to prevent update_proposal failures on nodes configured using snapshot.

v1.26.0

12 Oct 20:55

Choose a tag to compare