diff --git a/casper-node_release b/casper-node_release index 043f688..5a22188 100644 --- a/casper-node_release +++ b/casper-node_release @@ -1 +1 @@ -1.5.2-86b7013 \ No newline at end of file +1.5.3-7aa53e8 \ No newline at end of file diff --git a/config/CHANGELOG.md b/config/CHANGELOG.md index 069d876..68d4708 100644 --- a/config/CHANGELOG.md +++ b/config/CHANGELOG.md @@ -11,6 +11,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [comment]: <> (Fixed: any bug fixes) [comment]: <> (Security: in case of vulnerabilities) +## 1.5.3 - 11081 +### casper-node 1.5.3-7aa53e8 + +## Removed +* config-example.toml + * block_synchronizer + * stall_limit + +## Added +* chainspec.toml + * deploys + * max_timestamp_leeway +* block_validator + * max_completed_entries +* deploy_acceptor + * timestamp_leeway + +## Changed +* Reformating of multiple time based values +* chainspec.toml + * protocol + * version + * activation_point + ## 1.5.2 - 10553 ### casper-node 1.5.2-86b7013 diff --git a/config/chainspec.toml b/config/chainspec.toml index 2dc71cb..7b1775e 100644 --- a/config/chainspec.toml +++ b/config/chainspec.toml @@ -1,6 +1,6 @@ [protocol] # Protocol version. -version = '1.5.2' +version = '1.5.3' # Whether we need to clear latest blocks back to the switch block just before the activation point or not. hard_reset = true # This protocol version becomes active at this point. @@ -11,7 +11,7 @@ hard_reset = true # in contract-runtime for computing genesis post-state hash. # # If it is an integer, it represents an era ID, meaning the protocol version becomes active at the start of this era. -activation_point = 10553 +activation_point = 11081 [network] # Human readable name for convenience; the genesis_hash is the true identifier. The name influences the genesis hash by @@ -24,12 +24,12 @@ maximum_net_message_size = 25_165_824 [core] # Era duration. -era_duration = '120min' +era_duration = '120 minutes' # Minimum number of blocks per era. An era will take longer than `era_duration` if that is necessary to reach the # minimum height. minimum_era_height = 20 # Minimum difference between a block's and its child's timestamp. -minimum_block_time = '32768ms' +minimum_block_time = '32768 ms' # Number of slots available in validator auction. validator_slots = 100 # A number between 0 and 1 representing the fault tolerance threshold as a fraction, used by the internal finalizer. @@ -48,7 +48,7 @@ legacy_required_finality = 'Any' # you will be a validator in era N + auction_delay + 1. auction_delay = 1 # The period after genesis during which a genesis validator's bid is locked. -locked_funds_period = '90days' +locked_funds_period = '90 days' # The period in which genesis validator's bid is released over time after it's unlocked. vesting_schedule_period = '13 weeks' # Default number of eras that need to pass to be able to withdraw unbonded funds. @@ -83,7 +83,7 @@ max_delegators_per_validator = 1200 [highway] # Highway dynamically chooses its round length, between minimum_block_time and maximum_round_length. -maximum_round_length = '132seconds' +maximum_round_length = '132 seconds' # The factor by which rewards for a round are multiplied if the greatest summit has ≤50% quorum, i.e. no finality. # Expressed as a fraction (1/5 by default). reduced_reward_multiplier = [1, 5] @@ -92,7 +92,7 @@ reduced_reward_multiplier = [1, 5] # The maximum number of Motes allowed to be spent during payment. 0 means unlimited. max_payment_cost = '0' # The duration after the deploy timestamp that it can be included in a block. -max_ttl = '18hours' +max_ttl = '18 hours' # The maximum number of other deploys a deploy can depend on (require to have been executed before it can execute). max_dependencies = 10 # Maximum block size in bytes including deploys contained by the block. 0 means unlimited. @@ -113,6 +113,8 @@ payment_args_max_length = 1024 session_args_max_length = 1024 # The minimum amount in motes for a valid native transfer. native_transfer_minimum_motes = 2_500_000_000 +# The maximum value to which `deploy_acceptor.timestamp_leeway` can be set in the config.toml file. +max_timestamp_leeway = '5 seconds' [wasm] # Amount of free memory (in 64kB pages) each contract can use for stack. diff --git a/config/config-example.toml b/config/config-example.toml index 4d3271d..c11a958 100644 --- a/config/config-example.toml +++ b/config/config-example.toml @@ -10,23 +10,23 @@ sync_to_genesis = true # Idle time after which the syncing process is considered stalled. -idle_tolerance = '20min' +idle_tolerance = '20 minutes' # When the syncing process is considered stalled, it'll be retried up to `max_attempts` times. max_attempts = 3 # Default delay for the control events that have no dedicated delay requirements. -control_logic_default_delay = '1sec' +control_logic_default_delay = '1 second' # Flag which forces the node to resync all of the blocks. force_resync = false # A timeout for the ShutdownForUpgrade state, after which the node will upgrade even if not all # conditions are satisfied. -shutdown_for_upgrade_timeout = '2min' +shutdown_for_upgrade_timeout = '2 minutes' # Maximum time a node will wait for an upgrade to commit. -upgrade_timeout = '30sec' +upgrade_timeout = '30 seconds' # ================================= @@ -64,16 +64,16 @@ max_execution_delay = 3 [consensus.zug] # Request the latest protocol state from a random peer periodically, with this interval. -# '0sec' means it is disabled and we never request the protocol state from a peer. -sync_state_interval = '1sec' +# '0 seconds' means it is disabled and we never request the protocol state from a peer. +sync_state_interval = '1 second' # Log inactive or faulty validators periodically, with this interval. -# '0sec' means it is disabled and we never print the log message. -log_participation_interval = '1min' +# '0 seconds' means it is disabled and we never print the log message. +log_participation_interval = '1 minute' # The minimal proposal timeout. Validators wait this long for a proposal to receive a quorum of # echo messages, before they vote to make the round skippable and move on to the next proposer. -proposal_timeout = '10sec' +proposal_timeout = '10 seconds' # The additional proposal delay that is still considered fast enough, in percent. This should # take into account variables like empty vs. full blocks, network traffic etc. @@ -88,7 +88,7 @@ proposal_timeout_inertia = 10 # The maximum difference between validators' clocks we expect. Incoming proposals whose timestamp # lies in the future by more than that are rejected. -clock_tolerance = '1sec' +clock_tolerance = '1 second' # =========================================== @@ -97,19 +97,19 @@ clock_tolerance = '1sec' [consensus.highway] # The duration for which incoming vertices with missing dependencies should be kept in a queue. -pending_vertex_timeout = '30min' +pending_vertex_timeout = '30 minutes' # Request the latest protocol state from a random peer periodically, with this interval. -# '0sec' means it is disabled and we never request the protocol state from a peer. -request_state_interval = '20sec' +# '0 seconds' means it is disabled and we never request the protocol state from a peer. +request_state_interval = '20 seconds' # Log inactive or faulty validators periodically, with this interval. -# '0sec' means it is disabled and we never print the log message. -log_participation_interval = '1min' +# '0 seconds' means it is disabled and we never print the log message. +log_participation_interval = '1 minute' # Log the synchronizer state periodically, with this interval. -# '0sec' means it is disabled and we never print the log message. -log_synchronizer_interval = '5sec' +# '0 seconds' means it is disabled and we never print the log message. +log_synchronizer_interval = '5 seconds' # Log the size of every incoming and outgoing serialized unit. log_unit_sizes = false @@ -174,19 +174,19 @@ known_addresses = ['34.192.231.34:35000','168.119.137.143:35000','46.101.61.107: min_peers_for_initialization = 3 # The interval between each fresh round of gossiping the node's public address. -gossip_interval = '120sec' +gossip_interval = '120 seconds' # Initial delay for starting address gossipping after the network starts. This should be slightly # more than the expected time required for initial connections to complete. -initial_gossip_delay = '5sec' +initial_gossip_delay = '5 seconds' # How long a connection is allowed to be stuck as pending before it is abandoned. -max_addr_pending_time = '1min' +max_addr_pending_time = '1 minute' # Maximum time allowed for a connection handshake between two nodes to be completed. Connections # exceeding this threshold are considered unlikely to be healthy or even malicious and thus # terminated. -handshake_timeout = '20sec' +handshake_timeout = '20 seconds' # Maximum number of incoming connections per unique peer allowed. If the limit is hit, additional # connections will be rejected. A value of `0` means unlimited. @@ -216,7 +216,7 @@ max_in_flight_demands = 50 tarpit_version_threshold = '1.2.1' # How long to hold connections to trapped legacy nodes. -tarpit_duration = '10min' +tarpit_duration = '10 minutes' # The probability [0.0, 1.0] of this node trapping a legacy node. # @@ -227,7 +227,7 @@ tarpit_duration = '10min' tarpit_chance = 0.2 # How long peers remain blocked after they get blocklisted. -blocklist_retain_duration = '10min' +blocklist_retain_duration = '10 minutes' # Identity of a node # @@ -449,20 +449,20 @@ saturation_limit_percent = 80 # # The longer they are retained, the lower the likelihood of re-gossiping a piece of data. However, # the longer they are retained, the larger the list of finished entries can grow. -finished_entry_duration = '1min' +finished_entry_duration = '1 minute' # The timeout duration for a single gossip request, i.e. for a single gossip message # sent from this node, it will be considered timed out if the expected response from that peer is # not received within this specified duration. -gossip_request_timeout = '30sec' +gossip_request_timeout = '30 seconds' # The timeout duration for retrieving the remaining part(s) of newly-discovered data # from a peer which gossiped information about that data to this node. -get_remainder_timeout = '5sec' +get_remainder_timeout = '5 seconds' # The timeout duration for a newly-received, gossiped item to be validated and stored by another # component before the gossiper abandons waiting to gossip the item onwards. -validate_and_store_timeout = '1min' +validate_and_store_timeout = '1 minute' # =============================================== @@ -474,10 +474,10 @@ validate_and_store_timeout = '1min' attempt_execution_threshold = 3 # Accepted time interval for inactivity in block accumulator. -dead_air_interval = '3min' +dead_air_interval = '3 minutes' # Time after which the block acceptors are considered old and can be purged. -purge_interval = '1min' +purge_interval = '1 minute' # ================================================ @@ -489,20 +489,28 @@ purge_interval = '1min' max_parallel_trie_fetches = 5000 # Time interval for the node to ask for refreshed peers. -peer_refresh_interval = '90sec' +peer_refresh_interval = '90 seconds' # Time interval for the node to check what the block synchronizer needs to acquire next. -need_next_interval = '1sec' +need_next_interval = '1 second' # Time interval for recurring disconnection of dishonest peers. -disconnect_dishonest_peers_interval = '10sec' +disconnect_dishonest_peers_interval = '10 seconds' # Time interval for resetting the latch in block builders. -latch_reset_interval = '5sec' +latch_reset_interval = '5 seconds' -# Time interval after which synchronization is considered stalled if no successful sync -# activity happened. -stall_limit = '120sec' + +# ============================================= +# Configuration options for the block validator +# ============================================= +[block_validator] + +# Maximum number of completed entries to retain. +# +# A higher value can avoid creating needless validation work on an already-validated proposed +# block, but comes at the cost of increased memory consumption. +max_completed_entries = 3 # ================================== @@ -513,7 +521,7 @@ stall_limit = '120sec' # The timeout duration for a single fetcher request, i.e. for a single fetcher message # sent from this node to another node, it will be considered timed out if the expected response from that peer is # not received within this specified duration. -get_from_peer_timeout = '10sec' +get_from_peer_timeout = '10 seconds' # ======================================================== @@ -539,13 +547,28 @@ max_global_state_size = 2_089_072_132_096 #enable_manual_sync = true +# ============================================= +# Configuration options for the deploy acceptor +# ============================================= +[deploy_acceptor] + +# The leeway allowed when considering whether a deploy is future-dated or not. +# +# To accommodate minor clock drift, deploys whose timestamps are within `timestamp_leeway` in the +# future are still acceptable. +# +# The maximum value to which `timestamp_leeway` can be set is defined by the chainspec setting +# `deploys.max_timestamp_leeway`. +timestamp_leeway = '2 seconds' + + # =========================================== # Configuration options for the deploy buffer # =========================================== [deploy_buffer] # The interval of checking for expired deploys. -expiry_check_interval = '1min' +expiry_check_interval = '1 minute' # ============================================== @@ -571,4 +594,4 @@ socket_umask = 0o077 [upgrade_watcher] # How often to scan file system for available upgrades. -upgrade_check_interval = '30sec' +upgrade_check_interval = '30 seconds' diff --git a/protocol_versions b/protocol_versions index 9e5569c..c0fd114 100644 --- a/protocol_versions +++ b/protocol_versions @@ -1,17 +1,2 @@ -1_0_0 -1_1_0 -1_1_2 -1_2_0 -1_2_1 -1_3_2 -1_3_4 -1_4_1 -1_4_3 -1_4_4 -1_4_5 -1_4_6 -1_4_8 -1_4_9 -1_4_13 -1_4_15 -1_5_2 \ No newline at end of file +1_5_2 +1_5_3 \ No newline at end of file diff --git a/stage_upgrade.sh b/stage_upgrade.sh index 0727c5c..a6be3fc 100755 --- a/stage_upgrade.sh +++ b/stage_upgrade.sh @@ -2,7 +2,7 @@ set -e -# This script will stage the upgrade files for casper network from 1.4.15 to 1.5.2 +# This script will stage the upgrade files for casper network from 1.5.2 to 1.5.3 if [ "$(whoami)" != "root" ]; then echo @@ -12,8 +12,8 @@ if [ "$(whoami)" != "root" ]; then exit 1 fi -if [[ -d "/etc/casper/1_5_2" ]]; then - echo "Upgrade 1.5.2 already staged." +if [[ -d "/etc/casper/1_5_3" ]]; then + echo "Upgrade 1.5.3 already staged." exit 0 fi @@ -22,42 +22,20 @@ CNL_VERSION=$(casper-node-launcher --version | cut -d' ' -f4) # Format of the arguments to pull_casper_node_version.sh script changed to allow conf # files for other networks with 0.3.3+. -if [ $CNL_VERSION == "0.3.2" ]; then - echo "casper-node-launcher version 0.3.2, using old syntax." - sudo -u casper /etc/casper/pull_casper_node_version.sh 1_5_2 casper +if [[ ${CNL_VERSION:0:1} == "1" ]]; then + echo "casper-node-launcher version 1.x.x, using node_util.py syntax." + sudo -u casper /etc/casper/node_util.py stage_protocols casper.conf else - echo "casper-node-launcher version 0.3.3+, using conf syntax." - sudo -u casper /etc/casper/pull_casper_node_version.sh casper.conf 1_5_2 + if [ $CNL_VERSION == "0.3.2" ]; then + echo "casper-node-launcher version 0.3.2, using old syntax." + sudo -u casper /etc/casper/pull_casper_node_version.sh 1_5_3 casper + else + echo "casper-node-launcher version 0.3.3+, using conf syntax." + sudo -u casper /etc/casper/pull_casper_node_version.sh casper.conf 1_5_3 + fi + sudo -u casper /etc/casper/config_from_example.sh 1_5_3 fi +echo "Upgrade 1_5_3 staged." -sudo -u casper /etc/casper/config_from_example.sh 1_5_2 -echo "Upgrade 1_5_2 staged." - -if [[ "18.04" == $(lsb_release -sr) ]]; then - echo - echo "WARNING - The current protocol upgrade is staged, however you have issues that need fixed prior to the upgrade following 1.5.2." - echo - echo "This server is running on Ubuntu 18.04, which reached end of life on May 31, 2023." - echo "It is recommended that you load a new node with 20.04 or 22.04." - echo "Future protocol upgrades may require 20.04 as the minimum supported version." - echo - echo "Instructions for loading a node can be found at https://docs.casper.network/operators/setup/" - echo "DO NOT run multiple nodes with the same key. If you are an active validator, you should follow" - echo "Method Two of this guide: https://docs.casper.network/operators/maintenance/moving-node/" - echo "to bring up a new node and migrate over with minimal downtime." - echo - echo "Additional communication on syncing a new node using less disk space will be released after 1.5.2 upgrade is active on MainNet." - exit 1 -fi - -if [[ ${CNL_VERSION:0:1} == "0" ]]; then - echo - echo "WARNING - The current protocol upgrade is staged, however you have issues that need fixed prior to the upgrade following 1.5.2." - echo - echo "This is a very old version of casper-node-launcher and will not be supported after this protocol upgrade." - echo "Please make sure you are setup to pull software from https://repo.casperrlabs.io and install the latest version." - echo - exit 1 -fi exit 0 \ No newline at end of file