github casper-network/casper-node v1.5.1

latest releases: v1.5.8, v1.5.7, v1.5.6...
16 months ago

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 global state.
  • Remove config section [deploy_acceptor] which only has one option verify_accounts, meaning deploys received from clients always undergo account balance checks to assess suitability for execution or not.
  • Remove storage integrity check.
  • Remove SIGUSR1/SIGUSR2 queue dumps in favor of the diagnostics port.
  • Remove casper-mainnet feature flag.

Fixed

  • Limiters for incoming requests and outgoing bandwidth will no longer inadvertently delay some validator traffic when maxed out due to joining nodes.
  • Dropped connections no longer cause the outstanding messages metric to become incorrect.
  • JSON-RPC server is now mostly compliant with the standard. Specifically, correct error values are now returned in responses in many failure cases.

Security

  • Bump openssl crate to version 0.10.48, if compiling with vendored OpenSSL to address latest RUSTSEC advisories.

Don't miss a new casper-node release

NewReleases is sending notifications on new releases.