Skip to content

v4.0.0

Compare
Choose a tag to compare
@lazynina lazynina released this 17 Jun 19:14
· 36 commits to main since this release

Fork Preparation Checklist

In order to upgrade your node to be compatible with this new version, please complete all steps of the checklist below.

  • Reboot your node with the most recent stable release image from docker before noon PT on July 1st, 2024.
    • Your node may pause for 10-20 minutes after reboot for re-indexing, but a resync is not required.
    • Please note that the fork is expected to hit on Tuesday July 2nd, 2024 at noon PT.

Description

The v4.0.0 release is a major version upgrade that brings Revolution Proof-of-Stake to DeSo mainnet. Upgrading your mainnet node is required as mentioned above.

The transition to proof-of-stake brings many new features to the DeSo blockchain. Below is a list of some of the highlights.

  1. Network is secured by validators instead of miners and transaction finalization is lowered to ~three seconds, with one second block confirmations.
  2. Throughput can safely reach 500 posts per second (~10% of Twitter scale), and even higher TPS for storage-light transactions, such as transfers or DeFi transactions.
  3. Ability to earn staking rewards, initially 20% APY, for staking your DESO with a validator.
  4. State-of-the-art dynamic fee-time ordering of transactions in block construction to minimize congestion.
  5. Burn-maximizing fee algorithm to maximize value for coin-holders as traffic increases.

There are two blocks heights of importance with this release.

  1. Proof-of-Stake setup height (349167, ETA Tuesday July 2nd, 2024 at noon PT) - after this height, all next transaction types described below are accepted. The chain is still running Proof-of-Work until the next fork height hits.
  2. Proof-of-Stake cutover height (351153, ETA Tuesday July 9th, 2024 at noon PT) - The chain transitions from Proof-of-Work to Proof-of-Stake.

New Transaction Types

  • REGISTER_AS_VALIDATOR - allows for a public key to register themselves as a validator on the network and configure/update their validator settings. Once registered as a validator with stake, one can participate in securing the network as a validator. You may register as a validator at explorer.deso.com
  • UNREGISTER_AS_VALIDATOR - allows a public key to unregister itself as a validator and removes it from the validator set.
  • UNJAIL_VALIDATOR - allows a public key to unjail itself if it has been jailed for not voting within the allotted time.
  • STAKE - allows a public key to stake to a validator and earn staking rewards for helping secure the network. This transaction type is also used to update the Reward Method (PAY_TO_BALANCE or RESTAKE).
  • UNSTAKE - allows a public key to unstake from a validator. This removes an amount of stake (or all of its stake) from a validator. This stake is "locked" for two epochs.
  • UNLOCK_STAKE - allows a public key to unlock "locked" stake.
  • COIN_LOCKUP - allows a public key to "lock" DeSo tokens and earn yield on locked tokens (depending on configuration of the profile that created the tokens).
  • UPDATE_COIN_LOCKUP_PARAMS - allows the owner of a DeSo Token (like an ERC-20 on the DeSo network) to adjust the configuration of the parameters for locking up tokens they issue. This allows for the creation of yield curves, among other benefits.
  • COIN_LOCKUP_TRANSFER - allows for the transferring of "locked" DeSo tokens.
  • COIN_UNLOCK - allows for the "unlocking" of DeSo tokens after the lock up period has passed.
  • ATOMIC_TXNS_WRAPPER - allows for the bundling of multiple transactions in a single transaction to ensure a series of transactions are executed in an all-or-nothing fashion.

New Flags

  • pos-validator-seed - a bip 39 seed phrase or seed hex used to generate the private key of the proof of stake validator that is running on this node.
  • mempool-backup-time-millis - the frequency in milliseconds with which the mempool will persist its state to disk. Default value is 30000 (30 seconds).
  • mempool-max-vlalidation-view-connects - The maximum number of connects that the PoS mempool transaction validation routine will perform. Default value is 10000.
  • transaction-validation-refresh-interval - The frequency in milliseconds with which the transaction validation routine is run in the mempool. Default value is 10 milliseconds.
  • peer-connections-refresh-interval-millis - The frequency in milliseconds with which the node will refresh its peer connections. This applies to both outbound validators and outbound persistent non-validators.
  • state-syncer-mempool-txn-sync-limit - The maximum number of transactions to process in the mempool tx state syncer at a time. Default value is 10000.
  • checkpoint-syncing-providers - A comma-separated list of URLs that support the committed tip block info endpoint to be used for checkpoint syncing. If unset, the field will default to node.deso.org on mainnet and test.deso.org on testnet.

What's Changed

  • If data dir exists already, just use performance options. If not, use sync type (instead of config.Hypersync) by @lazynina in #934
  • Update when state syncer starts the mempool sync routine. by @superzordon in #1064
  • Fix minor issues to speed up block processing logic by @diamondhands0 in #1145
  • Check Z sign before calling BigFloatPow in CalculateDeSoToReturn by @lazynina in #1223
  • feature/proof-of-stake by @tholonious in #964

Full Changelog: v3.4.6...v4.0.0