Skip to main content

Changelogs

Changelogs

Chainweb Node

Aug 25, 2024

Contributors

    edmundnoble

2.25.1

This is a minor point release. Upgrading is strongly recommended.

To upgrade, pull the latest docker image, or download the binary and restart the node with the same configuration file as before.

Misc

  • Disable the unused p2p payload batch endpoint.

Jul 22, 2024

Contributors

    chessaiak3nedmundnoble

2.25

This is a major version update. This release replaces all previous versions.

Any prior version will stop working on 2024-08-21T00:00:00Z. Node administrators must upgrade to this version before that date. The 2.25 feature upgrade will occur at block height 5060924 which is estimated to be mined at 2024-08-21T00:00:00Z.

Misc

  • Updated to Pact 4.13: https://github.com/kadena-io/pact/releases/tag/v4.13.0

  • Database compaction: Significant performance improvements

  • Verifier Plugin support for Hyperlane merkle proofs. This brings Chainweb into compliance with the latest version of the Hyperlane protocol.

  • Log current cut periodically, instead of when it changes, for more consistency and less space use.

  • Better progress messages for read-only replay, including a time estimate and smoothed rate calculation.

  • Speed up read-only replay by avoiding playing empty blocks

  • Fix a performance bug in read-only replay which was not using a cache for module data

  • Small fixes to exception safety result in Ctrl-C now working properly during read-only replay (and other scenarios

  • Stop exporting constructor for BlockHeader from Chainweb.Blockheader

  • Stop exporting constructor for PayloadData from Chainweb.Payload

Jun 17, 2024

Contributors

    chessaiedmundnobleak3nthoughtpolice

2.24.1

This is a minor point release. Upgrading is strongly recommended.

To upgrade, pull the latest docker image, or download the binary and restart the node with the same configuration file as before.

Misc

  • Fixes cut pruning logic; during a previous change, there was a math error that caused no cuts to ever be pruned from RocksDB

  • Don't prune cuts on startup. This avoids a race condition where we prune cuts on startup, and we don't write a cut before shutting down.

  • Fixed a crash when using read-only replay with no upper bound

  • Disable telemetry monitor threads when telemetry is disabled anyway

  • Reorganize ValidationFailure error message to be more readable

  • Expand /info endpoint with: historical fork heights, historical chain graphs, node package version, genesis heights, the upcoming service date, and the block delay.

  • Update pact pin for Hyperlane natives fixes

  • Add message-id & message body validation & merkle tree metadata support to the Hyperlane message plugin.

  • Add capability to resume blocks in progress.

  • Miner now periodically "refreshes" blocks, ensuring that they use all transaction in the mempool, if possible.

  • Report refreshed blocks to the miner update stream

  • Default compiler is now GHC 9.6.5, and update freeze deps

  • Payloads Endpoint: Support octet-stream Content-Type with binary encoding. Client support will be added at a later time.

  • Logging: move getBlockInMem to Debug level

  • Logging: Make cut timeout logs more clear

  • Logging: Put cut fetch trace telemetry around cut timeouts instead of inside, so we still get telemetry even if a cut fetch times out.

  • Logging: Move cut extensibility to Info level, and log less often after the first one

  • Logging: Failed transactions are now at Debug rather than Info level

  • Logging: Restore block timeout logging; a previous change accidentally removed this.

  • Logging: warp HTTP server errors are now at Info level

  • Logging: P2P log messages are shorter and improved

  • Logging: Less verbose initialization

  • Logging: Disable telemetry backend by default for less verbosity

  • Logging: Cut pipeline logging is more descriptive

  • Logging: Rename connectioncounters index to counters

  • Logging: Single P2P task failures are now at Debug instead of Info level, while they're still being retried

  • Logging: Unify HTTP error logging across service and P2P APIs

  • Logging: Add a backend for P2P stats so they aren't logged as text

  • Logging: Log rewound blocks during catchup instead of played blocks

  • Logging: Silence unnecessary chainweb-node: RequestCancelled logs from PactService, by catching them in the request worker.

  • Logging: Stop logging ConnectionIsClosed

Jun 14, 2024

Contributors

    edmundnoblethoughtpolice

2.24

This version replaces all previous versions. Any prior version will stop working on 2024-05-29T00:00:00Z. Node administrators must upgrade to this version before that date. The 2.24 feature upgrade will occur at block height 4,819,246 which is estimated to be mined at 2024-05-30T00:00:00Z.

This version will expire on 2024-08-21T00:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • Transactions with expired TTLs and transactions with creation times in the future now yield different errors

  • Buying and redeeming gas were optimized, meaning all transactions now require less space in the Pact state and take slightly less time

  • Block payloads (i.e. transactions and their outputs are now stored in a more space-efficient binary format. They are also now indexed by block height in addition to hash, improving overall performance of the payload store by increasing data locality. Payloads already in the node's database will not be automatically migrated; this change only applies to newly written payloads.

    A migration tool may be released in future.

  • Nodes configured to run without contacting any other nodes now log this more accurately

  • Add a flag --full-historic-pact-state which is set by default. This flag disallows use of a compacted Pact state. Unsetting this flag will not compact the Pact state automatically, but it will decrease the amount of disk space used by the Pact state in subsequent transactions to some extent.

  • Add "allow" verifier to devnet, to allow testing verifier plugin integrations in third-party tools

  • Add a CLI flag for executing non-destructive replays of Pact history, to augment the already existing config file field

  • Pact requests are now cancellable, even before they start, and the interface to the Pact service is now easier to use

  • Mined blocks that fail validation on the mining node produce better errors including the outputs of the block from when it was created

  • Fix the block validation to correctly log the number of fork blocks played

  • Make tests more repeatable

  • Make some tests faster

  • Module cache contents should now be irrelevant to block validation, making block validation less brittle

  • Move some log messages from Info level to Debug level making it more useful to run a node at log level Info with telemetry disabled

  • cwtool is now included in the docker image produced by CI allowing administrators to use it more easily

  • The coin contract directory structure was reorganized to match the directory structure of the namespace contract for ease of maintenance

Jun 12, 2024

Contributors

    edmundnoblechessai

2.23.2

This is a minor point release. Upgrading is recommended.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • Fix catchup for nodes started at blocks before the service date

  • Fix a small internal bug in the new read-only checkpointer

  • Fix a small bug in compaction tests, causing flakiness

Jun 12, 2024

Contributors

    chessaiedmundnoble

2.23.1

This is a minor point release. Mining nodes should be upgraded as soon as possible; for other nodes, upgrading is recommended.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • The mining loop will more persistently attempt to create new block payloads.

  • The service date for chainweb-node is now only respected on Mainnet and Testnet.

  • The pact /listen endpoint should take less memory and CPU time.

  • Fix some invalid log messages.

  • Various tests have been "deflaked", to hopefully make them more reliable.

Jun 14, 2024

Contributors

    edmundnoblechessaithoughtpoliceenobayramimalsogregrsoeldnerjmcardonlarskuhtz

2.23

This version replaces all previous versions. Any prior version will stop working on 2024-03-06T00:00:00Z. Node administrators must upgrade to this version before that date. The 2.23 feature upgrade will occur at block height 4,577,530 which is estimated to be mined at 2024-03-07T00:00:00Z.

This version will expire on 2024-05-29T00:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Minors

  • Internal reworks to support a new, more efficient storage format for block payloads

    • This new format is not complete, and will appear in a future release.
    • In the mean time, this has enabled the /payload API changes mentioned above.
  • Major internal reworks for an upcoming feature known as compaction which will help reduce the amount of storage space for chainweb. (, ,

    • Compaction IS NOT STABLE
    • Usage of "compacted nodes" or tools is NOT currently supported

Misc

  • Updated to Pact 4.11: https://github.com/kadena-io/pact/releases/tag/v4.11.0

  • The coin contract was updated to version 6, implementing KIP-0022

  • Pact "verifier plugins" are now available, implementing KIP-0028

  • Fix a bug where nodes could take too long to start up if they took too long to rewind to their latest cut.

  • Rename two user-visible network IDs

    • development was renamed to recap-development
    • fast-development was renamed to development
  • Running a node and making queries to /local should be much faster when the ?rewindDepth query parameter is provided.

  • Introduced new --enable-local-timeout (or chainweb.enableLocalTimeout configuration option to enable a timeout for /local queries. This is disabled by default.

  • New REST API endpoint features :

    • The /payload GET endpoint now:

      • Takes a ?height query parameter, allowing you to specify the block height of the payload you are querying. This parameter will become mandatory in the future.

      • The batch query endpoint now supports submitting block heights along with their hashes. Instead of submitting a list of hashes, submit a JSON object such as:

        { "hashes": ["hash1", "hash2", "hash3"], "heights": [1, 2, 3] }
        

        See the Chainweb OpenAPI specification for more information on how to use this feature. This parameter will become mandatory in the future.

    • The /payload/outputs POST endpoint now:

      • Takes a ?height query parameter, allowing you to specify the block height of the payload you are querying. This parameter will become mandatory in the future.

      • The batch query endpoint now supports submitting block heights along with their hashes. Instead of submitting a list of hashes, submit a JSON object such as:

        { "hashes": ["hash1", "hash2", "hash3"], "heights": [1, 2, 3] }
        

        See the Chainweb OpenAPI specification for more information on how to use this feature. This parameter will become mandatory in the future.

  • Major scalability improvements to core "checkpointing" infrastructure, allowing faster full-chain replays and other operations

  • Update RocksDB build to 8.3.2

  • Migrate to a unified Nix flake for Haskell developers on Chainweb

  • Fix some perfectly benign, but scary warning messages, when compiling Chainweb

  • Several changes to address various test "flakes" and internal test infrastructure improvements (, , , , , et cetera

  • Better logging in the mining loop

Jun 22, 2024

Contributors

    imalsogregedmundnoblersoeldnerjmcardonchessaithoughtpoliceak3njwiegleylarskuhtz

2.22

This version replaces all previous versions. Any prior version will stop working on 2023-12-13T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will expire on 2023-03-06T:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • Updated to Pact 4.10 (numerous, see [Pact changelog](https://github.com/kadena-io/pact/releases/tag/v4.10

  • Node support for webauthn signers, scoped signatures, and webauthn keyset formats in Pact

  • Block endpoint added to Service API

  • Fix batch /polling so that it no longer omits results

  • Add block header to validation failure message

  • Halt block fill algorithm constructively if we exceeded the tx fetch limit

  • Be more careful not to write the results of invalid blocks to the pact state

  • Fix Mac M2 compatibility with older blocks

  • Support aeson-2.2

  • Fix benchmarks for block creation and validation

Jun 19, 2024

Contributors

    imalsogregemilypichessai

2.21

This version replaces all previous versions. Any prior version will stop working on 2023-10-19T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will expire on 2023-12-13T:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • Support for WebAuthN signatures in Pact keyset guards. (, see [https://github.com/kadena-io/pact](Pact

  • Updated to Pact 4.9. (numerous, see [Pact changelog](https://github.com/kadena-io/pact/releases/tag/v4.9

  • Updated from tls package version 1.7.1 to 1.9.

  • Updated from base64-bytestring package version 1.0.0.3 to 1.2.1.0.

Jun 22, 2024

Contributors

    edmundnobleak3nlarskuhtzjwiegleychessai

2.20

This version replaces all previous versions. Any prior version will stop working on 2023-09-07T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will expire on 2023-10-19T00:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • A new chainwebVersion called fast-development, intended for use by Pact developers. See for more details.

  • Updated to Pact 4.8. (numerous, see [Pact changelog](https://github.com/kadena-io/pact/releases/tag/v4.8

  • Fixed an issue where /local calls that rewind to a previous block could have the wrong behavior or gas usage if rewinding crosses fork boundaries.

  • Updated from GHC 8.10.7 to GHC 9.6.2.

  • PactService now emits significantly more structured logs.

Jun 22, 2024

Contributors

    ak3nlarskuhtzedmundnobleemilypichessai

2.19.2

NOTE: THIS VERSION SUPERSEDES 2.19.1. PLEASE UPDATE AS SOON AS POSSIBLE.

This version replaces all previous versions.

This version will expire on 2023-09-07.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • Add rewind support to /poll and /local.

  • Add some leniency to mempool creation time checks.

  • Return metadata from /local with preflight set to true.

  • Optimize new block creation.

Jun 21, 2024

Contributors

    sirlensalot

2.19.1

NOTE: THIS VERSION SUPERSEDES 2.19. PLEASE UPDATE AS SOON AS POSSIBLE.

This version replaces all previous versions. Node administrators must upgrade to this version before 2023-06-01T00:00:00Z.

This version will expire on 2023-09-07.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • Disable user function return value typechecking

  • Add typechecking option to tx-sim.

Jun 24, 2024

Contributors

2.19

NOTE: THIS VERSION IS OBSOLETE. IT IS REPLACED BY 2.19.1. PLEASE UPDATE AS SOON AS POSSIBLE.

This version replaces all previous versions. Any prior version will stop working on 2023-06-01T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will expire on 2023-09-07.

To upgrade, pull the latest docker image or download the binary and restart the node.

Patches

  • API endpoints now more strictly comply to the API specification at api.chainweb.com.

  • A small memory leak has been fixed.

Misc

  • Support for Pact 4.7 :

    • Pact errors are now displayed to users of the Pact /poll endpoint. Some Pact errors have changed and been made shorter.

Jun 19, 2024

Contributors

    edmundnoblelarskuhtz

2.18.1

This is a feature and bug-fix release. Upgrading is optional but recommended.

To upgrade, pull the latest docker image or download the binary and restart the node.

All 2.18.* versions will expire on 2023-06-01T00:00:00Z.

Changes:

Misc

  • Optimize JSON+base64 encoding.

  • Use application/octet-stream encoding for P2P header queries.

  • Remove unused rate limiting configuration settings.

  • Remove CORS support from the P2P API.

  • Remove unused hashes and SPV endpoints from the P2P API.

  • Tighten default P2P rate limits.

  • Add dedicated rate limiter for Mempool requests.

  • Disable unused application/json;blockheader-encoding=object in responses from the P2P API.

Jun 24, 2024

Contributors

    emilypiimalsogregjmcardonjwiegleylarskuhtz

2.18

This version replaces all previous versions. Any prior version will stop working on 2023-03-02T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will expire on 2023-06-01T00:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Changes:

Patches

  • Filter Module Cache for just coin contract.

  • Prevent table name clashes in module.

  • Full chain replay is now possible on Intel Mac & Linux, and M1 Mac. When upgrading directly from chainweb-node version 2.17, please, also take a look at the changes in versions 2.17.1 and 2.17.2 below.

Misc

  • New /local endpoint preflight simulation API.

  • Support for Pact 4.6:

    • New ZK native function support.
    • Better gas estimation.
  • Warning deprecation system support in /local:

    • Allows the node to provide warnings for upcoming feature deprecations in Pact.
    • The same warnings are generated by the repl in Pact 4.6.
  • Internal changes to support future chain database schema changes.

  • Remove libtbb as a dependency.

Jun 21, 2024

Contributors

    edmundnoblesirlensalotlarskuhtzLindaOrtega

2.17.2

This is a feature and bug-fix release. Upgrading is optional but recommended.

To upgrade, pull the latest docker image or download the binary and restart the node.

All 2.17* versions expire on 2023-03-02T00:00:00Z.

Changes:

Patches

  • withSavepoint now catches SomeAsyncException.

  • Fix transfer cost for Rosetta transaction generator.

Misc

  • Add telemetry logging for Database size.

  • Make Pact service log asynchronous exceptions with log-level warn and not error.

  • Log replay height based on time, not blocks.

  • Add telemetry logging for node top-level status.

  • Add module cache to checkpointer.

  • Censor BackupConfig from config endpoint.

  • Simulate whole block(s in transaction simulator.

  • Fix some command line help messages.

Jun 21, 2024

Contributors

    sirlensalotedmundnoblelarskuhtz

2.17.1

This is a feature and bug-fix release. Upgrading is optional but recommended.

To upgrade, pull the latest docker image or download the binary and restart the node.

All 2.17* versions expire on 2023-03-02T00:00:00Z.

Changes:

Patches

  • Fix initialHeightLimit CLI argument parsing to not override config file.

  • Fix cut GET endpoint height limiting.

Misc

  • Add transaction simulator to cwtools.

Jun 24, 2024

Contributors

    jmcardonjwiegleylarskuhtzedmundnobleemilypi

2.17

This version replaces all previous versions. Any prior version will stop working on 2022-12-01T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will expire on 2023-03-02T00:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Changes:

Patches

  • Filter Module Cache for just coin contract.

  • Prevent table name clashes in module.

Misc

  • Remove error messages from pact output for on-chain transactions. Dapps can still retrieve transaction error messages from the local endpoint.

  • Implement a per-tx timeout during creation of new blocks to prevent mining nodes from stalling when block creation takes too long.

  • Miscellaneous changes for fine tuning of the gas model.

May 29, 2024

Contributors

    larskuhtzedmundnoble

2.16.1

This is a feature and bug-fix release. Upgrading is optional but recommended.

To upgrade, pull the latest docker image or download the binary and restart the node.

NOTE: This release upgrades the version of RocksDB. After upgrading to this version previous versions of chainweb-node will not be able to open the database. Additionally, when using the ubuntu binaries the set of required system dependencies changes. For details please see the release nodes.

Misc

  • Upgrade RocksDB version

  • Support for partial replays

  • Allow enabling gas logs from configuration

  • Reduce volume of info level logging

  • Check file descriptor rlimit on startup

Jun 19, 2024

Contributors

    larskuhtzjwiegleyedmundnoble

2.16

This version replaces all previous versions. Any prior version will stop working on 2022-09-01T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will expire on 2022-12-01T00:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Changes:

Patches

  • Fix some potential race conditions in SQLite interface code.

Misc

  • Upgrade to Pact 4.4. This release brings namespaced keysets. For further changes check the [Pact Changelog](https://github.com/kadena-io/pact/blob/master/CHANGELOG.md.

  • Improve performance during catchup.

  • Improve P2P protocol performance.

  • Improve TLS session management.

  • Faster and safer binary serialization across the board.

Jun 24, 2024

Contributors

    jmcardonlarskuhtzemilypiemmanueldenloyeedmundnoble

2.15

This version replaces all previous versions. Any prior version will stop working on 2022-06-16T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will expire on 2022-09-01T00:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Patches

  • Fix a pact module cache issue that could occasionally result in corrupted databases.

Misc

  • Upgrade to Pact 4.3.1. The release contains miscellaneous performance improvements and bug fixes.

  • Upgrade to Coin V5. This adds the new TRANSFER_XCHAIN_RECD event that is emitted when the funds of a cross-chain transfer are redeemed on the target chain.

  • Support resetting chainweb-node to a lower block height at startup.

Jun 21, 2024

Contributors

    larskuhtzsirlensalot

2.14.1

This is a feature and bug-fix release. Upgrading is optional but recommended.

Unlike mandatory service releases, optional releases can be rolled back in case of an issue with the release. Optional releases are therefore well suited for early integration and testing of new chainweb-node versions.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • Improve performance of branch queries in some cases

  • Make upper and lower bounds in branch APIs optional

  • Make the payload API batch limit configurable on the service API. Restrict the payload batch limit on the P2P API to 50 items.

  • More robust block refill logic

Jun 21, 2024

Contributors

    sirlensalotlarskuhtzemilypimightybyte

2.14

This version replaces all previous versions. Any prior version will stop working on 2022-04-21T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2022-06-16T00:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Misc

  • Improve Mempool to fill blocks more efficiently

  • Pact Changes (, , , , , ,, , , :

    • Gas changes for integer and decimal operations.
    • NaN and +/- Infinity throw errors now.
    • Several other nonsensical arithmetic expressions and operations throw errors now.
    • Support of nested Defpacts and native continue.
    • New natives create-principal and validate-principal
    • Add support for principalsr:, m:, u:, p:, and w: in coin.
    • Addition of fungible-xchain-v1 interface, which provides a TRANSFER_XCHAIN managed capability.
    • Implement fungible-xchain-v1 in coin.
    • Miscellaneous bug fixes
    • Various performance improvements, in particular for deeply nested function calls.

Jun 19, 2024

Contributors

    edmundnoblelarskuhtzmightybyte

2.13.1

This is a feature and bug-fix release. Upgrading is optional but recommended.

Unlike mandatory service releases, optional releases can be rolled back in case of an issue with the release. Optional releases are therefore well suited for early integration and testing of new chainweb-node versions.

To upgrade, pull the latest docker image or download the binary and restart the node.

Patches

  • Remove spurious warning when the hostname is configured as 0.0.0.0.

  • Fix typo in list of reserved IP addresses.

Misc

  • Restrict HTTP request body sizes for all API endpoints to 2MB.

  • Periodically prune old cuts from the RocksDb database and store current cuts less often. This saves up to 30% disk space.

  • Set default P2P port to 1789.

  • Add the telemetry/logger type to log messages.

  • Add new optional endpoints /make-backup and /check-backup to the service API. When enabled these endpoints can be used to trigger the creation of backups of the chainweb-node databases. Further details can be found in the [Chainweb API documentation](https://api.chainweb.com.

Jun 24, 2024

Contributors

    larskuhtzjmcardonsirlensalotLindaOrtegamightybyte

2.13

This version replaces all previous versions. Any prior version will stop working on 2022-02-24T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2022-04-21T00:00:00Z.

To upgrade, pull the latest docker image or download the binary and restart the node.

Minors

  • Adds Construction API endpoints for Rosetta version 1.4.4 as defined here: https://www.rosetta-api.org/docs/1.4.4/ConstructionApi.html.

  • For this version of the Rosetta Construction API , only transfer operations with k:accounts are supported.

Misc

  • [Pact] Enforce miner keyset formats.

  • [Pact] Fix Pact parser to always consume all input.

  • [Pact] Improve gas cost calculations.

  • [Rosetta] Chainweb Rosetta API 2.0.0

  • A Rosetta Operation's metadata no longer returns the Operation's "tx-id" or its account's "total-balance". The Construction API declares intended Operations and looks for these operations in blocks. There is no way for the Construction API to know the "tx-id" and "total-balance" when creating the intended operations.

-

2.12.2

This is a new feature and bug fix release for the Chainweb Rosetta API 1.0.0 (#1135).

To upgrade, pull the latest docker image or download the binary and restart the node.

Patches

  • After the fork to Pact 4.2.0, the rosetta /block and /account/balance

  • endpoints returned TxLogs not parsable. This version fixes this.

Misc

  • Adds related transaction (continuations information to the /block endpoints.

  • Adds related operation information to /block endpoints. Gas operations are now linked together, while coin-table operations are linked to each other in the order they appear.

  • Improved parsing of remediation logs for blocks containing coin v2 and 20 chain forking transactions. Previously, the logs in the coin v2 block were all grouped together into a single request key, but now it will show the different request keys of the remediation transactions.

  • Re-enabled metadatas. Rosetta testing tooling used to error out when submitting unstructured JSON. This bug has seen been fixed.

  • Introduces the rosettaImplementationVersion value to denote changes in the internal implementation of the Rosetta API.

  • Adds internal metadata data types to facilitate documenting and expanding the metadatas used by the Rosetta endpoints.

Jun 21, 2024

Contributors

    slpopejoylarskuhtz

2.12.1

This is a bug fix release. Upgrading is highly encouraged. In particular, if you experience issues with chainweb-node version 2.12, upgrading to version 2.12.1 will likely resolve those issues.

To upgrade, pull the latest docker image or download the binary and restart the node.

This version will expire on 2022-02-24T00:00:00Z.

Misc

  • Correct mempool tx persistence, check tx details in validate

  • Remove deprecated configuration options

Jun 24, 2024

Contributors

    jmcardonedmundnobleemmanueldenloyesirlensalotlarskuhtz

2.12

This version replaces all previous versions. Any prior version will stop working on 2022-01-13T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2022-02-24T00:00:00Z.

Misc

  • Upgrade Pact version to 4.2.0.

  • The default setting for pruning the chainweb database has been changed to "none" to reduce unnecessary work and speed up node start times.

  • Nodes will now take a snapshot of the chainweb database (RocksDB if sent the SIGUSR1 signal. These snapshots can be used for backups and do not take significant space until the database has diverged significantly from the snapshot. Also, SIGUSR2 no longer terminates the node.

  • Nodes will log their progress while pruning the database.

  • The Pact queue has been instrumented to log its utilization level and latency.

Jun 19, 2024

Contributors

    larskuhtz

2.11.1

This is a minor feature release. It is compatible with version 2.11. Upgrading optional. Please, check the list of changes before upgrading.

Misc

  • New command line options for configuring mining coordination. The options --enable-mining-coordination --mining-public-key=<PUBLIC_KEY> enable the mining API of a node and configure k:<PUBLIC_KEY> as the account that receives mining rewards.

  • Include GET endpoints for cuts, headers, branches, and payloads into the service API.

  • Add configuration for stopping the node after synchronizing the Pact state to the chain database and before starting connecting to the P2P network. This is useful to initializing the Pact database for a new node or validating an existing database.

  • Remove rate limiting support for endpoints of the service API. Rate limiting for the service API should be done by using an external reverse proxy.

  • Log filter rules allow fine grained support for controlling which messages are actually submitted. This version adds the ability to specify for a filter rule a probability with which a log messages passes the respective filter rule. This allows to emit only a certain percentage of message of some kind to the backend.

Jun 21, 2024

Contributors

    larskuhtzslpopejoyemmanueldenloyegiantimi

2.11

This version replaces all previous versions. Any prior version will stop working on 2021-11-18T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2022-01-13T00:00:00Z.

Misc

  • Add priorities to the pact services queue. This gives consensus and new block requests priority over requests from the service APIs and the mempool. It makes nodes more resilient under load.

  • Upgrade Pact version to 4.1.2.

  • Enforce keyset formats.

  • A new configuration option chainweb.minGasPrice (--min-gas-price is added that configures a minimum gas price for transactions. The mempool will reject any transactions that doesn't pay at least this amount for gas. This allows node operators to enforce mindful usage of resources even when the majority of blocks isn't full.

    The default minimum gas limit is raised from 1e-12 to 1e-8.

  • Chainweb node now depends on the OpenSSL library being installed on the system. (Before it already depended on the OpenSSL root certificates being available.

-

2.10

This version replaces all previous versions. Any prior version will stop working on 2021-10-14T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2021-11-18T00:00:00Z.

There are no changes in this version.

Jun 19, 2024

Contributors

    larskuhtz

2.9.2

This is a bug fix release. It is recommended that node operators upgrade their nodes.

This version is fully compatible with previous versions.

Misc

  • Fix a bug where API requests return result pages with more than the upper limit of items.

Jun 19, 2024

Contributors

    larskuhtz

2.9.1

This is a bug fix release. It is recommended that node operators upgrade their nodes.

This version is fully compatible with previous versions.

Misc

  • Fix a bug that causes mempools to ignore new transactions after receiving 10000 transactions on a chain.

Jun 19, 2024

Contributors

    larskuhtz

2.9

This version replaces all previous versions. Any prior version will stop working on 2021-08-19T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2021-10-14T00:00:00Z.

Misc

  • Use 0.0.0.0 as default P2P host address, which enables auto-detection of the IP address of the node.

  • Build and link Pact without CLI tools support.

  • Limit batch size of payload REST API requests 1000 items.

  • Removed several external dependencies from the code base.

Jun 21, 2024

Contributors

    slpopejoysirlensalotemmanueldenloyelarskuhtz

2.8

This version replaces all previous versions. Any prior version will stop working on 2021-06-17T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2021-08-19T00:00:00Z.

Misc

  • coin v3 and Pact 4.0 upgrade

    • Emits coin.TRANSFER events for all balance changing operations. Burns/creates/allocations are indicating using the null account ("". Miner rewards, gas payments, allocations, and cross-chain.
    • Chainweb account protocols: reserves new account names with the format c:data where c is a single-char protocol identifier and data protocol-specified data.
    • Introduces the Chainweb single-key protocol k where data must match a single ED-25519 public key.
    • Leverages Pact 4.0
      • X_YIELD and X_RESUME event emission.
      • blesses previous module hash so that in-progress cross-chain transfers can succeed.
    • Transactional module init cache.
  • P2P API endpoint to get node config

  • Bugfixes and cleanups

Jun 19, 2024

Contributors

    larskuhtz

2.7

This version replaces all previous versions. Any prior version will stop working on 2021-05-06T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2021-06-17T00:00:00Z.

Misc

  • Improve P2P networking configuration.

    • Re-add builtin bootstrap nodes. This also means that default bootstrap nodes will always be used as long as --ignore-boostrap-nodes (or the respective configuration file setting is not enabled.
    • Add X-Peer-Addr response header that allows nodes to auto-discover their external network configuration.
    • Enable chainweb-node to auto-configure the hostname. This eliminates the need to use a (centralized third party service for that.
    • Validate P2P configuration on startup.
    • Validate peer configuration on startup.
    • Check that a chainweb-node can connect with a configurable portion of the known-peers and bootstrap nodes at startup. The portion can be configured via the --bootstrap-reachability option or the chainweb.p2p.bootstrapReachability setting. The value is a number between 0 and 1. If it is 0 the reachability test is disabled.
  • Remove deprecated mining coordination code.

    • Removes support for public mining.
    • Fix two race conditions in the mining API that may have slightly increased the number blocks that got orphaned before being included on the chain.
  • Internal infrastructure to support bridging KDA to other networks

  • New OpenAPI 3.0 specification of the chainweb-node API. The API documentation is maintained in the git repository https://github.com/kadena-io/chainweb-openapi. Is published at https://api.chainweb.com/openapi.

Jun 21, 2024

Contributors

    larskuhtzslpopejoy

2.6

This version replaces all previous versions. Any prior version will stop working on 2021-03-25T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2021-05-06T00:00:00Z.

Misc

  • Increase default listen timeout to 3 minutes

  • Additional verification for coin contract

Jun 19, 2024

Contributors

    larskuhtzslpopejoy

2.5

This version replaces all previous versions. Any prior version will stop working on 2021-02-25T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2021-03-25T00:00:00Z.

If chainweb-node-2.5 is started with existing configuration files, the P2P API remains unchanged. The service API endpoints will be available via HTTP on port 1848. Please read the description below for details about this change.

Minors

  • New command line option --print-config-as=[full|minimal|diff]. full prints a complete configuration file with all options; minimal prints a file that includes only those options that differ from the default values; diff prints the difference between the default configuration and the actual configuration

  • Add payload batch APIs

Misc

  • Publish service APIs on separate HTTP port

    The API of the chainweb-node is split into two separate sub-APIs which are served on two different ports:

    • P2P API: this API includes all endpoint that are used in the P2P inter-node communication. It is exported using HTTPS and must be available on a publicly reachable port.

      The command line option for the this APIs are prefixed with p2p:

      --p2p-host, --p2p-port, --p2p-interface, and the respective certificate related options.

      The respective properties in in the configuration file are unchanged.

    • Service API: this API includes all endpoints that are not directly used for P2P inter-node communication. These include the pact, rosetta, mining, header-stream, info, and health-check endpoints. This API is exported as plain HTTP and can thus be easily used along with a reverse proxy. There is no need to make this API publicly available.

      This API is configured with the configuration options --service-port (default 1848 and --service-interface (default '*'. The respective properties in the configuration file are chainweb.serviceApi.port and chainweb.serviceApi.interface.

    IMPORTANT: The previously used options --hostname, --port, --interface, and the related certificate options got removed. Please, use the new variants instead which are prefixed with the respective API as described above.

  • Use TLS session manager

  • Upgrade to a new version 0.7.5 of the http-client library

  • Build TLS with pclmulqdq support switched on

-

2.4

This version replaces all previous versions. Any prior version will stop working on 2021-01-14T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2021-02-25T00:00:00Z.

  • Ethereum bridge support
  • add endpoint for creating eth-receipt-proofs (#1181)
  • ethereum receipt SPV (#1179)
  • Improve TXOUT SPV to include events (#1178)
  • Pact replay bug fix (#1172,#1169,#1168)

Jun 21, 2024

Contributors

    slpopejoymightybyte

2.3

This version replaces all previous versions. Any prior version will stop working on 2020-11-19T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2021-01-14T00:00:00Z.

Misc

  • Support for Pact Events

  • Upgrade to Pact 3.7. This includes an API change to the pact endpoints for events. For further information see the [Pact readthedocs](https://pact-language.readthedocs.io/en/latest/pact-reference.html#events-1.

Jun 19, 2024

Contributors

    LindaOrtegamightybytelarskuhtz

2.2

This version replaces all previous versions. Any prior version will stop working on 2020-10-15T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2020-11-19T00:00:00Z.

Misc

  • Upgrade to Rosetta version 1.4.4

  • Adjust the default API request rate limits to better match the expected networking loads for 20 chains. This reduces overhead due to HTTP responses with status 429 and improves catchup performance.

Jun 19, 2024

Contributors

    emilypilarskuhtz

2.1.1

This release provides performance improvements and bug fixes.

Misc

  • More rigorously check the correct length of request keys, transactions ids, and hashes in API requests.

  • Fix a bug in the Mempool where transactions that have been included in a block are still marked as pending. Those transactions occupied memory in the Mempool and got synchronized between nodes until they finally expired.

  • The database pruning at node startup is more efficient and can now operate in four different modes, which can be used on the command line with the --prune-chain-database option and in the configuration file with the property chainweb.cuts.pruneChainDatabase.

    • none no database pruning is performed
    • headers only block headers but no payloads are pruned (10-30 seconds
    • headers-checked like headers but also validates all block headers and checks the complete chain Merkle tree including payload hashes. (5-20 minutes
    • full prunes block headers and payloads. (10-20 minutes

    The default is headers. For backward compatibility it is possible to also use Boolean values for setting chainweb.cuts.prunChainDatabase in the configuration file, where false is equivalent with none and true is equivalent with headers.

  • Improved performance of rebuilding the pact database from the chain data.

Jun 19, 2024

Contributors

    larskuhtzemilypi

2.1

This version replaces all previous versions. Any prior version will stop working on 2020-08-13T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2020-10-15T00:00:00Z.

Forks:

This version includes the fork that adds 10 additional chains to Chainweb resulting in 20 chains in total. The fork will occur on

  • Mainnet at block height 852,054, which is expected to happen around 2020-08-20 16:55:14 UTC.

The mining API of chainweb-node will start serving work items for the new chains starting at above block heights for the respective network. The mempool and pact service APIs will accept requests already some time before the transition. POW difficulties will re-adjust within a few hours after the transition. During that time block rates may be slightly higher or lower than usual.

Misc

  • Fix the database location and layout when a custom location is configured.

    This only affects users who configured custom database locations.

    This is a potentially breaking change. The chainweb node tries hard to adjust the database location by itself without user intervention. If you have tooling that depends on a custom database location, you may want check the logs at first start up and double check that everything works as expected.

  • Deprecate the use of the node-id configuration.

    This only affects users who configured the node-id either on the command line or in the configuration files.

    Any node-id settings are now ignored. In particular the database locations doesn't include the node-id any more and just defaults to 0/rocksDb and 0/sqlitedb.

  • Fix a bug where Chainweb node would fail to start when it stopped after the last block that pact evaluated got orphaned.

  • Improve failure response for invalid solved work.

  • Fix mainnet coin v2 upgrade for new chains.

Jun 21, 2024

Contributors

    LindaOrtegaemilypislpopejoylarskuhtzmightybyte

2.0

This version replaces all previous versions. Any prior version will stop working on 2020-07-16T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2020-08-13T00:00:00Z.

This version includes the fork that adds 10 additional chains to Chainweb resulting in 20 chains in total. The fork will occur on

  • Testnet at block height 332,604, which is expect to happen around 2020-07-28 16:00:00 UTC, and
  • Mainnet at block height 852,054, which is expected to happen around 2020-08-20 16:00:00 UTC.

The mining API of chainweb-node will start serving work items for the new chains starting at above block heights for the respective network. The mempool and pact service APIs will accept requests already some time before the transition. POW difficulties will re-adjust within a few hours after the transition. During that time block rates may be slightly higher or lower than usual. Node operators and miners are encouraged to participate in the transition of Testnet as a dress rehearsal for the mainnet transition.

Misc

  • Full support for [Rosetta](https://www.rosetta-api.org. (, , ,

  • Support for Pact continuations in local queries.

  • Make Pact service more stable and fix a memory leak.

  • Fix a Pact bug related to module namespaces.

  • Make info endpoint show currently in use chains.

  • An improved difficulty adjustment algorithm to support the graph transition and improve overall performance. Some research background regarding the new algorithm can be found [in this document](https://github.com/larskuhtz/ChainwebSimulations/blob/master/Results.ipynb.

Jun 21, 2024

Contributors

    slpopejoylarskuhtz

1.9

This version replaces all previous versions. Any prior version will stop working on 2020-06-11T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2020-07-16T00:00:00Z.

This release doesn't introduce new features. It contains many small bug fixes, along with some performance and stability improvements. It also introduces some larger behind the scenes changes in preparation of upcoming major new functionality. User-facing bug fixes and improvements are listed below.

Misc

  • Improve reliability of local API calls by using cached header data instead of a potentially failing lookup causing spurious TreeDbKeyNotFoundException failures

  • Provide clean shutdown via SIGTERM

-

1.8

This version replaces all previous versions. Any prior version will stop working on 2020-04-30T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2020-06-11T00:00:00Z.

  • Starting with block height 530500 the first eight bytes of each block must be set to zero. (#974)

  • The option to persist the peer database is removed. The functionality was rarely used and can be simulated by using the peer REST API endpoints along with the know peers configuration option. (#1010)

  • Removed the PUT endpoints from the /chain/header APIs. (#1002).

  • Make block header validation aware of adjacent parents. (#1004).

  • Increased the default block gas limit by 10x to 150,000. Note that if you have manually specified a block gas limit in your node config file, this change will not take effect. We recommend removing it and using the chainweb-node default. (#1019).

Jun 21, 2024

Contributors

    larskuhtzslpopejoyfosskers

1.7

This version replaces all previous versions. Any prior version will stop working on 2020-04-02T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2020-04-30T00:00:00Z.

The use of the first eight bytes of the mining jobs bytes as nonce is now considered deprecated. Those bytes should be set to 0x0. Only the last eight bytes must be used as nonce. Miners and pools should start upgrading to the new behavior. The new behavior will be enforced in a future version.

Misc

  • Compute epoch time based on parent header. This change won't affect any any users of Chainweb. The change will become effective at block height 452820.

  • Validate transaction creation time and expiration with respect to creation of the parent block header. This change brings the checks for transaction validity in line with the time used during Pact validation.

    There is a 90 second leniency applied for transactions to become valid. This change will become effective at chain block height 449940. In the time before the change becomes active users may experience that new nodes reject their transactions. This can be mitigated by using a negative offset for the creation of about 2 minutes.

  • A new flag --allowReadsInLocal and configuration option was added that enables direct database reads of smart contract tables in local queries.

  • Fixed a rare bug that could affect nodes during history rewinds.

  • Internal CPU mining use the last eight bytes of the mining jobs bytes as nonce

  • Add missing cut API to the swagger documentation of the Chainweb API

  • Fixes a bug that caused Chainweb nodes to crash during startup due to running out of RAM.

  • Beside several stability and performance improvements this release also greatly improves test coverage and the quality of the code base to support long term maintainability of the Chainweb codebase.

Jun 21, 2024

Contributors

    LindaOrtegaslpopejoyemilypifosskerslarskuhtzgregorycollins

1.6

This version replaces all previous versions. Any prior version will stop working on 2020-02-20T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2020-04-02T00:00:00Z.

Misc

  • Adds enriched message body to gas payer execution

  • Pact fix for enforce-one, guards runtime TC

  • Gas perf improvements

  • Remove custom systemd usage

  • Mine an additional cut height in SPV tests

  • Add configuration options for checking payload hashes during pact replay

  • pact: poll: report when a transaction is on the bad list.

  • More detailed errors when attempt buy gas fails

  • Fix performance of applyRank

  • improve performance of branchEntries

Jun 21, 2024

Contributors

    mightybytelarskuhtzslpopejoyfosskers

1.5

This version replaces all previous versions. Any prior version will stop working on 2020-01-15T00:00:00Z. Node administrators must upgrade to this version before that date.

This version will stop working on 2020-02-20T00:00:00Z.

Misc

  • Full launch of Pact smart contract functionality (begins at 2020-01-15T16:00:00Z

  • Increased block gas limit to 15000

  • Minimal SPV proofs are created by default (affects cross-chain transfer proof size

  • Enriched results at /poll and /listen endpoints

  • Caching improved for coinbase transactions

  • Improvements to node stability and node stalling issues

Jun 19, 2024

Contributors

    fosskersemilypislpopejoylarskuhtz

1.4

This version replaces all previous versions. Any prior version will stop working on 2019-12-17T00:00:00Z. Note administrators must upgrade to this version before that date.

This version will stop working on 2020-01-15T00:00:00Z.

Misc

  • All nodes in the miners list in the configuration file are served cached work

  • Correct account balances that where compromised by vulnerability . The adjustment will occur in the first block with a creation time after 2019-12-17T15:00:00Z on the respective chains.

  • Avoid opening and closing the pact SQLite database after pact validation errors.

Jun 19, 2024

Contributors

    emilypislpopejoylarskuhtz

1.3.1

Misc

  • [SECURITY] fix issue with date comparison triggering block validation of fix for \

  • Don't vacuum SQLite databases on startup

Jun 19, 2024

Contributors

    emilypilarskuhtzslpopejoygregorycollinsemmanueldenloyemightybyteweb-flowfosskers

1.3

CRITICAL SECURITY UPDATE [2 of 3]: addressing vulnerability #797. All node operators need to update no later than 2019-12-10T20:00:00.

Misc

  • [SECURITY] Address vulnerability 797 via precompiled statements \

  • Enforce lower bound on acceptable node versions

  • Prune peer db and update peer selection

  • Limit checkpointer rewind depth

  • Improved mining coordination efficiency

Apr 22, 2024

Contributors

    fosskers

1.2

CRITICAL SECURITY UPDATE [1 of 3]: postponing transfers in order to address a late-breaking vulnerability #797. All node operators need to update by 2019-12-05T00:00:00.

Misc

  • [SECURITY] Postpone transfers to 2019-12-17T01:00:00:00 UTC \

Jun 21, 2024

Contributors

    fosskerslarskuhtzLindaOrtegaemilypislpopejoygregorycollinsweb-flowalexfmpemightybyte

1.1

This is a major release that activates coin transfers on December 5 2019 16:00 UTC. All node operators should upgrade ASAP. 1.0.x nodes will stop mining and fail to launch after December 5 2019 00:00 UTC.

Misc

  • Improve logging for orphan blocks.

  • Finalize gas model.

  • Updates to staged transaction rollout behavior. Coin transactions will be enabled on December 5, and the ability to deploy smart contracts will be enabled on January 15. [,,,]

  • Improve cut DB membership queries.

  • Better error handling for /mining/solved endpoint.

  • Increase mempool session timeout.

  • Improve mempool performance. [, ]

  • Better error message when gas limit exceeded.

  • Refactor Pact service state handling and chain data.

  • Fix bug in miner redeem on failed payloads.

  • Set default block gas limit of 6000.

  • Tx compilation failure messages from mempool

  • Pre-compiled templates for gas buy/gas redeem/coinbase operations

  • Introduce configurable Pact execution parameters

Jun 19, 2024

Contributors

    larskuhtzfosskers

1.0.6

This is a minor release that provides stability and performance improvements. It also upgrades the testnet version.

Miners are advised to also upgrade to the most recent version of the mining application. Older versions of chainweb-miner may experience occasional delays of work update notifications when used with this chainweb-node version.

Misc

  • Improves the stability of Chainweb nodes, by closing a TCP connection leak on nodes that had mining coordination enabled.

  • Improve performance of Chainweb nodes, by changing the default memory allocation parameters of the Haskell runtime. The default, built in RTS settings are now +RTS -N -A64M -H1G.

  • Upgrade the testnet version from testnet02 to testnet03.

Jun 19, 2024

Contributors

    fosskerslarskuhtz

1.0.5

This version changes the rules for Difficulty Adjustment in scenarios where there is a sudden loss of over 99% of the network hash power. While this is very unlikely to happen, this altered logic could result in a fork if not applied by the majority of the network. Node administrators are advised to upgrade to this version as soon as possible.

Misc

  • Emergency difficulty adjustment is disabled from chain height 80,000 onward. This is technically a fork, although it will hopefully never become relevant.

  • Configuration options for logging blocks to Amberdata was removed.

  • Parsing of the configuration file properties p2p.peer.certificateChainFile and p2p.peer.keyFile was fixed.

-

1.0.4

Improved Mining Configuration

Mining configuration has been consolidated into a single section:

mining:
  coordination:
    enabled: false
    mode: private
    limit: 1200
    miners: []

Please update your config to the new minimal configuration file.

If you compare to the old config, you will notice that the miningCoordination field has been moved.

Private Mining

When enabled: true and mode: private, you must provide a list of account names into the miners field. Only remote clients that declare they are mining to these blessed accounts will be able to receive work - all others will be rejected. You can use this to protect your node from unwanted visitors.

Configurable Work Request Limits

The limit field can be set to restrict the number of mining work requests that occur over a 5 minute period. Requests over this limit are rejected with a 503 error code.