Releases: casper-network/casper-node
Releases · casper-network/casper-node
v1.4.3
Changelog
All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
[2.0.1] - 2021-11-4
Test Support (casper-node/execution_engine_testing/test_support)
Changed
- Change the path detection logic for compiled Wasm as used by the casper-node monorepo.
Deprecated
- Deprecate the
test-support
feature. It had and continues to have no effect when enabled.
[2.0.0] - 2021-11-01
Test Support (casper-node/execution_engine_testing/test_support)
Added
- Provide fine-grained support for testing all aspects of smart contract execution, including:
WasmTestBuilder
for building and running a test to exercise a smart contractDeployItemBuilder
for building aDeployItem
from a smart contractExecuteRequestBuilder
for building anExecuteRequest
to execute a given smart contractAdditiveMapDiff
to allow easy comparison of two AdditiveMapsStepRequestBuilder
for building aStepRequest
(generally only used by the execution engine itself)UpgradeRequestBuilder
for building anUpgradeRequest
(generally only used by the execution engine itself)- Provide
InMemoryWasmTestBuilder
which will be suitable in most cases for testing a smart contract - Provide
LmdbWasmTestBuilder
can be used where global state needs to be persisted after execution of a smart contract - Provide several helper functions in
utils
module - Provide several default consts and statics useful across many test scenarios
Removed
- Remove coarse-grained support and newtypes for testing smart contracts, including removal of:
Account
AccountHash
Error
Session
SessionBuilder
SessionTransferInfo
TestContext
TestContextBuilder
Value
[1.4.4] - 2021-11-18
Casper Types (casper-node/types/)
Fixed
- Revert the accidental change to the
std
feature causing a broken build when this feature is enabled.
1.4.3 - 2021-11-17
1.4.2 - 2021-11-11
Casper Node (casper-node/node/)
Changed
- There are now less false warnings/errors regarding dropped responders or closed channels during a shutdown, where they are expected and harmless.
- Execution transforms are ordered by insertion order.
Removed
- The config option
consensus.highway.unit_hashes_folder
has been removed.
Fixed
- The block proposer component now retains pending deploys and transfers across a restart.
Execution Engine (casper-node/execution_engine/)
Changed
- Execution transforms are returned in their insertion order.
Removed
- Removed
SystemContractCache
as it was not being used anymore
Casper Types (casper-node/types/)
Added
- Add checksummed hex encoding following a scheme similar to EIP-55.
v1.4.1
Changelog
[1.4.1] - 2021-10-19
Contract (casper-node/smart_contracts/contract)
Changed
- Correcting breaking incompatibilities with previous 1.3.x release
[1.4.0] - 2021-10-14
Casper Node (casper-node/node/)
Added
- Add
enable_manual_sync
boolean option to[contract_runtime]
in the config.toml which enables manual LMDB sync. - Add new event to the main SSE server stream accessed via
<IP:Port>/events/main
which emits hashes of expired deploys. - Add
contract_runtime_execute_block
histogram tracking execution time of a whole block. - Long-running events now log their event type.
- Individual weights for traffic throttling can now be set through the configuration value
network.estimator_weights
. - Add
consensus.highway.max_request_batch_size
configuration parameter. Defaults to 20. - New histogram metrics
deploy_acceptor_accepted_deploy
anddeploy_acceptor_rejected_deploy
that track how long the initial verification took. - Add gzip content negotiation (using accept-encoding header) to rpc endpoints.
- Add
state_get_trie
JSON-RPC endpoint. - Add
info_get_validator_changes
JSON-RPC endpoint and REST endpointvalidator-changes
that return the status changes of active validators.
Changed
- The following Highway timers are now separate, configurable, and optional (if the entry is not in the config, the timer is never called):
standstill_timeout
causes the node to restart if no progress is made.request_state_interval
makes the node periodically request the latest state from a peer.log_synchronizer_interval
periodically logs the number of entries in the synchronizer queues.- Add support for providing node uptime via the addition of an
uptime
parameter in the response to the/status
endpoint and theinfo_get_status
JSON-RPC. - Support building and testing using stable Rust.
- Log chattiness in
debug
or lower levels has been reduced and performance atinfo
or higher slightly improved. - The following parameters in the
[gossip]
section of the config has been renamed: [finished_entry_duration_secs]
=>[finished_entry_duration]
[gossip_request_timeout_secs]
=>[gossip_request_timeout]
[get_remainder_timeout_secs]
=>[get_remainder_timeout]
- The following parameters in config now follow the humantime convention ('30sec', '120min', etc.):
[network][gossip_interval]
[gossip][finished_entry_duration]
[gossip][gossip_request_timeout]
[gossip][get_remainder_timeout]
[fetcher][get_from_peer_timeout]
Removed
- The unofficial support for nix-related derivations and support tooling has been removed.
- Experimental, nix-based kubernetes testing support has been removed.
- Experimental support for libp2p has been removed.
- The
isolation_reconnect_delay
configuration, which has been ignored since 1.3, has been removed. - The libp2p-exclusive metrics of
read_futures_in_flight
,read_futures_total
,write_futures_in_flight
,write_futures_total
have been removed.
Fixed
- Resolve an issue where
Deploys
with payment amounts exceeding the block gas limit would not be rejected. - Resolve issue of duplicated config option
max_associated_keys
.
Execution Engine (casper-node/execution_engine/)
Added
- Added genesis validation step to ensure there are more genesis validators than validator slots.
- Added a support for passing a public key as a
target
argument in native transfers. - Added a
max_associated_keys
configuration option for a hard limit of associated keys under accounts.
Changed
- Documented
storage
module and children. - Reduced visibility to
pub(crate)
in several areas, allowing some dead code to be noticed and pruned. - Support building and testing using stable Rust.
- Increase price of
create_purse
to 2.5CSPR. - Increase price of native transfer to 100 million motes (0.1 CSPR).
- Improve doc comments to clarify behavior of the bidding functionality.
- Document
core
andshared
modules and their children. - Change parameters to
LmdbEnvironment
's constructor enabling manual flushing to disk.
Fixed
- Fix a case where user could potentially supply a refund purse as a payment purse.
Node Macros (casper-node/node_macros/)
Changed
- Support building and testing using stable Rust.
Casper Types (casper-node/types/)
Added
- Add
json-schema
feature, disabled by default, to enable many types to be used to produce JSON-schema data. - Add implicit
datasize
feature, disabled by default, to enable many types to derive theDataSize
trait. - Add
StoredValue
types to this crate.
Changed
- Support building and testing using stable Rust.
- Allow longer hex string to be presented in
json
files. Current maximum is increased from 100 to 150 characters. - Improve documentation and
Debug
impls forApiError
.
Deprecated
- Feature
std
is deprecated as it is now a no-op, since there is no benefit to linking the std lib via this crate.
Cargo Casper (casper-node/execution_engine_testing/cargo_casper)
Changed
- Support building and testing using stable Rust.
Removed
- Remove support for generating an ERC-20 contract.
Test Support (casper-node/execution_engine_testing/test_support)
Changed
- Support building and testing using stable Rust.
Contract (casper-node/smart_contracts/contract)
Added
- Add
no-std-helpers
feature, enabled by default, which provides no-std panic/oom handlers and a global allocator as a convenience. - Add new APIs for transferring tokens to the main purse associated with a public key:
transfer_to_public_key
andtransfer_from_purse_to_public_key
.
Deprecated
- Feature
std
is deprecated as it is now a no-op, since there is no benefit to linking the std lib via this crate.
Contract AssemblyScript (casper-node/smart_contracts/contract_as)
Added
- Add function to create an account hash from a public key.
- Add getter for public key algorithm name.
- Add getter for raw bytes of public key.
- Export casper_blake2b.
- Add new APIs for transferring tokens to the main purse associated with a public key:
transferToPublicKey
andtransferFromPurseToPublicKey
.
Fixed
- Fix instances of
return <T>unreachable()
which is invalid code under the latest AssemblyScript compiler.
v1.4.0
Changelog
[1.4.0] - 2021-10-14
Casper Node (casper-node/node/)
Added
- Add
enable_manual_sync
boolean option to[contract_runtime]
in the config.toml which enables manual LMDB sync. - Add new event to the main SSE server stream accessed via
<IP:Port>/events/main
which emits hashes of expired deploys. - Add
contract_runtime_execute_block
histogram tracking execution time of a whole block. - Long-running events now log their event type.
- Individual weights for traffic throttling can now be set through the configuration value
network.estimator_weights
. - Add
consensus.highway.max_request_batch_size
configuration parameter. Defaults to 20. - New histogram metrics
deploy_acceptor_accepted_deploy
anddeploy_acceptor_rejected_deploy
that track how long the initial verification took. - Add gzip content negotiation (using accept-encoding header) to rpc endpoints.
- Add
state_get_trie
JSON-RPC endpoint. - Add
info_get_validator_changes
JSON-RPC endpoint and REST endpointvalidator-changes
that return the status changes of active validators.
Changed
- The following Highway timers are now separate, configurable, and optional (if the entry is not in the config, the timer is never called):
standstill_timeout
causes the node to restart if no progress is made.request_state_interval
makes the node periodically request the latest state from a peer.log_synchronizer_interval
periodically logs the number of entries in the synchronizer queues.- Add support for providing node uptime via the addition of an
uptime
parameter in the response to the/status
endpoint and theinfo_get_status
JSON-RPC. - Support building and testing using stable Rust.
- Log chattiness in
debug
or lower levels has been reduced and performance atinfo
or higher slightly improved. - The following parameters in the
[gossip]
section of the config has been renamed: [finished_entry_duration_secs]
=>[finished_entry_duration]
[gossip_request_timeout_secs]
=>[gossip_request_timeout]
[get_remainder_timeout_secs]
=>[get_remainder_timeout]
- The following parameters in config now follow the humantime convention ('30sec', '120min', etc.):
[network][gossip_interval]
[gossip][finished_entry_duration]
[gossip][gossip_request_timeout]
[gossip][get_remainder_timeout]
[fetcher][get_from_peer_timeout]
Removed
- The unofficial support for nix-related derivations and support tooling has been removed.
- Experimental, nix-based kubernetes testing support has been removed.
- Experimental support for libp2p has been removed.
- The
isolation_reconnect_delay
configuration, which has been ignored since 1.3, has been removed. - The libp2p-exclusive metrics of
read_futures_in_flight
,read_futures_total
,write_futures_in_flight
,write_futures_total
have been removed.
Fixed
- Resolve an issue where
Deploys
with payment amounts exceeding the block gas limit would not be rejected. - Resolve issue of duplicated config option
max_associated_keys
.
Execution Engine (casper-node/execution_engine/)
Added
- Added genesis validation step to ensure there are more genesis validators than validator slots.
- Added a support for passing a public key as a
target
argument in native transfers. - Added a
max_associated_keys
configuration option for a hard limit of associated keys under accounts.
Changed
- Documented
storage
module and children. - Reduced visibility to
pub(crate)
in several areas, allowing some dead code to be noticed and pruned. - Support building and testing using stable Rust.
- Increase price of
create_purse
to 2.5CSPR. - Increase price of native transfer to 100 million motes (0.1 CSPR).
- Improve doc comments to clarify behavior of the bidding functionality.
- Document
core
andshared
modules and their children. - Change parameters to
LmdbEnvironment
's constructor enabling manual flushing to disk.
Fixed
- Fix a case where user could potentially supply a refund purse as a payment purse.
Node Macros (casper-node/node_macros/)
Changed
- Support building and testing using stable Rust.
Casper Types (casper-node/types/)
Added
- Add
json-schema
feature, disabled by default, to enable many types to be used to produce JSON-schema data. - Add implicit
datasize
feature, disabled by default, to enable many types to derive theDataSize
trait. - Add
StoredValue
types to this crate.
Changed
- Support building and testing using stable Rust.
- Allow longer hex string to be presented in
json
files. Current maximum is increased from 100 to 150 characters. - Improve documentation and
Debug
impls forApiError
.
Deprecated
- Feature
std
is deprecated as it is now a no-op, since there is no benefit to linking the std lib via this crate.
Cargo Casper (casper-node/execution_engine_testing/cargo_casper)
Changed
- Support building and testing using stable Rust.
Removed
- Remove support for generating an ERC-20 contract.
Test Support (casper-node/execution_engine_testing/test_support)
Changed
- Support building and testing using stable Rust.
Contract (casper-node/smart_contracts/contract)
Added
- Add
no-std-helpers
feature, enabled by default, which provides no-std panic/oom handlers and a global allocator as a convenience. - Add new APIs for transferring tokens to the main purse associated with a public key:
transfer_to_public_key
andtransfer_from_purse_to_public_key
.
Deprecated
- Feature
std
is deprecated as it is now a no-op, since there is no benefit to linking the std lib via this crate.
Contract AssemblyScript (casper-node/smart_contracts/contract_as)
Added
- Add function to create an account hash from a public key.
- Add getter for public key algorithm name.
- Add getter for raw bytes of public key.
- Export casper_blake2b.
- Add new APIs for transferring tokens to the main purse associated with a public key:
transferToPublicKey
andtransferFromPurseToPublicKey
.
Fixed
- Fix instances of
return <T>unreachable()
which is invalid code under the latest AssemblyScript compiler.
v1.3.4
v1.3.3
v1.3.2
[1.3.2] - 2021-08-02
Casper Node (casper-node/node/)
Fixed
- Resolve an issue in the
state_get_dictionary_item
JSON-RPC when aContractHash
is used. - Corrected network state engine to hold in blocked state for full 10 minutes when encountering out of order race condition.
[1.3.1] - 2021-07-26
Casper Node (casper-node/node/)
Fixed
- Parametrized sync_timeout and increased value to stop possible post upgrade restart loop.
[1.3.0] - 2021-07-19
Casper Node (casper-node/node/)
Added
- Add support for providing historical auction information via the addition of an optional block ID in the
state_get_auction_info
JSON-RPC. - Exclude inactive validators from proposing blocks.
- Add validation of the
[protocol]
configuration on startup, to ensure the contained values make sense. - Add optional outgoing bandwidth limiter to the networking component, controllable via new
[network][max_outgoing_byte_rate_non_validators]
config option. - Add optional incoming message limiter to the networking component, controllable via new
[network][max_incoming_message_rate_non_validators]
config option. - Add optional in-memory deduplication of deploys, controllable via new
[storage]
config options[enable_mem_deduplication]
and[mem_pool_prune_interval]
. - Add a new event stream to SSE server accessed via
<IP:Port>/events/deploys
which emits deploys in full as they are accepted.
Changed
- Major rewrite of the network component, covering connection negotiation and management, periodic housekeeping and logging.
- Exchange and authenticate Validator public keys in network handshake between peers.
- Remove needless copying of outgoing network messages.
- Move finality signatures to separate event stream and change stream endpoints to
/events/main
and/events/sigs
. - Avoid truncating the state root hash when reporting node's status via JSON-RPC or REST servers.
- The JSON-RPC server waits until an incoming deploy has been sent to storage before responding to the client.
- Persist event stream event index across node restarts.
- Separate transfers from other deploys in the block proposer.
- Enable getting validators for future eras in
EffectBuilder::get_era_validators()
. - Improve logging around stalled consensus detection.
- Skip storage integrity checks if the node didn't previously crash.
- Update pinned version of Rust to
nightly-2021-06-17
- Don't shut down by default anymore if stalled. To enable set config option
shutdown_on_standstill = true
in[consensus.highway]
.
Removed
- Remove systemd notify support, including removal of
[network][systemd_support]
config option.
Fixed
- Avoid redundant requests caused by the Highway synchronizer.
- Update "current era" metric also for initial era.
- Keep syncing until the node is in the current era, rather than allowing an acceptable drift.
- Update the list of peers with newly-learned ones in linear chain sync.
- Drain the joiner reactor queue on exit, to eliminate stale connections whose handshake has completed, but which live on the queue.
- Shut down SSE event streams gracefully.
- Limit the maximum number of clients connected to the event stream server via the
[event_stream_server][max_concurrent_subscribers]
config option. - Avoid emitting duplicate events in the event stream.
- Change
BlockIdentifier
params in the Open-RPC schema to be optional.
Execution Engine (casper-node/execution_engine/)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Node Macros (casper-node/node_macros/)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Casper Types (casper-node/types/)
Changed
- Restrict summarization when JSON pretty-printing to contiguous long hex strings.
- Update pinned version of Rust to
nightly-2021-06-17
Removed
- Remove ability to clone
SecretKey
s.
Cargo Casper (casper-node/execution_engine_testing/cargo_casper)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Test Support (casper-node/execution_engine_testing/test_support)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Contract (casper-node/smart_contracts/contract)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
v1.3.1
[1.3.1] - 2021-07-24
Casper Node (casper-node/node/)
Added
- Add support for providing historical auction information via the addition of an optional block ID in the
state_get_auction_info
JSON-RPC. - Exclude inactive validators from proposing blocks.
- Add validation of the
[protocol]
configuration on startup, to ensure the contained values make sense. - Add optional outgoing bandwidth limiter to the networking component, controllable via new
[network][max_outgoing_byte_rate_non_validators]
config option. - Add optional incoming message limiter to the networking component, controllable via new
[network][max_incoming_message_rate_non_validators]
config option. - Add optional in-memory deduplication of deploys, controllable via new
[storage]
config options[enable_mem_deduplication]
and[mem_pool_prune_interval]
. - Add a new event stream to SSE server accessed via
<IP:Port>/events/deploys
which emits deploys in full as they are accepted.
Changed
- Major rewrite of the network component, covering connection negotiation and management, periodic housekeeping and logging.
- Exchange and authenticate Validator public keys in network handshake between peers.
- Remove needless copying of outgoing network messages.
- Move finality signatures to separate event stream and change stream endpoints to
/events/main
and/events/sigs
. - Avoid truncating the state root hash when reporting node's status via JSON-RPC or REST servers.
- The JSON-RPC server waits until an incoming deploy has been sent to storage before responding to the client.
- Persist event stream event index across node restarts.
- Separate transfers from other deploys in the block proposer.
- Enable getting validators for future eras in
EffectBuilder::get_era_validators()
. - Replace config option
[block_propser][deploy_delay]
(which specified a fixed delay before proposing a deploy) with a gossip-finished announcement. - Improve logging around stalled consensus detection.
- Skip storage integrity checks if the node didn't previously crash.
- Update pinned version of Rust to
nightly-2021-06-17
- Don't shut down by default anymore if stalled. To enable set config option
shutdown_on_standstill = true
in[consensus.highway]
.
Removed
- Remove systemd notify support, including removal of
[network][systemd_support]
config option.
Fixed
- Avoid redundant requests caused by the Highway synchronizer.
- Update "current era" metric also for initial era.
- Keep syncing until the node is in the current era, rather than allowing an acceptable drift.
- Update the list of peers with newly-learned ones in linear chain sync.
- Drain the joiner reactor queue on exit, to eliminate stale connections whose handshake has completed, but which live on the queue.
- Shut down SSE event streams gracefully.
- Limit the maximum number of clients connected to the event stream server via the
[event_stream_server][max_concurrent_subscribers]
config option. - Avoid emitting duplicate events in the event stream.
- Change
BlockIdentifier
params in the Open-RPC schema to be optional.
Execution Engine (casper-node/execution_engine/)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Node Macros (casper-node/node_macros/)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Casper Types (casper-node/types/)
Changed
- Restrict summarization when JSON pretty-printing to contiguous long hex strings.
- Update pinned version of Rust to
nightly-2021-06-17
Removed
- Remove ability to clone
SecretKey
s.
Cargo Casper (casper-node/execution_engine_testing/cargo_casper)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Test Support (casper-node/execution_engine_testing/test_support)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Contract (casper-node/smart_contracts/contract)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
v1.3.0
[1.3.0] - 2021-07-19
Casper Node (casper-node/node/)
Added
- Add support for providing historical auction information via the addition of an optional block ID in the
state_get_auction_info
JSON-RPC. - Exclude inactive validators from proposing blocks.
- Add validation of the
[protocol]
configuration on startup, to ensure the contained values make sense. - Add optional outgoing bandwidth limiter to the networking component, controllable via new
[network][max_outgoing_byte_rate_non_validators]
config option. - Add optional incoming message limiter to the networking component, controllable via new
[network][max_incoming_message_rate_non_validators]
config option. - Add optional in-memory deduplication of deploys, controllable via new
[storage]
config options[enable_mem_deduplication]
and[mem_pool_prune_interval]
. - Add a new event stream to SSE server accessed via
<IP:Port>/events/deploys
which emits deploys in full as they are accepted.
Changed
- Major rewrite of the network component, covering connection negotiation and management, periodic housekeeping and logging.
- Exchange and authenticate Validator public keys in network handshake between peers.
- Remove needless copying of outgoing network messages.
- Move finality signatures to separate event stream and change stream endpoints to
/events/main
and/events/sigs
. - Avoid truncating the state root hash when reporting node's status via JSON-RPC or REST servers.
- The JSON-RPC server waits until an incoming deploy has been sent to storage before responding to the client.
- Persist event stream event index across node restarts.
- Separate transfers from other deploys in the block proposer.
- Enable getting validators for future eras in
EffectBuilder::get_era_validators()
. - Replace config option
[block_propser][deploy_delay]
(which specified a fixed delay before proposing a deploy) with a gossip-finished announcement. - Improve logging around stalled consensus detection.
- Skip storage integrity checks if the node didn't previously crash.
- Update pinned version of Rust to
nightly-2021-06-17
- Don't shut down by default anymore if stalled. To enable set config option
shutdown_on_standstill = true
in[consensus.highway]
.
Removed
- Remove systemd notify support, including removal of
[network][systemd_support]
config option.
Fixed
- Avoid redundant requests caused by the Highway synchronizer.
- Update "current era" metric also for initial era.
- Keep syncing until the node is in the current era, rather than allowing an acceptable drift.
- Update the list of peers with newly-learned ones in linear chain sync.
- Drain the joiner reactor queue on exit, to eliminate stale connections whose handshake has completed, but which live on the queue.
- Shut down SSE event streams gracefully.
- Limit the maximum number of clients connected to the event stream server via the
[event_stream_server][max_concurrent_subscribers]
config option. - Avoid emitting duplicate events in the event stream.
Execution Engine (casper-node/execution_engine/)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Node Macros (casper-node/node_macros/)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Casper Types (casper-node/types/)
Changed
- Restrict summarization when JSON pretty-printing to contiguous long hex strings.
- Update pinned version of Rust to
nightly-2021-06-17
Removed
- Remove ability to clone
SecretKey
s.
Cargo Casper (casper-node/execution_engine_testing/cargo_casper)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Test Support (casper-node/execution_engine_testing/test_support)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
Contract (casper-node/smart_contracts/contract)
Changed
- Update pinned version of Rust to
nightly-2021-06-17
v1.2.1
v1.2.0
Key Changes:
- Created REST endpoint for OpenRPC schema.
- More consensus and block proposer log messages added.
- Era supervisors must access, only deploy hashes, which will be stored separately from block bodies.
- Networking component instrumentation to gain more insight into the network before making any changes.
- Block Validator now distinguishes between deploys and transfers.
- Configurable delay added before proposing deploys.
- Added last emergency_restart field to chainspec.
- From Config broadcast_channel_size removed.
- Quantstamp Audit changes Part 1.
- Default deploy TTL reduced to 30mins.
Known Issue:
- After an upgrade the era metric is set to 0. This does not impact the Security, Performance or features of the network detrimentally.