Skip to content

v4.6.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@tohsnoom tohsnoom released this 02 Mar 03:36
· 34 commits to master since this release
v4.6.0
749c622

NOTE: v4.6.0 is being replaced with v4.6.1 which is being prepared now. Please download that version as soon as it is available instead of v4.6.0.

VITAE version 4.6.0 is now available from:

https://github.com/vitaeteam/vitae/releases

This is a new MANDATORY release for all wallets, masternodes and fundamentalnodes, with improvements to the staking consensus protocols.

Please report bugs using the issue tracker at github:

https://github.com/vitaeteam/vitae/issues

Mandatory Update for All Users

VITAE Core v4.6.0 is a mandatory release only for all VITAE users. There are significant changes to the core staking consensus protocols. Please upgrade your wallets and nodes as soon as possible. Any nodes that do not upgrade will be excluded from the mainnet network after the changes are activated in the coming weeks, which may require a blockchain resync to regain access to the VITAE network.

How to Upgrade

If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer (on Windows and MacOS) or just copy over vitaed/vitae-qt (on Linux).

For MacOS users running Catalina or Big Sur, please install vitae-4.6.0-macos-big-sur-unsigned.dmg. For Big Sur machines with the new M1 chip, please run the application using Rosetta.
For MacOS users running High Sierra, please install vitae-4.6.0-osx-high-sierra-unsigned.dmg.
For MacOS users running older unsupported versions, you can try installing vitae-4.6.0-osx-unsigned.dmg.

Compatibility

VITAE Core is extensively tested on multiple operating systems using
the Linux kernel, MacOS 10.13+, and Windows 8.1 and later.

Microsoft ended support for Windows 7 as of [January 14th, 2020].
Apple ended suppot for MacOS 10.12 as of [October, 2019].
No attempt is made to prevent installing or running the software on Windows 7 or earlier versions, or MacOS 10.12 or earlier versions. You can still do so at your own risk but be aware that there may be instabilities and issues.
Please do not report issues about unsupported versions of Windows or MacOS to the issue tracker.

VITAE should also work on most other Unix-like systems but is not frequently tested on them.

Notable Changes

Stake Modifier V2

These changes implement a new 256-bit modifier for the proof of stake protocol. It is computed at every block, by taking the hash of the modifier of previous block along with the coinstake input. To meet these new consensus rules, the PoS kernel must include the modifier of the previous block.

Time Protocol V2

These changes implement several improved rules for the proof of stake protocol. The granularity has been changed to 15 second intervals, so the only allowable block times will be times ending with the seconds :00, :15, :30, and :45. The allowed block times cannot be earlier than the previous block time, and must be submitted during the timeslot it is in--blocks for future 15 second timeslots cannot be submitted except during that timeslot. The target timespan for maintaining the average 45 second block time has been increased to 40 minutes.

Free Transactions Not Accepted Into Mempool

In the past, there was an allowance for a certain portion of transactions in a block to be sent without paying any transaction fee. This capability is being removed. This change is a partial step in that direction, by changing the mempool code to reject any transactions that are relayed which do not include at least the minimum normal transaction fee rate per kb.

4.5.1 Change log

Detailed commit log messages follow. This overview includes changes that affect
behavior, not code moves, refactors and string updates. The original GitHub commit is
referenced to help locate each code change.

PoS / Consensus / Core

264d8d08e [PoS] Stake(): Add check for staked blocks in the future
3293a153c [PoS] Compute old modifier, invalid integer division removal plus extra logging for the stake modifier height added.
2be499c22 [PoS] Fixed GetNextWorkRequired for transition from PoW to PoS
3d825d96e [PoS] CheckStakeKernelHash, was checking the previous block instead of the block under review.
6f4d04bfc [PoS] New logic for stake input maturity
e9ebd7911 [PoS] Remove extra nTime check in Stake()
917d1fa06 [PoS] GetKernelStakeModifier, look for the next block in the mapBlockIndex and not in the chainActive and look for it based on the next block hash and not based on height.
19932d981 [PoS] Compute old modifier, invalid integer division removal plus extra logging for the stake modifier height added.
f99b98f45 [PoS] Allign ComputeStakeModifier (v2) to nHeight logic
27d8812ec [PoS] read/write block index modifier based on height and not block version.
98eef7231 [PoS] Cleaning GetStakeModifierSelectionInterval() constant method + other redundancies.
75d57baa6 [PoS] Stake Modifier V2
3b397027c [PoS] fix regtest nBlockStakeModifierlV2 and cbase maturity
1f020e6ec [PoS] Disabled nBlockStakeModifierlV2
25733db10 [PoS] Don't use chainActive.Tip() as prevIndex when creating new blocks
5476254fa [PoS] Don't allow consecutive blocks within the same time slot
77241077b [PoS] StakeV1: iterate the time backwards.
86b1df746 [PoS] reduce difficulty by a factor 16 on nBlockTimeProtocolV2
e2afd47e0 [PoS] Fix Stake maturity-check and mapHashedBlocks time
90cec0a83 [PoS] Keep v1 miner until hard-fork
3f610c411 [PoS] set nTargetTimespan_V2 to 15 minutes
a50264477 [PoS] Set target spacing to 45 seconds
cbf9fffb9 [PoS] Adjust FutureBlockTimeDrift to 15 secs granularity
88d384abb [PoS][RPC] getblock command, adding more information about the coin stake tx.
6d5fd0dab [PoS][RPC][Refactor] GetHashProofOfStake and initStakeInput methods created, better method responsibility division from 5bda1271a [PoS][Wallet] CreateCoinStake, if the block is from the future then start on a future time.
557856aad [Core] Updated chainparams.cpp parameters for Time Protocol V2 & Stake Modifier V2
97e8f2c32 [Core] Introduce Blocks version 6
ce78695b2 [Core] Do not check block if it's not the one needed
c2900895d [Core] raise nTargetTimespan_V2 to 40 minutes
f62babdb8 [Core] Restore CheckBlock checks before previous block check
3fe50f163 [Core] Make bnProofOfStakeLimit_V2 16 times v1 limit
b375af9bd [Core] Guard the transition to v2 time protocol in MinPastBlockTime rule
93162b487 [Core] Set time granularity to 15 (instead of 16)
9853dc780 [Core/PoS] Enforce timestamp mask in miner
ea40601ba [Core] Define new Past Time Limit and enforce masked time
b01891665 [Core] Define new Future Time Drift
8d12cada1 [Core] Add timestamp mask to chainparams
e2baff832 [Consensus] Set block version for stake modifier v2.
43993f93e [Consensus] Don't load old stake modifier from disk after changeover height
15c3d1f1b [Consensus] Fix old block version check (including v.6)
the CheckStakeKernelHash to be able to get the information for the getblock rpc command and possible future tests.
28ce12cea [Consensus] New modifier enforcement height changed for mainnet
bdc1565ef [Consensus] Don't load old stake modifier from disk after changeover height
78b010c1a [Consensus] New modifier enforcement height set.
929f1bfe5 [Consensus] V2 modifier protocol change, two new fields in chainparams nStakeMinAgeV2Modifier and nMaturityV2Modifier.
d57e97405 [Consensus] Placeholder block height for modifier V2 enforcement
356348f99 [Consensus] Fixed parameters. Added spork for time protocol v2
3a0e56317 [Consensus] reduce possible nTimeOffset to 15 seconds
a7b63695c [Consensus] Fix difficulty adjustment on first block of timeproto V2
888f9f88d [Consensus] Add placeholder block height for Time Protocol V2 # Conflicts: # src/chainparams.cpp # src/chainparams.h
6f9a9c2d0 [Consensus] Change difficulty computation for V2 time protocol
d15425128 [Refactor][PoS] Do not calculate the prevBlock medianTimePast on every cycle of the CreateCoinStake loop.
1e0377ce8 [Refactor] Add future block time drift to chainparams
4eb1f4fd7 [Trivial] Use better JSON key names in block coinstake output
590ec9aab [Trivial] Add logs to CheckKernelHash
3b28e627d [Trivial] logging, removing none required jump lines.
4039e00bc [Trivial] Move time protocol functions from kernel to timedata
6ed26600d [Trivial] Fix timedata.cpp includes

Mempool

2fa7136ac [Mempool] Mempool by default will not block relay and reject free transactions

Wallet / GUI

e58bcd309 [Wallet] HasMintableCoins, don't call GetAdjustedTime on every cycle of the loop.
1ed5cc9db [GUI] sendCoinsdialog, removing zero tx fee checkbox and label.
a20007fa7 [Wallet] Staking, unreacheable code removed..
c98c21246 [Wallet] SelectStakeCoins using block time and fix GetBlocksToMaturity

RPC

5a8bf76fd [RPC] getblock, validate that PoS blocks to return the coin stake data.

Masternodes / Fundamentalnodes

e131a0c7e [Masternode] Fix logic in GetMasternodePayment

Miscellaneous

2e18dc001 [Performance] Kernel, methods using object reference instead of copy the object.
6a6f977f3 [Bugfix] Fixed segfault error
e69e02c99 [Build] Replaced boost::placeholders with boost::arg
ed16567fe [Cleanup][Refactor][Performance] Main.cpp code cleanup: * Not used GetInputAgeIX method removed. * AcceptToMemoryPool HasZerocoinSpendInputs code duplication. * Several for loops copying the variable cleaned.
fb8a2079f [Refactor] Updated references to zvit/vitae
c9d067d3f [Refactor] Fixed coin names
df0105a25 [Refactor] Remove the dependency on spork for time protocol v2
1c065784d [Tests] fix blocks/maturity fakestake_accepted
79a5bc52c [Tests] (squashed) few regtest fixes
5728aec51 [Tests] Add p2p_time_offset functional test to test_runner
ca55bb5b4 [Tests] Define p2p_time_offset functional test
4977f410a [Core][Tests] REGTEST: fix nStakeModifier
35ff40f65 [Core][Tests] REGTEST: fix nStakeModifier=0
cc15822d3 [Debug] Don't shadow global fDebug
84da44e1b [P2P] Do not store more than 200 timedata samples.
4eb910242 [Trivial] Compiler warning, uint_32 compared against int.

Credits

Thanks to everyone who contributed to this release, including:

  • Michael Trisko
  • Wang King
  • random-zebra
  • furszy