v4.0.0-beta.0
Pre-releaseUPDATE
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 Global Param for Staking Rewards APY by @tholonious in #614
- PoS Mempool Balance Ledger by @AeonSw4n in #599
- PoS Mempool Transaction Validation by @AeonSw4n in #600
- Pull out common setup logic out of end of epoch test by @tholonious in #620
- Deprecate old placeholder staking reward distribution logic by @tholonious in #621
- Naming, comment, and error message clean up for snapshotting changes by @tholonious in #622
- Refactor SnapshotStakesToReward Badger Index by @tholonious in #623
- Use current global params outside of the PoS consensus by @tholonious in #624
- Implement Staking Rewards APY Computations by @tholonious in #615
- Cross validator size of validator set and leader schedule by @tholonious in #625
- Create new rule error for leader schedule size validation by @tholonious in #626
- Add TstampNanoSecs to block header by @tholonious in #628
- Add ProposerRandomSeedHash to block header by @tholonious in #629
- PoS Database Interface by @AeonSw4n in #601
- PoS Mempool Persister by @AeonSw4n in #602
- Address Staker Snapshotting PR Feedback by @tholonious in #633
- Guarantee top n staker snapshotting by @tholonious in #632
- PoS Snapshotting and Staker Rewards by @tholonious in #579
- PoS Block Header Followup changes by @tholonious in #631
- Merge Block Nanosecond Timestamp Change with OnEpochComplete Hook Changes by @tholonious in #634
- PoS Mempool Struct by @AeonSw4n in #603
- feature/pos-fast-hotstuff-skeleton by @tholonious in #638
- Implement PoS Consensus Interfaces and Initialization by @tholonious in #640
- Add Basic Unit Tests for Fast HotStuff Consensus Initialization by @tholonious in #641
- Add Basic Block And Validator Set Integrity Checks by @tholonious in #642
- Rename FastHotStuffConsensus to FastHotStuffEventLoop by @tholonious in #651
- Rename consensus.go to event_loop.go by @tholonious in #655
- Implement FastHotStuffEventLoop.ProcessSafeBlock(...) by @tholonious in #643
- Implement FastHotStuffEventLoop.AdvanceView(...) by @tholonious in #645
- Mempool Status and Lock updates, and small refactors by @AeonSw4n in #647
- Mempool Status and Lock updates by @AeonSw4n in #659
- Fix status by @AeonSw4n in #662
- Mempool Fix Read Lock by @AeonSw4n in #660
- Fast HotStuff Vote Msg Storage by @tholonious in #648
- Fast HotStuff Timeout Msg Storage by @tholonious in #650
- Fast HotStuff Timeout Exponential Backoff by @tholonious in #654
- Implement ScheduledTask Pattern for FastHotStuffEventLoop Timers by @tholonious in #656
- Migrate Fast-HotStuff Event Loop to Use ScheduledTasks by @tholonious in #657
- Implement Fast-HotStuff Timeout Signal by @tholonious in #658
- Cross-validate View and QC View in Block and Timeout Msgs by @tholonious in #664
- PoS Block Producer by @AeonSw4n in #669
- Minor Cleanup for Encoder Test and Balance Model Height Setters by @tholonious in #690
- introduce-committed-status-to-block-node by @lazynina in #677
- Rename blockConstructionCadence to blockConstructionInterval by @tholonious in #694
- Implement QC Validation and Super-majority Stake Check by @tholonious in #695
- update-process-block-return-values by @lazynina in #687
- add-start-height-and-view-to-epoch-entry by @lazynina in #688
- Create AggregateQuorumCertificate interface type by @tholonious in #697
- Generate random bytes for test block hash by @tholonious in #698
- Pass In All Safe Blocks to Fast-HotStuff Event Loop by @tholonious in #685
- Implement Fast-HotStuff Block Construction Signal by @tholonious in #663
- Implement Fast-HotStuff Timeout Block Construction Signal by @tholonious in #696
- Easy Fast-HotStuff Event Loop Code Cleanup by @tholonious in #699
- Refactor QC event construction into helper functions by @tholonious in #709
- process-pos-block-skeleton by @lazynina in #686
- Rename block construction task to crank timer by @tholonious in #710
- Add block_view_lockups.go file for lockup transactions and types. by @poolcoke in #678
- Coin Lockup Structs, Types, and DB Prefixes by @poolcoke in #679
- Coin Lockup Scaffolding in ConnectTransaction, DB Utils, and UTXO View by @poolcoke in #680
- Coin Lockup Connect/Disconnect Logic by @poolcoke in #681
- Update Coin Lockup Params Connect/Disconnect Logic by @poolcoke in #682
- Coin Lockup Transfer Connect/Disconnect Logic by @poolcoke in #683
- Coin Unlock Connect/Disconnect Logic by @poolcoke in #684
- Encode only QC or AggregateQC in PoS blocks by @tholonious in #715
- Update QC construction to trigger on vote and timeout receipt by @tholonious in #711
- implement interfaces from consensus module for QuorumCertificate, AggregatedBLSSignature, TimeoutAggregateQuorumCertificate, ValidatorEntry, MsgDeSoHeader, and BlockHash by @lazynina in #712
- Bump timeouts to 100 milliseconds for all tests in event loop by @lazynina in #722
- Return HighQC in Timeout Signal by @tholonious in #723
- Validate Block Integrity by @lazynina in #705
- add validateBlockHeight function and tests by @lazynina in #706
- implement add block to block index and get uncommitted tip view by @lazynina in #707
- ln/validate-block-view-pos by @lazynina in #713
- add currentView in function sig by @lazynina in #726
- Use Explicit Flag To Track When Crank Timer Has Elapsed by @tholonious in #724
- Add Byte Comparison Utility for BlockHash type by @tholonious in #725
- Shuffle Consensus Event Loop Utils for Integration Testing by @tholonious in #720
- Adapt Fast-HotStuff Reference Node Implementation For Integration Testing by @tholonious in #721
- Add E2E Integration Test With Multiple Consensus Nodes by @tholonious in #731
- PoS Block Producer by @AeonSw4n in #671
- PoS Mempool by @AeonSw4n in #578
- Revert LN ProcessBlockPoS changes from feature/pos-fast-hotstuff-consensus by @tholonious in #764
- Address DH's feedback on FastHotStuffEventLoop structure by @tholonious in #767
- Fix Flaky FastHotStuffEventLoop Integration Test by @tholonious in #769
- Create Simple BLS Signer Struct by @tholonious in #770
- Eliminate flaky conditions in TestNetworkWithOfflineValidators test by @tholonious in #772
- Add Vote, Timeout, View Utilities To FastHotstuffEventLoop by @tholonious in #773
- Move basic skeleton for PoS message handling and syncing to separate file by @tholonious in #763
- Instantiate FastHotStuffEventLoop Within ConsensusController by @tholonious in #778
- Create Interface for FastHotStuffEventLoop to Allow Mocking via Dependency Injection by @tholonious in #794
- Fix FastHotStuffEventLoop Implementation Struct Missing Public Function by @tholonious in #796
- Make MockFastHotStuffEventLoop Fields Public by @tholonious in #797
- Move Consensus Interface Changes from feature/pos-process-block to feature/pos-fast-hotstuff-consensus by @tholonious in #798
- BLS Keystore by @AeonSw4n in #801
- Handle And Broadcast Local Timeout Signal by @tholonious in #779
- Handle And Broadcast Local Vote Signal by @tholonious in #799
- Merge branch 'main' into feature/proof-of-stake by @tholonious in #807
- DeSo Tokens Lockups by @poolcoke in #782
- Clean up vote and timeout message construction for broadcast by @tholonious in #815
- Add UpdateSafeBlocks Function to FastHotstuffEventLoop by @tholonious in #818
- Add ConsensusController Utility to Fetch Validator Set For Blocks by @tholonious in #819
- Implement E2E Block Processing Between Blockchain and FastHotStuffEventLoop by @tholonious in #816
- Implement ConsensusController Incoming Block Handler For Peer Messages by @tholonious in #820
- Handle Block Construction Signal and Broadcast by @tholonious in #811
- Handle Timeout Block Construction Signal and Broadcast by @tholonious in #825
- Add Unit Test Case for collections.ToMap by @tholonious in #832
- Address DH Minor Feedback on FastHotStuffEventLoop by @tholonious in #833
- Make FastHotStuffEvent Emits Non-blocking by @tholonious in #836
- Better Validations for Incoming Timeout Message by @tholonious in #838
- Validate High QC In AggregateQC Validation by @tholonious in #839
- Fix Supermajority Check in Aggregate QC by @tholonious in #840
- Validate HighQC in Timeout Messages on Receipt by @tholonious in #841
- feature/pos_fast_hotstuff_consensus by @tholonious in #649
- Fix Cross-Validation of Timed Out View And High QC View by @tholonious in #843
- Feature/pos process block by @lazynina in #742
- Remove Stubbed Out Functions For Node Syncing by @tholonious in #844
- grab chainlock in ProcessBlockPoS by @lazynina in #845
- Add Thread-safe Block Index Read by @tholonious in #846
- Pull RandomSeedHash Generation Out of UtxoView by @tholonious in #848
- Sign Random Seed Hash in PoS Block Proposal by @tholonious in #849
- Create UtxoView Helper Function to Simulate Next Epoch Entry by @tholonious in #850
- Clean Up FastHotStuff Block Proposal End to End Flow by @tholonious in #851
- Clean Up ConsensusController Error Cases and Messages by @tholonious in #852
- Implement Pass-through Handlers For Peer Vote and Timeout Msgs by @tholonious in #853
- Comment Out FastHotStuffEventLoop from Server.go by @tholonious in #855
- Add an interface exposing relevant mempool functions for backend consumption by @lazynina in #847
- Clean Up Naming For ConsensusController Message and Event Handlers by @tholonious in #854
- PoS Mempool support for VerifyAndBroadcastTransaction by @lazynina in #856
- Add IsDeleted public getters for ValidatorEntry and LockedStakeEntry by @lazynina in #862
- Feature/end of epoch utxo ops by @lazynina in #831
- Add function to validate that ValidatorEntry's total stake amount nanos is equal to sum of all staker's by @lazynina in #872
- Rename ConsensusController to FastHotStuffConsensus by @tholonious in #863
- Merge main into feature pos by @lazynina in #886
- Feature/pos fee estimation v2 by @lazynina in #878
- Add LockedAtEpochNumber to utxo operations to support rosetta, fix utxo operation encoding/decoding issues by @lazynina in #885
- Create Entry Points For PoS Consensus In Server by @tholonious in #888
- PoS Validator Constants and Network Changes by @AeonSw4n in #876
- Refactor Block Integrity Checks to Support Block Headers by @tholonious in #891
- Support HeaderValidateFailed and HeaderValidated Statuses in BlockNode Helpers by @tholonious in #893
- PoS Validator Connect/Disconnect Flow by @AeonSw4n in #768
- Move TransactionRegister Initialization Params to Init Function by @tholonious in #896
- Implement ProcessHeaderPoS by @tholonious in #892
- Move PosMempool Initialization Params to Init Function by @tholonious in #897
- Dynamically Create PosBlockProducer With Correct Public Key by @tholonious in #898
- Use mempool interface in CreateMaxSpend by @lazynina in #901
- PoS RemoteNode and RemoteNodeId by @AeonSw4n in #857
- Implement GetTransaction() interface method for legacy mempool by @tholonious in #903
- Wire up PoS Mempool Into Server by @tholonious in #889
- Initialize FastHotStuffConsensus when node is a validator by @tholonious in #906
- PoS Remote Node Indexer and Manager by @AeonSw4n in #879
- Refactor tryApplyNewTip Helper Functions by @tholonious in #907
- Create Helper Connection Utils to Diff Two Slices by @tholonious in #908
- Plug in EventManager Block Connect/Disconnect Events into ProcessBlockPoS by @tholonious in #909
- PoS HandshakeController by @AeonSw4n in #860
- Add extra data to txn lockup construction by @lazynina in #905
- Remove error prone pointer equality check from core. by @poolcoke in #913
- Address Minor DH comments on PoS syncing PR by @tholonious in #915
- Fail ProcessBlockPoS When Incoming Block Is Below PoS Cutover Height by @tholonious in #916
- Differentiate AggQC Validator Set from HighQC Validator Set by @tholonious in #917
- Move Validator Set Fetch Helper Function to UtxoView by @tholonious in #918
- Update ProcessBlockPoS Validator Set Verification To Use New Validator Set Fetch Helper by @tholonious in #919
- Update processOrphanBlockPoS To Use New Validator Set Fetch Helper by @tholonious in #920
- Fix Off By One Error To Trigger PoS Consensus by @tholonious in #924
- Add Unknown reward method by @lazynina in #904
- Add Blockchain Locks to FastHotStuffConsensus Struct by @tholonious in #926
- Create Hard-Coded Validator To Sign PoS Cutover Block by @tholonious in #928
- Override QC Validation with ProofOfStakeCutoverValidator by @tholonious in #929
- Remove StakerPKID from StakeLimitKey by @lazynina in #933
- Use PoS Cutover Validator Only On Timeouts by @tholonious in #936
- Add Genesis QC to FastHotStuffEventLoop by @tholonious in #935
- PoS ConnectionController by @AeonSw4n in #861
- Cross-Validate Genesis QC View with The Tip and Safe Block Views by @tholonious in #937
- Remove QC From FastHotStuffEventLoop Timeout Event by @tholonious in #938
- Use PoS Genesis QC During Timeout After Cutover by @tholonious in #939
- Support GenesisQC As HighQC in Incoming Timeout Messages by @tholonious in #940
- Consolidate Code For PoW and PoS Block Height Checks by @tholonious in #941
- Use BIP39 Seed Phrase For PoSValidatorSeed by @tholonious in #946
- Fix BlockNode IsCommitted Check by @tholonious in #947
- Initialize Events Channel on FastHotStuffEventLoopConstructor by @tholonious in #948
- Pass PoS Mempool Init Params From Command Line Flags by @tholonious in #949
- Implement DeSoMempool.GetTransactions() Interface Function by @tholonious in #950
- Support Edge Case Where HighQC After PoS Cutover Uses Real Validator Set by @tholonious in #951
- Fix IsProperlyFormedConstructTimeoutQCEvent Check by @tholonious in #952
- Cleanup Minor Bugs in FastHotStuffConsensus by @tholonious in #953
- Set BlockReward.PublicKey and TxnConnectStatusByIndexHash in PosBlockProducer by @tholonious in #956
- PoS NetworkManager Persistent Connector by @AeonSw4n in #942
- PoS NetworkManager Validator Connector by @AeonSw4n in #943
- PoS NetworkManager NonValidator Connector by @AeonSw4n in #944
- Move BLSKeystore implementation to feature/proof-of-stake by @tholonious in #961
- Mutate bestHeaderChain along with bestChain by @tholonious in #962
- Add Comments to FastHotStuffConsensus For Future Optimizations by @tholonious in #963
- If data dir exists already, just use performance options. If not, use sync type (instead of config.Hypersync) by @lazynina in #934
- Reorder encoder type consts so that existing encoder types come first by @lazynina in #965
- Fix typo in handleBlockProposalEvent function name by @tholonious in #966
- PoS NetworkManager RemoteNode Cleanup by @AeonSw4n in #945
- PoS NetworkManager Address by @AeonSw4n in #957
- PoS NetworkManager Rename and Nits by @AeonSw4n in #959
- Support Server Event Loop When FastHotStuffConsensus Channel Isn't Initialized by @tholonious in #967
- Use Blockchain TimeSource For Block Production by @tholonious in #968
- PoS NetworkManager Fix Integration Tests by @AeonSw4n in #960
- PoS Networking and Syncing Integration Test Log Fix by @AeonSw4n in #973
- Check txn connect status by index in connect block by @lazynina in #970
- Simplify require.True call by @lazynina in #975
- Set LastActiveAtEpochNumber on validator entry in connect block by @lazynina in #971
- Validate BMF by @lazynina in #976
- Convert MsgDeSoHeader TstampNanoSecs to int64 by @tholonious in #972
- PoS Networking and Syncing Documentation by @AeonSw4n in #974
- Exclude Block Proposer Utility Fee from Block Reward by @tholonious in #978
- Reject PoS Blocks in processBlockPoW and processHeaderPoW by @tholonious in #980
- PoS Networking And Syncing Comment Change by @AeonSw4n in #981
- Simple approach to connecting failing transactions properly by @lazynina in #979
- Support Signature OpCodes in consensus Package by @tholonious in #982
- PoS Networking and Syncing HandshakeManager Rename by @AeonSw4n in #986
- Log Block Proposal To stdout by @tholonious in #983
- Define FasHotStuffConsensus Timer Values as Configs by @tholonious in #984
- augmented utxo view for steady state & syncing stack by @lazynina in #987
- Update db handle for pos mempool's db and utxo views in dirtyHackUpdateDbOpts by @lazynina in #989
- Add script to generate bls voting auth for validator registration by @lazynina in #990
- Override MsgDesoHeader.GetView() For PoW Blocks by @tholonious in #992
- PoS NetworkManager Fix Deadlock and Test AddIps by @AeonSw4n in #996
- PoS NetworkManager Comment Nit by @AeonSw4n in #997
- Stop DeSoMiner When Block Height is Past PoS Cutover by @tholonious in #993
- Create ConcurrentList Data Structure by @tholonious in #994
- Add OnBlockMined Listeners to miner.go For Regtest by @tholonious in #995
- Attach Listeners To Register Node As Validator on Testnet by @tholonious in #998
- Implement Listeners to Register Node As Validator on Testnet by @tholonious in #999
- Update Constants and Params for PoS Regtest by @tholonious in #1000
- Enforce txn size check in _connectTransaction by @lazynina in #1001
- Fix Unexpected nil Return Value from errors.Wrapf by @tholonious in #1002
- PoS Aggregate QC Verify HighQCViews by @AeonSw4n in #1003
- Address Piotr Nits by @tholonious in #1004
- Catch and Log Error from FastHotStuffConsensus.HandleBlock by @tholonious in #1005
- Use MsgDeSoHeader.GetView() To Define View for PoW Epochs by @tholonious in #1007
- Update getLineageFromCommittedTip To Use MsgDeSoHeader.GetView() by @tholonious in #1008
- PoS Change ForkHeight Checks to Use DeSoParams and Simplify BlockView TxnConnects condition by @AeonSw4n in #1009
- Clarify Block Height Condition For Starting FastHotStuffConsensus by @tholonious in #1010
- PoS Validate Header Sanity Check by @AeonSw4n in #1011
- Minor Cleanup to PoS Mempool by @tholonious in #1012
- Move BlockUntilReadOnlyViewRegenerated Outside of _addTxn by @tholonious in #1013
- Replace TimeSource With Strictly Increasing Block Timestamps by @tholonious in #1014
- Minor Comment Cleanup by @tholonious in #1015
- PoS SHA3 Random Seed by @AeonSw4n in #1017
- Fix Txn Fee Validation in UtxoView._connectFailingTransaction by @tholonious in #1018
- feature/pos-syncing-and-steady-state by @tholonious in #875
- Vested Linear Lockups by @poolcoke in #1006
- Mempool Tweaks To Fix Backend CI by @tholonious in #1019
- add core_state flag to all relevant (non-snapshot) db prefixes by @lazynina in #1021
- Add StateChangeMetadata to utxo operations for staking rewards by @lazynina in #1022
- Add call to signal state syncer event manager when committing blocks in PoS by @lazynina in #1023
- Add nonce to BlockRewardMetadata in pos block producer, update pos regtest conf by @lazynina in #1024
- _connectCoinLockup transfer restrictions by @poolcoke in #1025
- Fix txindex w/ PoS by @lazynina in #1026
- Add collections.Filter Function by @tholonious in #1028
- Clean up Logging for FastHotStuffEvents by @tholonious in #1029
- Tweak pos_blockchain Helpers to Return BlockNodes by @tholonious in #1030
- Initialize PoS Chain At Startup To Continue Existing Chain by @tholonious in #1031
- Add Safety Check to validateAndIndexHeaderPoS Base Case by @tholonious in #1032
- Move BlockTimestampDriftNanoSecs to GlobalParams by @lazynina in #1027
- Add Mempool Params to GlobalParams by @tholonious in #1033
- Add ProtocolVersion To Regtest Params by @tholonious in #1035
- Remove Block Timestamp Drift Check From processHeaderPoS by @tholonious in #1038
- CalcBlockRewardNanos returns 0 if block height is a PoS block height by @lazynina in #1039
- Add new blockchain param for max tip age for pos by @lazynina in #1041
- Mark PoS Blocks as STORED If Block Timestamp Drift Check Fails by @tholonious in #1044
- Add SnapshotLeaderSchedule to core_state by @lazynina in #1043
- Use time.Time instead of uint64 for MempoolTransaction by @lazynina in #1042
- Broadcast Votes, Timeouts, and Block Proposals To Validators by @tholonious in #1036
- Use RemoteNode To Fetch Missing PoS Blocks by @tholonious in #1045
- Add UnjailValidatorStateChangeMetadata by @lazynina in #1047
- Expose MergeGlobalParamEntryDefaults so state syncer can use it, update func to take in params instead of utxo view by @lazynina in #1048
- Add stubbed txindex metadata structs for lockups by @lazynina in #1049
- Allow pos-validator-seed flag to be a hex string by @lazynina in #1046
- Remove Noisy Warning Message in TransactionRegister by @tholonious in #1050
- Remove ECDSA PublicKey From Vote and Timeout Messages by @tholonious in #1051
- Return UnjailValidatorStateChangeMetadata from GetStateChangeMetadataFromOpType. Reduce jail grace period to 3 epochs on regtest by @lazynina in #1053
- Remove ProposerPublicKey From MsgDeSoHeader by @tholonious in #1052
- Update Active Validator Connections In PoS Consensus by @tholonious in #1054
- Remove Rollbacks To bestHeaderChain When bestChain is Mutated by @tholonious in #1055
- PoW Miner Event Loop Cleanup by @tholonious in #1056
- Set RandomSeedHash in ConnectBlock by @tholonious in #1059
- Add Nil Check for Block Producer's Validator Entry Lookup by @tholonious in #1060
- Log Peer Validator Vote Messages by @tholonious in #1057
- Log Peer Validator Timeout Messages by @tholonious in #1058
- Request Missing HighQC Block For Timeout Message by @tholonious in #1061
- Remove Peer Disconnects in Server._handleBlock by @tholonious in #1062
- Prevent Commited Tip Reorgs in ProcessHeaderPoS by @tholonious in #1063
- Update when state syncer starts the mempool sync routine. by @superzordon in #1064
- Add Estimate fee rate to mempool interface by @lazynina in #1066
- Add BLS Public Key PKID Pair Entry Snapshot to core state by @lazynina in #1068
- Fix txindex for failing txns by @lazynina in #1069
- Introduce failing txn type so state syncer understand failing txns by @lazynina in #1070
- Support uncommitted blocks in state syncer mempool flush by @lazynina in #1065
- Fix Connect failing txn test by @lazynina in #1071
- Add support for seed hex in block producer seed by @lazynina in #1072
- Make GetCommittedTip public by @lazynina in #1073
- Assorted small enhancements for node restart w/ pos by @lazynina in #1079
- Fix txindex dependent transaction within uncommitted blocks by @lazynina in #1082
- Add flag to control number of mempool txns to sync in state syncer routine by @lazynina in #1083
- PoS NetworkManager Consolidation by @AeonSw4n in #1078
- PoS Mempool Simplified AddTransaction Validation by @AeonSw4n in #1090
- PoS MempoolTx Validated status by @AeonSw4n in #1098
- feature/pos-networking-and-syncing by @tholonious in #899
- Remove Redundant StartMempoolSyncRoutine Starts Before Mempool Is Initialized by @tholonious in #1133
- Use Safer Handshake Filter For Connected Validators by @tholonious in #1137
- PoS UtxoView ConnectTransactions by @AeonSw4n in #1099
- PoS Mempool Updated Refresh by @AeonSw4n in #1100
- PoS Mempool Transaction Validation Routine by @AeonSw4n in #1101
- PoS Block Producer updates by @AeonSw4n in #1102
- PoS Mempool Exchange Updates by @AeonSw4n in #1103
- PoS Hypersync Updates by @AeonSw4n in #1085
- Fix syncing headers state while syncing blocks by @lazynina in #1132
- SnapshotCache struct by @lazynina in #1116
- Look up validator set only once in end of epoch by @lazynina in #1127
- Read bytes directly into PKID struct instead of creating reader by @lazynina in #1134
- Add keys only seek for badger by @lazynina in #1135
- Set Prefix when seeking and set prefetch values to false where appropriate by @lazynina in #1136
- Atomic Transactions Support by @poolcoke in #1086
- Allow orphan blocks in block index by @lazynina in #1151
- Delay FastHotStuffConsensus Transition If Sync Peer Is Not Connected by @tholonious in #1154
- Address Nina's Comments For connectFailing Removal in StateChangeSyncer by @tholonious in #1155
- PoS Mempool Updates and Bundled Relay by @AeonSw4n in #1126
- Make MaxBlockSizeBytesPoS part of GlobalParams by @lazynina in #1139
- Add soft max block size bytes by @lazynina in #1152
- MaxTxnSizeBytesPoS in global params by @lazynina in #1153
- Enforce a minimum fee bucket size when updating global params by @lazynina in #1140
- Hook up Block Production interval millis in global params by @lazynina in #1141
- Fix event loop test by @lazynina in #1159
- Remove FailingTxn operation type by @lazynina in #1157
- FastHostStuff -> FastHotStuff by @lazynina in #1158
- Fix minor issues to speed up block processing logic by @diamondhands0 in #1145
- Support bulk block download by @diamondhands0 in #1143
- Increase Regtest PoS Fork Height to 100 by @tholonious in #1161
- Adjust Regtest Default Params by @tholonious in #1162
- cache utxo ops and blocks too to speed up syncing by @lazynina in #1144
- Use block view cache to speed up state syncer mempool flushes by @lazynina in #1146
- Bump badger version & improve header processing logging by @diamondhands0 in #1149
- Speed up blocksync by only writing to db when an entry has changed by @diamondhands0 in #1150
- Consolidate validateTransactions routine and refresh augmented view routine by @lazynina in #1166
- Add recent blocks txn cache by @lazynina in #1167
- Fix wait start group for pos mempool start by @lazynina in #1168
- Move mp write lock to the top of AddTransaction by @lazynina in #1169
- Create Helper Function To Compute the Number of Timeouts Before Epoch Transition by @tholonious in #1171
- Apply Prev Epoch Timeouts To Leader Index Computation by @tholonious in #1172
- Address Nina's Naming And Nit Comments by @tholonious in #1173
- Move deleting of expired nonces to end of epoch hook by @lazynina in #1170
- BLS public key enhancements by @lazynina in #1174
- Allow txn relay in need blocks state for PoS by @lazynina in #1160
- || !running pos in txn relay check by @lazynina in #1175
- Deprecate FailingTransactionBMFMultiplierBasisPoints by @tholonious in #1176
- Update PoW Epoch Durations to 144 Blocks by @tholonious in #1178
- Use GetCurrentGlobalParams where applicable by @lazynina in #1179
- Use specified MinimumFeeRateNanosPerKB when computing PoS fee estimator fees by @lazynina in #1180
- Account for size of header in block producer by @lazynina in #1177
- Pass inner txn hash in atomic txn processing by @diamondhands0 in #1184
- Index NonValidators With PublicKeys On Handshake Complete by @tholonious in #1182
- Improve Logging in NetworkManager and PosConsensus by @tholonious in #1186
- Add GetAugmentedUniversalViewWithAdditionalTransactions for Backend APIs. by @poolcoke in #1164
- Add support for atomic txns in the pos mempool by @lazynina in #1156
- Recompute fees in CreateAtomicTxnWrapper by @lazynina in #1183
- Make sure global params doesn't overflow on MaximumVestedIntersectionsPerLockupTransaction by @lazynina in #1187
- Remove Duplicate Group Key Check For Validators by @tholonious in #1191
- Checkpoint syncing providers system by @lazynina in #1185
- Log Validator Indices and Active Validators by @tholonious in #1192
- Add InitialLeaderIndexOffset to EpochEntry by @tholonious in #1199
- Add Uint64 to Uint64 Pseudo-Random Function by @tholonious in #1201
- Pass Through PreviousView To EndOfEpochHook by @tholonious in #1200
- Compute InitialLeaderIndexOffset On Epoch Transition by @tholonious in #1202
- Deprecate Previous Epoch Timeouts Count from Leader Index Computation by @tholonious in #1203
- Incorporate InitialLeaderIndexOffset in Leader Index Computation by @tholonious in #1205
- Expose network manager for admin panel by @lazynina in #1204
- Upgrade go to 1.22 by @lazynina in #1190
- Upgrade all deps by @lazynina in #1163
- Move NetworkManager GoRoutine Refresh Interval to Command Line Config by @tholonious in #1206
- Remove Validator Index Logging in NetworkManager by @tholonious in #1208
- Add validateTransactionsReadOnlyLatestBlockView by @lazynina in #1196
- NewUtxoView never returns an error by @lazynina in #1197
- CopyUtxoView doesn't return an error by @lazynina in #1198
- Adjust bundle size based on pos vs pow by @lazynina in #1209
- Minor Cleanup For NetworkManager Routines by @tholonious in #1210
- Fix IsInbound and IsOutbound Checks on RemoteNode by @tholonious in #1211
- add LatestView to checkpoint block info, refresh when starting fast hot stuff event loop, and use this value to override tip's view by @lazynina in #1213
- Remove Mempool Refresh On Block Connect and Disconnect by @tholonious in #1214
- Add IsPoSCommitBlockEvent to block event by @lazynina in #1215
- Check txn register for duplicate txn earlier in add transaction by @lazynina in #1216
- Remove Gossipped Txn Error Logging by @tholonious in #1217
- Use alpine:latest instead of edge by @lazynina in #1219
- Create Helper ConnectTransactionIntoNewUtxoView Function For Fail Safe Txn Connects by @tholonious in #1221
- Simplify Mempool Transaction Validation Routine by @tholonious in #1222
- Use TxSizeBytes in estimateFeeRateNanosPerKBGivenTransactionRegister by @lazynina in #1225
- Fix PoW mempool and fees for Atomics by @poolcoke in #1220
- No error from estimateFeeRateGivenTxnRegister by @lazynina in #1226
- Add BigIntFromUint64 helper by @lazynina in #1227
- Use Sign instead of comparing big ints to 0 by @lazynina in #1228
- Add TransactionRegister Functions to Rebucket With New Global Params by @tholonious in #1230
- Rebucket Mempool Transactions When Global Params Change by @tholonious in #1231
- Update Fee Estimator When Global Params Change by @tholonious in #1232
- Fix Mempool UpdateGlobalParams Bugs by @tholonious in #1233
- Fix inner utxo ops error in ComputeTransactionMetadata by @lazynina in #1234
- Add affected public keys for coin lockups by @lazynina in #1235
- Add map of staker PKID to public key for state consumer consumption by @lazynina in #1237
- Fix tests that rely on waiting for txn validation by @lazynina in #1239
- Mempool Code Cleanup by @tholonious in #1241
- Fix Mempool TransactionRegister Deadlock by @tholonious in #1242
- Minor Bug Fixes in Mempool and Fee Estimator by @tholonious in #1243
- Refactor CopyUtxoView to prevent DB lookups by @lazynina in #1229
- Relax check transaction signature checking by @diamondhands0 in #1244
- Move txn signature check to ValidateDeSoTxnSanityBalanceModel by @lazynina in #1245
- Create SafeUtxoView Construct For Side Effect Free Connects by @tholonious in #1246
- Use SafeUtxoView in The PoS Mempool Txn Validation by @tholonious in #1247
- Use SafeUtxoView in the Pos Block Producer Block Construction by @tholonious in #1248
- Fix signature serialization in MsgDeSoTxn (broken by go1.22 upgrade) by @diamondhands0 in #1250
- Transfer changes from z/update-state-change-entry-encoder to pos by @lazynina in #1194
- Check Z sign before calling BigFloatPow in CalculateDeSoToReturn by @lazynina in #1223
- Mempool Minor Naming and Testing Cleanup by @tholonious in #1253
- Fix PoS mempool dynamic fee market by @diamondhands0 in #1252
- Allow specifying min fee rate in atomic txn construction by @lazynina in #1257
- Add Default Prefix to New Fee Estimation Constant Names by @tholonious in #1256
- Create Global Params For Fee Estimator Congestion and Priority Params by @tholonious in #1258
- Use Global Params For Fee Estimator Congestion and Priority Params by @tholonious in #1259
- Read SoftMaxBlockSizeBytesPoS From Internal Fee Estimator GlobalParams by @tholonious in #1260
- Set min fee rate on create atomic txns wrapper and fix comment by @lazynina in #1261
- Fix nil arg to hash to big int, stop old block producer after cutover by @lazynina in #1262
New Contributors
Full Changelog: v3.4.6...v4.0.0-beta.0