Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CGovernanceManager initialization fix #1138

Merged
merged 4 commits into from
Nov 12, 2016

Conversation

tgflynn
Copy link

@tgflynn tgflynn commented Nov 11, 2016

This fixes a problem with the initialiation of CGovernanceManager that caused non-reproducible failure of governance object syncing.

The code was relying on UpdatedBlockTip to be called by new blocks but sometimes a node is restarted before any new blocks have been generated and hence this function was not called in time.

This adds a call to UpdatedBlockTip to init.cpp that should ensure that pCurrentBlockIndex is initialized.

@@ -172,7 +175,10 @@ void CGovernanceManager::ProcessMessage(CNode* pfrom, std::string& strCommand, C
else if (strCommand == NetMsgType::MNGOVERNANCEOBJECTVOTE)
{
// Ignore such messages until masternode list is synced
if(!masternodeSync.IsMasternodeListSynced()) return;
if(!masternodeSync.IsMasternodeListSynced()) {
LogPrintf("CGovernanceManager::ProcessMessage MNGOVERNANCEOBJECTVOTE -- masternode list not synced\n");
Copy link

@UdjinM6 UdjinM6 Nov 11, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this can spam a lot, I'd move this to gobject debug category

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it should because we don't start syncing governance until the masternode list is synced. So I think this is more of an abnormal condition.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can easily be the case if at least one of our peers is in governance syncing mode (which means this node relays all received votes to us too). This multiplies with number of such peers but can quickly kill i/o even with one peer (given the fact that there will be 1000s of votes).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I didn't think of that. Will change.

Copy link

@UdjinM6 UdjinM6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK 1fb6b27

@UdjinM6 UdjinM6 merged commit 82ca5fd into dashpay:v0.12.1.x Nov 12, 2016
celbalrai added a commit to bytzcurrency/BYTZ that referenced this pull request Jul 15, 2021
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
bytzck pushed a commit to bytzck/BYTZ that referenced this pull request Jul 20, 2021
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 2, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 2, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 2, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 2, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 3, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 3, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 3, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 4, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 6, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 7, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 7, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 8, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 8, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 8, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 10, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 10, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 10, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 10, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 10, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 10, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
ckti added a commit to ckti-dash-current/dash that referenced this pull request Apr 10, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 10, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 13, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 14, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 14, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 14, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 14, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 14, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 14, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 15, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 15, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 15, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 15, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 16, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 16, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 17, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request May 23, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Jun 14, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Jun 14, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Jun 15, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Jun 15, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Jun 17, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Jun 17, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Jun 17, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-from-watto/wagerr-older that referenced this pull request Oct 21, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Oct 21, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Oct 21, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Nov 3, 2022
Initial core Wagerr parameters and algorithms

- Load genesis block
- Set consensus parameters
- Block reward values
- PoW difficulty algorithm

Load POS blocks

- Add POS flags to CBlockIndex
- Set coinbase maturity to 10 for blocks with height < 10
- Skip time checks before Midas activation
- Add validation and signature functions
- Adapt block format

POS changes that introduce the need for additional checks

- Skip nValue check for transactions on regular coinstakes
 - Make sure coinstakes are properly checked

Update POS

Update Zerocoin

Adapt patches to Dash 0.17 code base

Update PoS rules to Wagerr

Disable accumulator check

Enable communication with legacy nodes

Legacy nodes only send blocks, not headers:
- Directly respond to block inv's with getdata requests
- Respond to out-of-order blocks with requests for connecting blocks

Also:
- Disable checking for deterministic (on-chain) MNs before they are enabled.

Adapt sync process to Wagerr specific parameters

create a shared library to make creating wallets easier. (dashpay#1130)

* create a shared library whose API presents the complicated or time consuming functions needed for creating and sending transactions

Tests for shared library

Refactor Script interpreter as a "virtual machine" encapsulated by a class.

Refactor script interpreter into a virtual machine, add access via cashlib and python, and more precise script error reporting.

Add FindScriptPubKey() to search the UTXO set

Blockchain/RPC: Add scantxoutset method to scan UTXO set

scantxoutset: add support for scripts

scantxoutset: support legacy P2PK script type

scantxoutset: mention that scanning by address will miss P2PK txouts

Add scantxoutset test

scantxoutset: remove witness related code

Tokens - Andrew Stone's implementation

Set ATP parameters

Adapt tokengroup implementation to Wagerr style transaction references

Destination encoders/decoders for tokens

Based on:
BitcoinUnlimited/BitcoinUnlimited#873

Adapt address encoder/decoder to Wagerr

Token implementation - ATP specific part

Update chain parameters: add nCoinbaseMaturity

Various fixes and updates

Update zerocoin - adapt to Wagerr

Generate POS blocks

- Generate POS blocks using RPC call 'generate'
- Allow generation of mixed POS/POW blocks
- Deterministic mn list skips the coinbase AND coinstake
- Set Staking parameters 'staking', 'wagerrstake', 'reservebalance'
- Schedule staking thread that attempts a stake every 1 second
  - Currently this thread is empty
- Opening a wallet for mixing now also opens the wallet for staking
- Add stakable coins as an option for selecting AvailableCoins

TODO:
- Time regular stake block generation ('staking=1' functionality)
- Take coinstake split parameter from config options (currently fixed and set to 2000 WAGERR)
- Split difficulty algo for POS and POW in hybrid POS/POW

Separate wallet from non-wallet in token functionality

    This restores the configure option --disable-wallet

    - Split rpctokens and rpctokenwallet
    - Split token script functionality
    - Move XDM fee management functions to wallet section
    - Reduce unnecessary include files

Re-add getextendedbalance RPC call

Based on commit 209f82f

- Add functions to calculate locked and unlocked balances
- Add RPC call getextendedbalance

Add scantokens RPC command

Scantokens works similarly to scantxoutset.
It returns the set of UTXO's that hold the specified tokens.

Update staking

- Disable staking on regtest
- Temporarily disable budget payments
- Subtract MN payment from staking outputs
- Add stake amount to output of CreateTxOuts()
- Initialize variables in stakemanager
- Add MintableCoins()
- Fill staking thread
- Log staking related output with 'staking' debug tag

- Correct AvailableCoins parameters

Parameter interaction for -disablewallet and -staking

Make stake split threshold variable

Through RPC call setstakesplitthreshold

Add getstakingstatus RPC command

Update token transaction creation input handling

- Eliminate amountAvailable from ConstructTx
- Rename totalBchNeeded to totalWagerrNeeded

Set PoW reward in hybrid phase

Separate block rewards for POW and POS blocks

Separate token structure classes from token consensus functionality

Improve token transaction fee calculation

Update fee policy in line with current fee policy

Update masternode collateral amount

Fix rebase issues: use shared_ptr for wallets

Correct coinstake generation and relay after DIP0003 activation

- Move POS parameter initialization to accommodate for compact blocks
- Add block signature to compact blocks
- Add coinstake to prefilled transactions in compact blocks
- Add coinstake to block payee validation checks
- Fix error handling after failed block signature validation
- Fix error handling after failed stake generation attempt
- No staking when the wallet is locked

Tweak staking thread timing

Rename XELEC to WELEC

Remove UniValue from tokengroup configuration status

Allowing tokens to be moved to the consensus code

Add zerocoin value to a coin's returned input value amount

Improve staking overhead and finish getstakingstatus

- Move Stake() to stakeManager
- No staking before masternode sync finished
- Port and adapt PivX' coinstake search time based staking status reporting
- Introduce sleep periods in the staking loop when staking is not available or effective
- RPC call getstakingstatus returns true when all staking conditions are met

Add coinstake flag to Coin and Coins

Add stake mint and masternode reward tx types to Qt transaction overview

Update/add maturity checks for coinstake and group configuration transactions

Finish adding setstakesplitthreshold

Port AutoCombineRewards

Finalize (pooled) mining support

- Include token rewards for miners in getblocktemplate
- Generate blocks with version 11 until start of the hybrid phase
- Enable X11 hashing for POW blocks during hybrid phase
- [FIX] Set minimum difficulty for first hybrid POW block
- Partial hybrid mining support
- Add CReward and CBlockReward classes to manage complex fee and reward structures
- Add block type version bit field that denotes POS or POW during Hybrid phase
- Streamline block generation
- [FIX] Only update block time for non-POS blocks when mining
- [FIX] Remove staking check from SelectCoins()
- [FIX] Check coinstake input values when validating new blocks

Replace softfork deployments with block height based fork settings

Do not skip token group fee validation when skipping script checks

Add createrawtokentransaction RPC call

Add listunspenttokens RPC call

Update token help output

- Update gettokenbalance to show that an address parameter is accepted
- Update sendtoken to show that multiple recipients and amounts can be specified

Add spork for bumping MIN_PEER_VERSION

Update default max size for relay of standard transactions

Block height based POS/POW markers

Ensure correct use of Params()

Skip checking for duplicate inputs when adding zerocoin txs to the wallet

As all zerocoin transactions have inputs with tx hash 0x0, all zerocoin transactions
were marked as 'conflicted' due to having the same inputs as other transactions.

Avoid stalling and slow legacy nodes during IBD

Remove unused softfork output

Update listtokentransactions

- Enable listtokentransactions to return output on all tokens instead of on specific tokens only
- Distinguish between token amounts and token authorities

listtokentransactions needed a token group ID string as input. This
commit makes that optional.
Now, when passing "*" or when omitting the token group ID string,
transactions from all token groups are returned.

Harmonize use of token labels in RPC calls

In line with https://github.com/ioncoincore/ion/pull/187 increase consistency:
- Refer to Wagerr with amount and to tokens with tokenAmount
- use tokenType to specify if an output is a value or an authority
- Use tokenAuthorities, not token_authorities
- use groupID instead of groupIdentifier

In line with Dash:
- use value and tokenValue for values with decimals
- use valueSat and tokenValueSat for their sat values (instead of using amount and tokenAmount for sat values)

More consistency:
- Add authorities to scantokens
- Use token { ticker, value, ..} instead of token { tokenTicker, tokenValue, ..}
- Use tokenAuthorities in favor of groupAuthorities

Check if pprev exists when calculating block versions

Fix incorrect unique pointer handling in stake initialization

Update genesis time in functional tests

Correct coinstake maturity handling

Add IsGenerated() and apply maturity checks from IsCoinBase() to IsCoinStake()/IsGenerated()

Enable verification of token database

When verification fails, the user either needs to start
with -reindex-tokens manually, or let the wallet reindex itself.
Around the upgrade to 5.0, a full reindex is a sane default.

- Rename -reindextokens to -reindex-tokens
- Move ReindexTokenDB after setting chainActive
- Add VerifyTokenDB
- Add block hash of token creation to db
- Do not buffer tokens when reindexing

Use correct hash field for token configuration

Limiting token database verification when blocks have been pruned

The token database is verified by finding the creation transaction
in the stored block, and then recreating the token creation transaction.
In pruned mode, the block might not be available anymore, so we
limit verification to testing if the block is in the block index if its
data hase been pruned.

Enable scantokens to scan for subgroups

Update stake handling when creating MN list

Exclude MN collateral from staking inputs

Disallow authorities in coinbase and coinstake transactions

Remove commented out code

Update autocombinerewards

- Randomize autocombine interval
- Combine coins from only 1 address per iteration
- Only combine when at least 10 inputs can be used

Improve timing of autocombinerewards manager

Proper XDM tx accounting

Limit memory usage of mapZerocoinSupply

The current code retains functionality to validate past zerocoin transactions.
The ported code uses too much memory to store trivial zerocoin related data.

Supply items in the map are now only stored:
- When zerocoin spends were possible
- When the supply denomination <> 0

Correctly set parameter parsing for listtokentransactions and listtokenssinceblock

Add minimum confirmations option to token balance functions

Take zerocoin (deprecated) and unspendable coins into account in coin supply

Update getstakingstatus reporting

Bypass scheduler process queue

Update Wagerr params - minimum chain work

Update Wagerr params - set version numbers

Update chain parameters

Update chain parameters (for regtest)

Configure regtest minging and staking

Update PoS and sync validation, including parameters and reward structure

Remove hardened spork 6

Update sync settings

Avoid pre-fork stalling during sync

Disable accumulator loading

Staking: set fixed accumulator checkpoint on new blocks

CoinJoin: disable

Wallet staking maturity - update coin availability

Introduce block time protocol V2 (15 second windows)

- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices

Proper coinstake handling in wallet

- Make coinstake inputs available after disconnect
- Correctly display immature coinstake balance

Update test framework

- Set correct spork key, genesis time, data folders and MN collateral
- Update MN registration: replace dip0003 softwork with spork

Time protocol v2: skip minimum block time on regtest

Update chain parameters (V16 heights)

Update chain params

Update chain parameters for regtest

Update chain parameters for testnet

Update Wagerr reward structure

- Update post-fork block reward schedule
- Store reward flags in CbTx to help verify and identify rewards across outputs
- Fix PoW reward distribution after DIP0003 activation
- Add Operator rewards to CBlockReward

Disable check for correct peer time on regtest

Update mininode for functional tests - set Wagerr params

Manage token group description storage on disconnecting blocks

Remove XDM

Remove from:
- Token creation
- Fee validation
- Supply tracking

Update preconfigured management tokens

Add flag to make a group's melt capability sticky

Tokens from a group with the sticky_melt flag set do not need a token melt authority for melting.

- Only management tokens can currently have the sticky_melt bit set
- Tokeninfo now reports flags
- Removed optionality on management token configuration parameters
- Melt transactions that melt its full balance for a specified group include a 1 sat OP_RETURN output because a tx needs to have at least one output

Move staking manager and reward manager initialization to wallet init section

Add CTokenGroupID constructor that takes a group and a subgroup string as params

Require a single MN credit token as proregtx fee

tokenGroupManager - Update pointer getters and loop

Use more generalized functions for ProRegTx

Move token group creation description from OP_RETURN to its own SpecialTx

Add 'functional' include for std::function

Prepare for separating CTokenGroupDescription in separate token types

Use separate SpecialTX for management tokens

- Create base description from which specific token group types are derived
- Include BLS public key in management tokens
- Exclude BLS public key from group hash
- Exclude nDecimalPos from base group description to prepare for NFTs

Update token configuration help text

- Move decimal position parameter
- Add BLS key for management tokens

Remove unneeded nHeight from ManagementTokensCreated()

Tokenized ProUpRevTx

Add in missing includes to get gitian-build to complete

Add include for boost::interruption_point

Rename to Wagerr

Wagerrlib disabled by default

Update regtest staking parameters

Enable getblocktemplate during POS in regtest only

Update gitian build to most recent version

* Update gitian build to most recent version

* Remove installation of cmake

Rebrand - additional renaming

Update to build qt under gcc 10 and above, get cmake from github

LLMQ updates

Replace softfork settings for dip20 activation with v17 activation hard fork param

- Set testnet fork block

Add files via upload (dashpay#17)

icon update

updated images (dashpay#18)

splash and toolbar logos

Update dark.css (dashpay#20)

27507a to c2064a

0e85dc to ff005b

primary and secondary color changes (dashpay#21)

swith to wagerr primary and secondary ff005b and c2064a

update traditional colors (dashpay#22)

primary and secondary update

Token description: allow numbers and spaces

- At least 2 characters
- No space at beginning or end

Add token document hashing, signing and verification

Change default font to Montserrat

Update token document RPC commands

- Add help texts
- Change boolean parameter parsing

Update token document class

Update configuremanagementtoken help text

Update splash screen rendering

Update ports

Button icon color updates

update main dark BG

updated background for dark theme

Update functional tests (dashpay#29)

update of functional test scripts

* Update functional tests

* More updated scripts

Update rewards manager

- Fix database functions for stake split threshold and auto combine dust functions
- Rename autocombinerewards to autocombinedust
- Remove change output from autocombinedust
- Cleanup scheduling and initialization

test/util checks for make check now working (dashpay#31)

Refactor token description types

Instead of using inheritance and pointer type casting, use boost::variant
and templates to handle different token types.

Tokenized ProUpRevTx

Never select inputs for staking that won't be accepted as outputs

Refactor parsing parameters for token configuration

Minor cleanup: Update token config dry run output

Add NFT functionality

- Make filters more flexible to allow for fine grained filter control
- Add NFT to checks
- Include NFT as token variant
- Initial NFT configuration parsing

Update params - set wait-for-islocked-timout to 4 minutes

Set chain parameters for CSV and BIP147

Update dkg test framework param

Update tests and enabled tests

Update NFT system

- Only 1 mint output
- Mint output must match the mint_amount specified with configurenft
- Renamed token document functions to:
  - encodetokenmetadata
  - decodetokenmetadata
  - signtokenmetadata
  - validatetokenmetadata
- Switched from camelCase to snake_case
- Updated token help texts
- Allow dash inside token names (not at start or end)
- Add binary blob to NFT
- Simplify token metadata parsing and validating

Update tests to run with new token parameters (dashpay#32)

Bump NFT token data size to 96k

Refactor tokeninfo and add displaying NFT data file

feat: add tor entrypoint script for use in dashmate (dashpay#4182)

* feat: add entrypoint for tor features in dashmate

* fix: use spaces consistently for indendation

* fix: output blank line after info

* fix: ensure script is executable

* fix: keep linter happy

Update make check tests

Prevent selection of immature token authorities

And update log message when using immature token authorities

Update unit tests - account for new script error codes

Introducing:
- SCRIPT_ERR_NUMBER_BAD_ENCODING
- NUMBER_OVERFLOW

Update unit tests - account for introduction of fCoinBase flag to Coin class

Change client version to Wagerr 5.0.0.0

Update mainnet data - set chain size and year of first block

Revert base58_tests, add in script_tests.cpp (dashpay#35)

Update tests with OP_GROUP, NUMBER_OVERFLOW and NUMBER_BAD_ENCODING

Update maturity check for token authorities

Make tests with tokens functional again

Change from V16 to V17 add include to rewards.cpp

Update copyright messages

Update chain parameters and fork height

Reject zerocoin transactions before tx checks

Initial setup for CircleCI (dashpay#36)

Remove coinjoin related RPC commands

Update man pages

Update mainnet keys

Update pixmaps

Fix for qt tests (dashpay#37)

Create initial snapcraft configurations (dashpay#38)

* Create initial snapcraft configurations

* Change version to 5.0.0

Add in blue logo (dashpay#39)

Update style sheets and logos

- Update light.css
- Update dark.css
- toolbar icon logo updates (dashpay#40)
- logo update
- updated splash with BG (dashpay#41)
- update light toobar to match (dashpay#42)
- Edit request bar (dashpay#43)

Update style

- Only Dark theme
- Selected and hovered inputs get a border
- Update splash rendering

Update fork parameters

Update man pages

Updating name

Change data folder from .wagerr to .wagerrcoin

Set release flag

Update links

Update README.md

Ignore sporks from previous versions

Update clock offset warning

New snapcraft

New circleci configuration

Update test_runner to run tokens in main check and deterministic masternodes in extended check

Set snapcraft to build from master

Update unlock for staking interface

- Add menu item 'Settings/Unlock Wallet for Staking'
- getstakingstatus now respects 'unlocked for staking' status
- Help text on walletpassphrase refers to staking, not mixing
- A timeout of 0 seconds disables the timeout (instead of timing out immediately)

Fixup

Add in working mac config, add make check to bionic

Bump minimum version before enforcement

Update snapcraft config to build v5.0.0

Add in wagerr specific values

- spork.h add in spork 20
- hash.h add in quark hash
- version.h rewind to version 70929

New(er) graphics

Update depends, GUIX for builds, drop i686 support

- Depends updates needed to build using guix matching up with current bitcoin version 0.22.0 with the exception of boost which needs to remain at version 1.70
- Use GUIX to build deterministically as gitian-builder is now deprecated
- Update build documentation for deterministic builds
- Drop support for i686 Windows
- Change Makefile.am for Mac building as native_cdrkit is no longer used
- Use new XCode Mac SDK -> 12.1-12A7403
- Update macdeploy README for instructions on downloading new SDK
- Change QT building to work with new version of QT 12.11.0

Circleci Updated to use cimg rather than circleci images

Change wagerr addresses for spork and token management

Add qminimal checks back in configure

Update make check tests

-Governance proposals json add correct mainnet address update key tests
-Update rpc_tests
-Update make check python tests
-Switch to quark for hashing
-Remove checkblock

Set all collateral to 25000

Update test framework

CSS Styles

-Update CSS Styles
-Update images

Update tests to work with wagerr

Unpatched bdb

Changes to get devnet working

Update Icons for snap builds, add bison for builds, update bdb patch

Update circleci

-run test_wagerr, test_wagerr-qt, and wagerr_bench at the end of x86_64 bionic
-rpcnestedtests.cpp change node results to fit quark chain

Guix and Gitian build both working

-Add cmake to darwin packages
-Add in relative path to darwin.mk
-Remove no-sdk config option
-Reset tool eval
-Reset tonew eval
-Add ifeq to clang
-Remove path from native build
-Remove separate tool definitions
-Force ar and ranlib in gitian osx yml file
-Remove ranlib and ar from configure.ac
-Remove full path from cctools
-Remove ranlib and ar from bls-dash and cctools
-Add static ranlib and ar to bls-dash
-Add path to depends build include existing path
-Add path to depends build without export
-Reinstall AR and RANLIB
-Changeup of clang and clang++ for native builds
-Change native tools to remove prefix

Update depends qt to version 5.9.8

-Add don't hardcode pwd patch
-Remove hardcoded wagerr g++ from build.sh

Update gui to show icons as well as text

-Change send window
-Change default to text under icon
-Add overview icon
-Add : in front of icon path
-Get overview from images
-Scale overview icon
-Reduce font size
-Remove underscores
-Remove coinjoin from options menu

Update chain parameters and settings for Wagerr mainnet - non-betting sync

Add Wagerr 4.0 betting code

Source: 4.0 commit 6bc216c12d4622a1b9e0ca3649a27dd22a9e1e5c

Add Wagerr specific parameters and adapt to Dash' conventions

Add chain variables for betting, adapt code to Dash' conventions

Add betting hooks to validation sections

Port validation in betting v2/v3 phase

Add and adapt betting RPC commands

Add listtransactionrecords

Various fixes
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Nov 24, 2022
- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Nov 26, 2022
Modified by: wagerr-builder <104495875+wagerr-builder@users.noreply.github.com>

- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
wagerr-builder pushed a commit to wagerr-builder/wagerr that referenced this pull request Dec 30, 2022
Modified by: wagerr-builder <104495875+wagerr-builder@users.noreply.github.com>

- Port and adapt PIVX commits on time protocol V2 (PR dashpay#1002)
- Port PIVX commits on nTime offset warnings (PR dashpay#1138)
- Adjust chain parameters
- Add several copyright notices
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants