Chainweb Node
2.26.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
Update to Pact 4.13.2
Add informative error messages to pact /send API
Increase P2P network resiliency to unreliable nodes
Compute P2P session count in O(1
Order P2P peer list by reliability
Remove unnecessary performance optimisation in P2P Peer DB update
Compute P2P peer count using faster monomorphic function
Randomize P2P peer ordering
Optimize P2P peer pruning algorithm via set deletion instead of set union
Delete unnecessary indices in the P2P peer db
Set the HTTP Server header to distinguish between the P2P and Service REST APIs
Support dependency
hashable-1.5.*
Correct node shutdown message due to old Chainweb version
Remove redundant dependency on
sbv
Split
ea
out into its own executableSplit up all
cwtool
subcommands into their own executables. Only include necessary executables into the release.Stop going through PactService to pre-insert check an empty tx batch
Update location of
base64-bytestring
dependency to Kadena's forkFix some typos in README.md
2.26
This is a major version update. This release replaces all previous versions.
Any prior version will stop working on 2024-11-13T00:00:00Z. Node administrators must upgrade to this version before that date. The 2.26 feature upgrade will occur at block height 5302559 which is estimated to be mined at 2024-11-14T00:00:00Z.
Misc
Update to Pact 4.13.1 (see Pact's [CHANGELOG](https://github.com/kadena-io/pact/blob/master/CHANGELOG.md
Log large response sizes after a response completes. If the response doesn't complete, still log it if it's large.
p2p payload batch endpoint: Return 404 when the payload batch limit is 0
Support GHC 9.10, build with GHC 9.8.2 by default
More rigorous system health checks at startup
Log request bodies with debug level
Performance: Avoid redundant decode/encode in mempool lookup
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.
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
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
levelLogging: 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 oneLogging: Failed transactions are now at
Debug
rather thanInfo
levelLogging: Restore block timeout logging; a previous change accidentally removed this.
Logging: warp HTTP server errors are now at
Info
levelLogging: 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 tocounters
Logging: Single P2P task failures are now at
Debug
instead ofInfo
level, while they're still being retriedLogging: 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
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
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.
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.
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-0022Pact "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 torecap-development
fast-development
was renamed todevelopment
Running a node and making queries to
/local
should be much faster when the?rewindDepth
query parameter is provided.Introduced new
--enable-local-timeout
(orchainweb.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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Patches
withSavepoint
now catchesSomeAsyncException
.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 noterror
.Log replay height based on time, not blocks.
Add telemetry logging for node top-level status.
Add module cache to checkpointer.
Censor
BackupConfig
fromconfig
endpoint.Simulate whole block(s in transaction simulator.
Fix some command line help messages.
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.
Patches
Fix
initialHeightLimit
CLI argument parsing to not override config file.Fix cut GET endpoint height limiting.
Misc
Add transaction simulator to cwtools.
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.
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.
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.
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.
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.
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.
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.
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
andvalidate-principal
- Add support for principals
r:
,m:
,u:
,p:
, andw:
incoin
. - Addition of
fungible-xchain-v1
interface, which provides aTRANSFER_XCHAIN
managed capability. - Implement
fungible-xchain-v1
incoin
. - Miscellaneous bug fixes
- Various performance improvements, in particular for deeply nested function calls.
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.
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.
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.
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.
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 configurek:<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.
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.
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.
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.
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.
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
wherec
is a single-char protocol identifier anddata
protocol-specified data. - Introduces the Chainweb single-key protocol
k
wheredata
must match a single ED-25519 public key. - Leverages Pact 4.0
X_YIELD
andX_RESUME
event emission.bless
es previous module hash so that in-progress cross-chain transfers can succeed.
- Transactional module init cache.
- Emits
P2P API endpoint to get node config
Bugfixes and cleanups
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 thechainweb.p2p.bootstrapReachability
setting. The value is a number between 0 and 1. If it is 0 the reachability test is disabled.
- Re-add builtin bootstrap nodes. This also means that default bootstrap nodes
will always be used as long as
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.
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.
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 configurationAdd 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
, andhealth-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 arechainweb.serviceApi.port
andchainweb.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)
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.
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.
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 propertychainweb.cuts.pruneChainDatabase
.none
no database pruning is performedheaders
only block headers but no payloads are pruned (10-30 secondsheaders-checked
likeheaders
but also validates all block headers and checks the complete chain Merkle tree including payload hashes. (5-20 minutesfull
prunes block headers and payloads. (10-20 minutes
The default is
headers
. For backward compatibility it is possible to also use Boolean values for settingchainweb.cuts.prunChainDatabase
in the configuration file, wherefalse
is equivalent withnone
andtrue
is equivalent withheaders
.Improved performance of rebuilding the pact database from the chain data.
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
and0/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.
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.
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.
-
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).
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 APIFixes 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.
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
usageMine 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
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
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.
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.
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 \
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
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
totestnet03
.
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
andp2p.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.