Releases: deso-protocol/core
v4.0.3
Description
The v4.0.3 release is a minor non-forking upgrade. The only change included in this release is updating the logic of the GetBlockNodeWithHash
function to use the BestChainMap
for better performance. Most notably, this function is used in rosetta.
What's Changed
Full Changelog: v4.0.2...v4.0.3
v4.0.2
Description
The v4.0.2 release is a minor non-forking upgrade the provides enhancements and small bug fixes to Revolution Proof-of-Stake.
Notable changes include:
- Update fee estimation logic to return global min fee rate if the size of transactions is less than 50% of the computed congestion threshold
- Networking bug fixes to address issues with the network manager's index of persistent peers
- State syncer enhancements to better manage uncommitted state.
- Include a disconnect reason when disconnect peers to make debugging of networking issues easier.
- Small hypersync fixes to save the state of encoder migrations more proactively to avoid unnecessarily running encoder migrations and to fix the hypersync start condition around the transition from PoW to PoS.
- Accelerated regtest mode for a faster transition to PoS
What's Changed
- Add signature validation for PoW txns by @diamondhands0 in #1375
- Save migrations at the end of StartMigrations by @lazynina in #1379
- Add disconnect reason to peer disconnect logic by @lazynina in #1378
- Pass disconnectReason through CloseConnection by @lazynina in #1380
- Resolve decode issues with block height by @superzordon in #1381
- Fix isHyperSyncCondition to account for transition from PoW snapshot epoch period to PoS snapshot epoch period by @lazynina in #1383
- Conditionally queue block bundles in expected responses and dequeue them in _handleInExpectedResponse. don't queue msg in _cleanupDonePeerState if there are no transactions. also exit early if peer can't accept inv messages by @lazynina in #1384
- Fix Persistent IP Indexing Edge Cases in NetworkManager by @tholonious in #1386
- Add panic-recover to safe utxo view connect txn by @lazynina in #1388
- Add support for trading fees as extradata by @diamondhands0 in #1377
- accelerated regtest mode by @lazynina in #1391
- Ln/max tip age bug fix by @lazynina in #1392
- Update uncommitted block sync ID by @superzordon in #1382
- If less than 50% of congestion threshold, return min fee rate by @lazynina in #1393
Full Changelog: v4.0.1...v4.0.2
v4.0.1
This is a mandatory upgrade and all nodes need to upgrade by the existing deadline specified in the v4.0.0 release.
This release will not incur additional downtime if you’ve already upgraded to v4.0.0. If you haven’t already upgraded, you’ll experience the same amount of downtime as if you upgraded to v4.0.0 - about 20-30 minutes.
What's Changed
This release addresses an issue where locked stake could not be unlocked if a validator unregistered. See release v4.0.0 for full details on all PoS upgrades.
Full Changelog: v4.0.0...v4.0.1
v4.0.0
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.
- Network is secured by validators instead of miners and transaction finalization is lowered to ~three seconds, with one second block confirmations.
- 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.
- Ability to earn staking rewards, initially 20% APY, for staking your DESO with a validator.
- State-of-the-art dynamic fee-time ordering of transactions in block construction to minimize congestion.
- Burn-maximizing fee algorithm to maximize value for coin-holders as traffic increases.
There are two blocks heights of importance with this release.
- 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.
- 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.comUNREGISTER_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 theReward Method
(PAY_TO_BALANCE
orRESTAKE
).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
v4.0.0-beta.1
Description
The v4.0.0-beta.1 release addresses a few issues related to networking and fee estimation.
For more details on the changes introduced with the PoS upgrade, please see release v4.0.0-beta.0.
For more details on DeSo's move to proof-of-stake, please visit https://revolution.deso.com/.
If you need a docker image for the build of core with this release, please use this tag
What's Changed
- Send Requested HeaderBundle Even When Syncing by @tholonious in #1263
- Bump transaction validation interval in TestGetBlockTransactions by @lazynina in #1265
- Remove Sync Peer Disconnect When Header Tip Is Not Current After Syncing Headers by @tholonious in #1264
- Start FastHotStuffConsensus If Sync Peers are Not Eligible To Sync From by @tholonious in #1266
- Fix MergeGlobalParamEntryDefaults For Fee Estimator by @tholonious in #1267
- Fix SyncPeer Refresh When Current Sync Peer Disconnects by @tholonious in #1268
- Create New Validator Domain Parsing and Validation by @tholonious in #1269
- Tighten RegisterAsValidator Domain Validation by @tholonious in #1270
- Fix Iota bug by @diamondhands0 in #1271
Full Changelog: v4.0.0-beta.0...v4.0.0-beta.1
v4.0.0-beta.0
UPDATE
Please upgrade to the new pre-release v4.0.0-beta.1 as a few issues were uncovered in the v4.0.0-beta.0 release.
Description
v4.0.0-beta.0 is a pre-release for the upcoming Proof-of-stake fork. Please note that v4.0.0-beta.0 only sets fork heights for testnet and only testnet nodes should upgrade at this time. Upgrading mainnet nodes is not required and will NOT transition a mainnet node to use proof-of-stake as the consensus mechanism.
There are two fork heights set for testnet with this release.
With the first fork (set to occur around Wednesday May 1 at 12pm PT), the network will first accept new transaction types required to set up the network for the transition to PoS (REGISTER_AS_VALIDATOR
, UNREGISTER_AS_VALIDATOR
, UNJAIL_VALIDATOR
, STAKE
, UNSTAKE
, UNLOCK_STAKE
) as well as new non-proof-of-stake transaction types (COIN_LOCKUP
, UPDATE_COIN_LOCKUP_PARAMS
, COIN_LOCKUP_TRANSFER
, COIN_UNLOCK
, ATOMIC_TXNS_WRAPPER
). At this point, nodes can register as validators and users may stake to the validators. The network requires at least a single validators with a non-zero amount of stake in order to run the proof of stake consensus.
With the second fork (set to occur around Monday May 6 at 12pm PT), the network will transition from proof-of-work to proof-of-stake.
For more details on DeSo's move to proof-of-stake, please visit https://revolution.deso.com/.
If you need a docker image for the build of core with this release, please use this tag
What's Changed
- RegisterAsValidator + UnregisterAsValidator TxnTypes by @mattfoley8 in #495
- Mf/add block view stake by @mattfoley8 in #501
- Mf/unstake stakers for unregistering validator by @mattfoley8 in #513
- Add epoch data type. by @mattfoley8 in #514
- Incorporate epoch number into PoS txns. by @mattfoley8 in #515
- Mf/validate stake lockup period by @mattfoley8 in #517
- Add jailed status to validator entries. by @mattfoley8 in #518
- Mf/add unjail validator txn type by @mattfoley8 in #520
- Mf/convert validator voting keys to bls keys by @mattfoley8 in #522
- Diamondhands/pos txn types review by @diamondhands0 in #530
- Merge feature/pos-txn-types into feature/proof-of-stake by @mattfoley8 in #534
- Exclude zero-stake validators from TopValidatorsByStake. by @mattfoley8 in #535
- Mf/remove jailed stake from global active stake by @mattfoley8 in #533
- Mf/merge pos txn types 20230522 by @mattfoley8 in #536
- Mf/add solorand random seed by @mattfoley8 in #528
- Mf/use uint64 for limit by @mattfoley8 in #540
- Mf/proof of stake merge 20230530 by @mattfoley8 in #541
- Mf/generate pos leader schedules by @mattfoley8 in #538
- Add default epoch entry. by @mattfoley8 in #544
- Mf/param updater update pos global params by @mattfoley8 in #543
- Update sign BLS test helper func signature. by @mattfoley8 in #547
- Mf/pos merge main 20230606 by @mattfoley8 in #548
- Consolidate PoS block heights. by @mattfoley8 in #546
- Snapshot GlobalParams, ValidatorSet, GlobalActiveStake, and LeaderSchedule by @mattfoley8 in #542
- Mf/jail inactive validators by @mattfoley8 in #550
- Fix bugs in updating global params. by @mattfoley8 in #552
- Add validator status ToString util. by @mattfoley8 in #557
- Rename VotingPublicKeySignature to VotingAuthorization. by @mattfoley8 in #559
- Refactor merging GlobalParamsEntry defaults. by @mattfoley8 in #560
- PoS Add P2P vote and timeout messages by @tholonious in #555
- MF PoS Aggregate Changes (2023-06-05) by @mattfoley8 in #545
- PoS Add QC fields to block header schema by @tholonious in #558
- PoS Implement Bitset data structure by @tholonious in #564
- PoS Add Bitset to messaging schema by @tholonious in #565
- PoS Simplify PublicKey field names in P2P messages by @tholonious in #566
- PoS Add BLS public key and signature to BlockProducerInfo by @tholonious in #567
- PoS Add ProposedInView field to block header by @tholonious in #568
- PoS Compress uint64 fields in MsgDeSoHeader version 2 by @tholonious in #569
- Rename Bitset parent package from utils to collections by @tholonious in #571
- sa/pos-messaging-schema-cleanup by @tholonious in #572
- Add BLS Signature Verification for Multiple Payloads by @tholonious in #575
- Revert BLS public key and signature in BlockProducerInfo by @tholonious in #576
- PoS Mempool Data Structures by @AeonSw4n in #561
- PoS Mempool Transaction Register by @AeonSw4n in #562
- Add block proposer public keys and signature to block header by @tholonious in #577
- PoS Add GlobalParams for Max Validators and Max Stakers by @tholonious in #573
- Add byte encoder/decoder for optional BLS signatures by @tholonious in #580
- feature/pos-messaging-schema by @tholonious in #570
- PoS Decouple Validator Jailing from Validator Snapshotting by @tholonious in #581
- PoS Snapshot Top n Active Validators as the Validator Set by @tholonious in #582
- PoS Rename SnapshotValidatorEntries to SnapshotValidatorSet by @tholonious in #583
- PoS Deprecate GlobalActiveStakeAmountNanos by @tholonious in #584
- PoS Rename SnapshotGlobalActiveStakeAmountNanos to SnapshotValidatorSetTotalStakeAmountNanos by @tholonious in #585
- Ln/merge mem reduction into feature pos by @lazynina in #588
- PoS Add RestakeRewards flag to TxnTypeStake by @tholonious in #586
- Easy - ValidatorByStatusAndStake naming by @tholonious in #590
- Merge branch 'main' into feature/proof-of-stake by @tholonious in #593
- PoS Add StakeByStakeAmount badger index by @tholonious in #591
- Implement badger seek with arbitrary key skip function by @tholonious in #596
- PoS Add UtxoView function to fetch top n stakers by @tholonious in #594
- More consistent naming for stake ordered badger indices by @tholonious in #597
- Snapshot top n StakeEntries for staking rewards by @tholonious in #598
- Easy - Rename StakingRewardsMaxNumStakes global param by @tholonious in #605
- Easy - Cleanup and rename GetTopActiveValidatorsByStakeAmount for clarity by @tholonious in #606
- Distribute Staking Rewards on Epoch Transition by @tholonious in #607
- Revert UtxoOp Emits in Stake Reward Distribtion by @tholonious in #609
- Filter validator jailing to just the current validator set by @tholonious in #610
- Run State Mutating Operations Before Snapshotting in End of Epoch Hook by @tholonious in #611
- Update RestakeRewards boolean to a RewardMethod enum by @tholonious in #612
- Add delegated stake commissions field to ValidatorEntry by @tholonious in #613
- PoS Transaction Register Prune by @AeonSw4n in #563
- Add block timestamps to epoch entry and epoch completed hook by @tholonious in #616
- Add...
v3.4.6
Description
v3.4.6 most notably includes updates to optimize memory usage during hypersync and introduces the state syncer functionality, allowing nodes to track state changes to a log file and then process that file into a data store of their choosing. Other minor updates include a small update to the dao coin limit order transaction construction logic, including extra data in max spend and diamond transaction construction, adding transactor as an affected public key for all transactions if not already included, and small readme updates.
More documentation for state syncer will be available in the future.
What's Changed
- Update badger sync settings to optimize memory usage during hypersync by @superzordon in #636
- ln/add-transactor-as-affected-pub-key by @lazynina in #675
- WIP: State indexer by @superzordon in #488
- Add extra data to max spend and diamond txn construction by @lazynina in #883
- Only encode state change metadata if flag is set by @lazynina in #884
- Don't add to the queue in snapshot.Run for the SnapshotOperationProcessChunk, we already added to the channel GetSnapshot by @lazynina in #890
- Fix small bug in dao coin limit order txn construction by @lazynina in #910
- Update README.md - fix links to docs.deso.org by @lazynina in #914
- Z/hypersync db settings fix by @superzordon in #900
- [stable] Release 3.4.5 by @lazynina in #921
- [stable] Release 3.4.6 by @lazynina in #922
Full Changelog: v3.4.5...v3.4.6
v3.4.5
Description
v3.4.5 reduces memory requirements to run hypersync by limiting the number of chunks to be processed during the hypersync phase. Additionally, v3.4.5 reduces memory requirements to run tests by using default badger options for the db.
What's Changed
- Fix copy paste mistake in function comment by @pelmers in #574
- reduce memory requirements for tests by @lazynina in #587
- Ln/fix deso encoder test by @lazynina in #592
- Limit number of chunks in operation channel to reduce hypersync memory by @superzordon in #604
New Contributors
Full Changelog: v3.4.4...v3.4.5
v3.4.4
Description
v3.4.4 addresses a bug in how postgres nodes process the genesis block and addresses an issue in how miner code computes the block reward amount
What's Changed
- Block Reward Patch - prevent free tx fees for recipient of block reward output by @lazynina in #537
- update miner to recompute block reward properly by @lazynina in #549
- fix pg genesis block by @lazynina in #554
Full Changelog: v3.4.3...v3.4.4
v3.4.3
Description
Release 3.4.3 addresses a bug in syncing a postgres node where the computation of immature block rewards differed from badger.
What's Changed
Full Changelog: v3.4.2...v3.4.3