Skip to content

Releases: casper-network/casper-node

v1.5.6

08 Feb 15:49
9f39958
Compare
Choose a tag to compare

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_ttl from 18 hours to 2 hours.

1.5.5

Added

  • New chainspec setting highway.performance_meter.blocks_to_consider with 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_byte and shared::storage_costs::DEFAULT_GAS_PER_BYTE_COST from 630_000 to 1_117_587.
  • Change the cost of the host function casper_add_associated_key from 9_000 to 1_200_000.
  • Change the cost of the argument entry_points_size of host function casper_add_contract_version from 0 to 120_000.
  • Change the cost of the host function casper_blake2band its argument in_size from 200 and 0 respectively to 1_200_000 to 120_000.
  • Change the cost of the host function casper_call_contract and its arguments entry_point_name_size and runtime_args_size from 4_500, 0 and 420 respectively to 300_000_000, 120_000 and 120_000.
  • Change the cost of the host function casper_call_versioned_contract and the arguments entry_point_name_size and runtime_args_size from 4_500, 0 and 420 respectively to 300_000_000, 120_000 and 120_000.
  • Change the cost of the host function casper_get_balance from 3_800 to 3_000_000.
  • Change the cost of arguments name_size and dest_size of host function casper_get_named_arg from 0 to 120_000.
  • Change the cost of the host function casper_put_key and its arguments name_size and key_size from 38_000, 1_100 and 0 respectively to 100_000_000, 120_000 and 120_000.
  • Change the cost of the host function casper_read_value and its argument key_size from 6_000 and 0 respectively to 60_000 and 120_000.
  • Change the cost of the argument urefs_size of host function casper_remove_contract_user_group_urefs from 0 to 120_000.
  • Change the cost of the host function casper_transfer_from_purse_to_purse from 82_000 to 82_000_000.

7.0.0

Added

  • Add chainspec option core.allow_unrestricted_transfers that, if enabled, allows token transfers between any two peers. Disabling this option makes sense only for private chains.
  • Add chainspec option core.allow_auction_bids that, if enabled, allows auction entrypoints delegate and add_bid to operate. Disabling this option makes sense only for private chains.
  • Add chainspec option core.compute_rewards that, if enabled, computes rewards for each era. Disabling this option makes sense only for private chains.
  • Add chainspec option core.refund_handling that specifies how payment refunds are handled.
  • Add chainspec option core.fee_handling that specifes how transaction fees are handled.
  • Add chainspec option core.administrators that, if set, contains list of administrator accounts. This option makes sense only for private chains.
  • Add support for a new FFI function enable_contract_version for enabling a specific version of a contract.

Changed

  • current stack height is written to stderr in case Trap(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).
  • Default value for round seigniorage rate is halved to 7/175070816 due 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

21 Nov 00:58
e688fbc
Compare
Choose a tag to compare

1.5.4

Added

  • New environment variable CL_EVENT_QUEUE_DUMP_THRESHOLD to 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_time reduced to 16384 ms.
    • core.round_seigniorage_rate reduced to [7, 175070816].
    • highway.block_gas_limit reduced to 4_000_000_000_000.
  • The state_identifier parameter of the query_global_state JSON-RPC method is now optional. If no state_identifier is specified, the highest complete block known to the node will be used to fulfill the request.
  • state_get_account_info RPC handler can now handle an AccountIdentifier as a parameter.
  • Replace the sync_to_genesis node config field with sync_handling.
    • The new sync_handling field accepts three values:
      • genesis - node will attempt to acquire all block data back to genesis
      • ttl - node will attempt to acquire all block data to comply with time to live enforcement
      • nosync - node will only acquire blocks moving forward
  • Make the network.estimator_weights section of the node config more fine-grained to provide more precise throttling of non-validator traffic.

Removed

  • The section consensus.highway.round_success_meter has 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

v1.5.3

20 Oct 13:37
53dd338
Compare
Choose a tag to compare

1.5.3

Added

  • Add deploy_acceptor section to config with a single option timestamp_leeway to allow a small leeway when deciding if a deploy is future-dated.
  • Add deploys.max_timestamp_leeway chainspec option to define the upper limit for the new config option deploy_acceptor.timestamp_leeway.
  • Add block_validator.max_completed_entries config option to control the number of recently validated proposed blocks to retain.

Changed

  • Change the limit of the core_config.simultaneous_peer_requests chainspec parameter to 255.
  • Optimize the BlockValidator component to reduce the number of simultaneous fetch events created for a given proposed block.

Fixed

  • Fix issue in chain_get_block_transfers JSON-RPC where blocks with no deploys could be reported as having null transfers rather than [].
  • Fix issue in chain_get_block_transfers JSON-RPC where blocks containing successful transfers could erroneously be reported as having none.

Removed

  • Remove the block_synchronizer.stall_limit node config parameter since it is no longer needed.

v1.5.2-alt

06 Sep 15:33
1b54188
Compare
Choose a tag to compare

Alternate 1.5.2 binary to fix some reporting issues.

v1.5.2

12 Jul 17:22
86b7013
Compare
Choose a tag to compare
Merge pull request #4125 from Fraser999/version-bump

Version bumps

v1.5.1

13 Jun 18:18
805a420
Compare
Choose a tag to compare

1.5.1

Added

  • Added the upgrade_timeout config option under the [node] section.

Changed

  • speculative_exec server now routes deploys to DeployAcceptor for 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_protocol option to the chainspec to choose a consensus protocol, and a minimum_block_time setting for the minimum difference between a block's timestamp and its child's.
  • Add a vesting_schedule_period option to the chainspec to define the period in which genesis validators' bids are released over time after they are unlocked.
  • Add a simultaneous_peer_requests option 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_genesis which if set to true will cause the node to retrieve all blocks, deploys and global state back to genesis.
    • idle_tolerance which defines the time after which the syncing process is considered stalled.
    • max_attempts which defines the maximum number of attempts to sync before exiting the node process after the syncing process is considered stalled.
    • control_logic_default_delay which defines the default delay for the control events that have no dedicated delay requirements.
    • force_resync which if set to true will cause the node to resync all of the blocks.
  • Add following config options under [network] section:
    • min_peers_for_initialization which defines the minimum number of fully-connected peers to consider network component initialized.
    • handshake_timeout which defines connection handshake timeouts (they were hardcoded at 20 seconds previously).
    • max_incoming_peer_connections which defines the maximum number of incoming connections per unique peer allowed.
    • max_in_flight_demands which defines the maximum number of in-flight requests for data from a single peer.
    • tarpit_version_threshold, tarpit_duration and tarpit_chance to configure the tarpitting feature, designed to reduce the impact of old node versions making repeated, rapid reconnection attempts.
    • blocklist_retain_duration which 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 consensus and deploy_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_requests and trie_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_server option 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_limit and max_body_bytes to new speculative_exec_server section to config.toml to 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 /status endpoint and the info_get_status JSON-RPC:
    • reactor_state indicating the node's current operating mode.
    • last_progress indicating the time the node last made progress.
    • available_block_range indicating the highest contiguous sequence of the block chain for which the node has complete data.
    • block_sync indicating the state of the block synchronizer component.
  • Add new REST /chainspec and JSON-RPC info_get_chainspec endpoints that return the raw bytes of the chainspec.toml, accounts.toml and global_state.toml files as read at node startup.
  • Add a new JSON-RPC endpoint query_balance which queries for balances under a given PurseIdentifier.
  • Add new JSON-RPC endpoint /speculative_exec that accepts a deploy and a block hash and executes that deploy, returning the execution effects.
  • Add strict_argument_checking to the chainspec to enable strict args checking when executing a contract; i.e. that all non-optional args are provided and of the correct CLType.
  • A diagnostics port can now be enabled via the [diagnostics_port] config section. See the README.md for details.
  • Add SIGUSR2 signal handling to dump the queue in JSON format (see "Changed" section for SIGUSR1).
  • Add validate_and_store_timeout config 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_blocks to report status of the block accumulator component
    • (forward|historical)_block_sync_duration_seconds to report the progress of block synchronization
    • deploy_buffer_total_deploys, deploy_buffer_held_deploys, deploy_buffer_dead_deploys to report status of the deploy buffer component
    • (lowest|highest)_available_block_height to 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_total to report progress of the sync leaper component
    • execution_queue_size to report the number of blocks enqueued pending execution
    • accumulated_(outgoing|incoming)_limiter_delay to report how much time was spent throttling other peers.
  • Add testing feature 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_hash field 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_fraction from the [highway] to the [core] section in the chainspec.
  • Move max_execution_delay config 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_deploys JSON-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_identifier parameter of JSON-RPC query_global_state requests.
  • Add new block_hash and block_height optional fields to JSON-RPC info_get_deploy response 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_status field to the JSON representation of the ContractPackage values.
  • Key::SystemContractRegistry is now readable and can be queried via the query_global_state JSON-RPC.
  • Unify log messages for blocked nodes and provide more detailed reasons for blocking peers.
  • Rename current_era metric to consensus_current_era.

Deprecated

  • null should no longer be used as a value for params in JSON-RPC requests. Prefer an empty Array or Object.
  • Deprecate the chain_height metric in favor of highest_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 ...
Read more

v1.5.0-rc.1

11 May 13:03
a50b85a
Compare
Choose a tag to compare
v1.5.0-rc.1 Pre-release
Pre-release

Initial RC release for 1.5.0

v1.4.15-alt

09 May 13:49
cea73cd
Compare
Choose a tag to compare

Release to correct some version issues with crates in 1.4.15.

v1.4.15

28 Apr 03:02
039d438
Compare
Choose a tag to compare

Changed

  • Modified JSON-RPCs chain_get_era_info_by_switch_block and chain_get_era_summary to use either Key::EraInfo or Key::EraSummary as appropriate in order to provide useful responses.

v1.4.14

18 Apr 15:21
f895572
Compare
Choose a tag to compare

Added

  • Node executes new prune process after executing each block, whereby entries under Key::EraInfo are 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_summary to retrieve the information stored under Key::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 under Key::EraSummary.
  • Update openssl and openssl-sys to latest versions.

Removed

  • Remove TimeDiff, Timestamp and asymmetric key functionality (moved to casper-types crate).

Fixed

  • Fix issue in BlockValidator inhibiting the use of fallback peers to fetch missing deploys.