Releases: casper-network/casper-node
Releases · casper-network/casper-node
v1.5.6
Node
1.5.6
Changed
- The node will recognise if a pending upgrade is unstaged and will avoid shutting down for upgrade in this case.
- If an upgrade with the same activation point as the current one is detected on startup, the node will immediately shut down for upgrade.
- Reduce chainspec setting
deploys.max_ttlfrom 18 hours to 2 hours.
1.5.5
Added
- New chainspec setting
highway.performance_meter.blocks_to_considerwith a value of 10, meaning that nodes will take 10 most recent blocks into account when determining their performance in Highway for the purpose of choosing their round lengths.
Execution Engine
7.0.1
Changed
- Change the cost of
wasm.storage_costs.gas_per_byteandshared::storage_costs::DEFAULT_GAS_PER_BYTE_COSTfrom630_000to1_117_587. - Change the cost of the host function
casper_add_associated_keyfrom9_000to1_200_000. - Change the cost of the argument
entry_points_sizeof host functioncasper_add_contract_versionfrom0to120_000. - Change the cost of the host function
casper_blake2band its argumentin_sizefrom200and0respectively to1_200_000to120_000. - Change the cost of the host function
casper_call_contractand its argumentsentry_point_name_sizeandruntime_args_sizefrom4_500,0and420respectively to300_000_000,120_000and120_000. - Change the cost of the host function
casper_call_versioned_contractand the argumentsentry_point_name_sizeandruntime_args_sizefrom4_500,0and420respectively to300_000_000,120_000and120_000. - Change the cost of the host function
casper_get_balancefrom3_800to3_000_000. - Change the cost of arguments
name_sizeanddest_sizeof host functioncasper_get_named_argfrom0to120_000. - Change the cost of the host function
casper_put_keyand its argumentsname_sizeandkey_sizefrom38_000,1_100and0respectively to100_000_000,120_000and120_000. - Change the cost of the host function
casper_read_valueand its argumentkey_sizefrom6_000and0respectively to60_000and120_000. - Change the cost of the argument
urefs_sizeof host functioncasper_remove_contract_user_group_urefsfrom0to120_000. - Change the cost of the host function
casper_transfer_from_purse_to_pursefrom82_000to82_000_000.
7.0.0
Added
- Add chainspec option
core.allow_unrestricted_transfersthat, if enabled, allows token transfers between any two peers. Disabling this option makes sense only for private chains. - Add chainspec option
core.allow_auction_bidsthat, if enabled, allows auction entrypointsdelegateandadd_bidto operate. Disabling this option makes sense only for private chains. - Add chainspec option
core.compute_rewardsthat, if enabled, computes rewards for each era. Disabling this option makes sense only for private chains. - Add chainspec option
core.refund_handlingthat specifies how payment refunds are handled. - Add chainspec option
core.fee_handlingthat specifes how transaction fees are handled. - Add chainspec option
core.administratorsthat, if set, contains list of administrator accounts. This option makes sense only for private chains. - Add support for a new FFI function
enable_contract_versionfor enabling a specific version of a contract.
Changed
current stack heightis written tostderrin caseTrap(Unreachable)error is encountered during Wasm execution.- Tweak upgrade logic transforming withdraw purses to early exit if possible.
- Lower the default gas costs of opcodes.
- Set the cost for branching opcodes to 35,000 (
br,br_if,br_table). - Set the cost for call opcodes to 68,000 (
call,call_indirect).
- Set the cost for branching opcodes to 35,000 (
- Default value for round seigniorage rate is halved to
7/175070816due to reduction in block times, to maintain current seigniorage rate (per unit of time). - Refund ratio is changed from 0% to 99%.
v1.5.4
1.5.4
Added
- New environment variable
CL_EVENT_QUEUE_DUMP_THRESHOLDto enable dumping of queue event counts to log when a certain threshold is exceeded. - Add initial support for private chains.
- Add support for CA signed client certificates for private chains.
- Add a Highway Analysis tool for checking the state of the consensus.
Changed
- Minimum block time reduced from 32.768s to 16.384s, with corresponding changes to related chainspec settings:
core.minimum_block_timereduced to16384 ms.core.round_seigniorage_ratereduced to[7, 175070816].highway.block_gas_limitreduced to4_000_000_000_000.
- The
state_identifierparameter of thequery_global_stateJSON-RPC method is now optional. If nostate_identifieris specified, the highest complete block known to the node will be used to fulfill the request. state_get_account_infoRPC handler can now handle anAccountIdentifieras a parameter.- Replace the
sync_to_genesisnode config field withsync_handling.- The new
sync_handlingfield accepts three values:genesis- node will attempt to acquire all block data back to genesisttl- node will attempt to acquire all block data to comply with time to live enforcementnosync- node will only acquire blocks moving forward
- The new
- Make the
network.estimator_weightssection of the node config more fine-grained to provide more precise throttling of non-validator traffic.
Removed
- The section
consensus.highway.round_success_meterhas been removed from the config file as no longer relevant with the introduction of a new method of determining the round exponent in Highway.
Fixed
- Now possible to build outside a git repository context (e.g. from a source tarball). In such cases, the node's build version (as reported vie status endpoints) will not contain a trailing git short hash.
- Remove an error that would unnecessarily be raised when a node includes its highest orphaned block within the current era.
- Short-circuit initialization of block and deploy metadata DB to resolve delays after an upgrade.
Security
- Update
opensslto version 0.10.55 as mitigation for RUSTSEC-2023-0044.
v1.5.3
1.5.3
Added
- Add
deploy_acceptorsection to config with a single optiontimestamp_leewayto allow a small leeway when deciding if a deploy is future-dated. - Add
deploys.max_timestamp_leewaychainspec option to define the upper limit for the new config optiondeploy_acceptor.timestamp_leeway. - Add
block_validator.max_completed_entriesconfig option to control the number of recently validated proposed blocks to retain.
Changed
- Change the limit of the
core_config.simultaneous_peer_requestschainspec parameter to 255. - Optimize the
BlockValidatorcomponent to reduce the number of simultaneous fetch events created for a given proposed block.
Fixed
- Fix issue in
chain_get_block_transfersJSON-RPC where blocks with no deploys could be reported as havingnulltransfers rather than[]. - Fix issue in
chain_get_block_transfersJSON-RPC where blocks containing successful transfers could erroneously be reported as having none.
Removed
- Remove the
block_synchronizer.stall_limitnode config parameter since it is no longer needed.
v1.5.2-alt
Alternate 1.5.2 binary to fix some reporting issues.
v1.5.2
v1.5.1
1.5.1
Added
- Added the
upgrade_timeoutconfig option under the[node]section.
Changed
speculative_execserver now routes deploys toDeployAcceptorfor more comprehensive validation, including cryptographic verification of signatures.
1.5.0-rc.1
Added
- Introduce fast-syncing to join the network, avoiding the need to execute every block to catch up.
- Add config sections for new components to support fast-sync:
[block_accumulator],[block_synchronizer],[deploy_buffer]and[upgrade_watcher]. - Add new Zug consensus protocol, disabled by default, along with a new
[consensus.zug]config section. - Add a
consensus_protocoloption to the chainspec to choose a consensus protocol, and aminimum_block_timesetting for the minimum difference between a block's timestamp and its child's. - Add a
vesting_schedule_periodoption to the chainspec to define the period in which genesis validators' bids are released over time after they are unlocked. - Add a
simultaneous_peer_requestsoption to the chainspec to define the maximum number of simultaneous block-sync and sync-leap requests. - Add following config options under
[node]section to support fast-sync:sync_to_genesiswhich if set totruewill cause the node to retrieve all blocks, deploys and global state back to genesis.idle_tolerancewhich defines the time after which the syncing process is considered stalled.max_attemptswhich defines the maximum number of attempts to sync before exiting the node process after the syncing process is considered stalled.control_logic_default_delaywhich defines the default delay for the control events that have no dedicated delay requirements.force_resyncwhich if set totruewill cause the node to resync all of the blocks.
- Add following config options under
[network]section:min_peers_for_initializationwhich defines the minimum number of fully-connected peers to consider network component initialized.handshake_timeoutwhich defines connection handshake timeouts (they were hardcoded at 20 seconds previously).max_incoming_peer_connectionswhich defines the maximum number of incoming connections per unique peer allowed.max_in_flight_demandswhich defines the maximum number of in-flight requests for data from a single peer.tarpit_version_threshold,tarpit_durationandtarpit_chanceto configure the tarpitting feature, designed to reduce the impact of old node versions making repeated, rapid reconnection attempts.blocklist_retain_durationwhich defines how long peers remain blocked after they get blocklisted.- optional
[network.identity]section to support loading existing network identity certificates signed by a certificate authority. - In addition to
consensusanddeploy_requests, the following values can now be controlled via the[network.estimator_weights]section in config:gossip,finality_signatures,deploy_responses,block_requests,block_responses,trie_requestsandtrie_responses.
- The network handshake now contains the hash of the chainspec used and will be successful only if they match.
- Checksums for execution results and deploy approvals are written to global state after each block execution.
- Add a new config option
[rpc_server.max_body_bytes]to allow a configurable value for the maximum size of the body of a JSON-RPC request. - Add
enable_serveroption to all HTTP server configuration sections (rpc_server,rest_server,event_stream_server) which allow users to enable/disable each server independently (enabled by default). - Add
enable_server,address,qps_limitandmax_body_bytesto newspeculative_exec_serversection toconfig.tomlto configure speculative execution JSON-RPC server (disabled by default). - Add new event to the main SSE server stream across all endpoints
<IP:PORT>/events/*which emits a shutdown event when the node shuts down. - Add following fields to the
/statusendpoint and theinfo_get_statusJSON-RPC:reactor_stateindicating the node's current operating mode.last_progressindicating the time the node last made progress.available_block_rangeindicating the highest contiguous sequence of the block chain for which the node has complete data.block_syncindicating the state of the block synchronizer component.
- Add new REST
/chainspecand JSON-RPCinfo_get_chainspecendpoints that return the raw bytes of thechainspec.toml,accounts.tomlandglobal_state.tomlfiles as read at node startup. - Add a new JSON-RPC endpoint
query_balancewhich queries for balances under a givenPurseIdentifier. - Add new JSON-RPC endpoint
/speculative_execthat accepts a deploy and a block hash and executes that deploy, returning the execution effects. - Add
strict_argument_checkingto the chainspec to enable strict args checking when executing a contract; i.e. that all non-optional args are provided and of the correctCLType. - A diagnostics port can now be enabled via the
[diagnostics_port]config section. See theREADME.mdfor details. - Add
SIGUSR2signal handling to dump the queue in JSON format (see "Changed" section forSIGUSR1). - Add
validate_and_store_timeoutconfig option under[gossip]section to control the time the gossiper waits for another component to validate and store an item received via gossip. - Add metrics:
block_accumulator_block_acceptors,block_accumulator_known_child_blocksto report status of the block accumulator component(forward|historical)_block_sync_duration_secondsto report the progress of block synchronizationdeploy_buffer_total_deploys,deploy_buffer_held_deploys,deploy_buffer_dead_deploysto report status of the deploy buffer component(lowest|highest)_available_block_heightto report the low/high values of the complete block range (the highest contiguous chain of blocks for which the node has complete data)sync_leap_duration_seconds,sync_leap_fetched_from_peer_total,sync_leap_rejected_by_peer_total,sync_leap_cant_fetch_totalto report progress of the sync leaper componentexecution_queue_sizeto report the number of blocks enqueued pending executionaccumulated_(outgoing|incoming)_limiter_delayto report how much time was spent throttling other peers.
- Add
testingfeature to casper-node crate to support test-only functionality (random constructors) on blocks and deploys. - Connections to unresponsive nodes will be terminated, based on a watchdog feature.
Changed
- The
starting_state_root_hashfield from the REST and JSON-RPC status endpoints now represents the state root hash of the lowest block in the available block range. - Detection of a crash no longer triggers DB integrity checks to run on node start; the checks can be triggered manually instead.
- Nodes no longer connect to nodes that do not speak the same protocol version by default.
- Incoming connections from peers are rejected if they are exceeding the default incoming connections per peer limit of 3.
- Chain automatically creates a switch block immediately after genesis or an upgrade, known as "immediate switch blocks".
- Requests for data from a peer are now de-prioritized over networking messages necessary for consensus and chain advancement.
- Replace network message format with a more efficient encoding while keeping the initial handshake intact.
- Flush outgoing messages immediately, trading bandwidth for latency and hence optimizing feedback loops of various components in the system.
- Move
finality_threshold_fractionfrom the[highway]to the[core]section in the chainspec. - Move
max_execution_delayconfig option from[consensus.highway]to[consensus]section. - Add CORS behavior to allow any route on the JSON-RPC, REST and SSE servers.
- The JSON-RPC server now returns more useful responses in many error cases.
- Add a new parameter to
info_get_deploysJSON-RPC,finalized_approvals- controlling whether the approvals returned with the deploy should be the ones originally received by the node, or overridden by the approvals that were finalized along with the deploy. - Support using block height as the
state_identifierparameter of JSON-RPCquery_global_staterequests. - Add new
block_hashandblock_heightoptional fields to JSON-RPCinfo_get_deployresponse which will be present when execution results aren't available. - JSON-RPC responses which fail to provide requested data will now also include an indication of that node's available block range, i.e. the block heights for which it holds all global state. See #2789 for an example of the new error response.
- Add a
lock_statusfield to the JSON representation of theContractPackagevalues. Key::SystemContractRegistryis now readable and can be queried via thequery_global_stateJSON-RPC.- Unify log messages for blocked nodes and provide more detailed reasons for blocking peers.
- Rename
current_erametric toconsensus_current_era.
Deprecated
nullshould no longer be used as a value forparamsin JSON-RPC requests. Prefer an empty Array or Object.- Deprecate the
chain_heightmetric in favor ofhighest_available_block_height.
Removed
- Remove legacy synchronization from genesis in favor of fast-sync.
- Remove config options no longer required due to fast-sync:
[linear_chain_sync],[block_proposer]and[consensus.highway.standstill_timeout]. - Remove chainspec setting
[protocol.last_emergency_restart]as fast sync will use the global state directly for recognizing such restarts instead. - Remove a temporary chainspec setting
[core.max_stored_value_size]which was used to limit the size of individual values stored in ...
v1.5.0-rc.1
Initial RC release for 1.5.0
v1.4.15-alt
Release to correct some version issues with crates in 1.4.15.
v1.4.15
v1.4.14
Added
- Node executes new prune process after executing each block, whereby entries under
Key::EraInfoare removed in batches of size defined by the new chainspec option[core.prune_batch_size]. - After executing a switch block, information about that era is stored to global state under a new static key
Key::EraSummary. - Add a new JSON-RPC endpoint
chain_get_era_summaryto retrieve the information stored underKey::EraSummary.
Changed
- Rather than storing an ever-increasing collection of era information after executing a switch block under
Key::EraInfo, the node now stores only the information relevant to that era underKey::EraSummary. - Update
opensslandopenssl-systo latest versions.
Removed
- Remove
TimeDiff,Timestampand asymmetric key functionality (moved tocasper-typescrate).
Fixed
- Fix issue in BlockValidator inhibiting the use of fallback peers to fetch missing deploys.