BitcoinPrivate-legacy/src/consensus/params.h

57 lines
2.0 KiB
C
Raw Normal View History

// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2014 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_CONSENSUS_PARAMS_H
#define BITCOIN_CONSENSUS_PARAMS_H
#include "uint256.h"
namespace Consensus {
/**
* Parameters that influence chain consensus.
*/
struct Params {
uint256 hashGenesisBlock;
2016-06-14 14:16:34 -07:00
bool fCoinbaseMustBeProtected;
/** Needs to evenly divide MAX_SUBSIDY to avoid rounding errors. */
int nSubsidySlowStartInterval;
/**
* Shift based on a linear ramp for slow start:
*
2016-05-26 16:29:08 -07:00
* MAX_SUBSIDY*(t_s/2 + t_r) = MAX_SUBSIDY*t_h Coin balance
* t_s + t_r = t_h + t_c Block balance
*
* t_s = nSubsidySlowStartInterval
* t_r = number of blocks between end of slow start and first halving
* t_h = nSubsidyHalvingInterval
* t_c = SubsidySlowStartShift()
*/
int SubsidySlowStartShift() const { return nSubsidySlowStartInterval / 2; }
int nSubsidyHalvingInterval;
int GetLastFoundersRewardBlockHeight() const {
Merge: v1.0.4 into master (#42) * Add getlocalsolps and getnetworksolps RPC calls, show them in getmininginfo * Add benchmark for attempting decryption of notes * Add benchmark for incrementing note witnesses * Add -metricsui flag to toggle between persistent screen and rolling metrics Defaults to true if stdout is a TTY, else false. * Add -metricsrefreshtime option * Only show metrics by default if stdout is a TTY * Document metrics screen options * Fix stale comment referencing upstream block interval * Add checkpoint at block height 15000 * Added mainnet, testnet, and onion nodes * Make command line option to show all debugging consistent with similar options Most people expect a value of 1 to enable all for command line arguments. However to do this for the -debug option you must type "-debug=". This has been changed to allow "-debug=1" as well as "-debug=" to enable all debug logging * Update documentation to match the #4219 change * Update help message to match the #4219 change * Clarify that metrics options are only useful without -daemon and -printtoconsole * Increase length of metrics divider * Closes #1857. Fixes bug where tx spending only notes had priority of 0. * Closes #1901. Increase default settings for the max block size when mining and the amount of space available for priority transactions. * Write witness caches when writing the best block For steady-state operation, this reduces the average time between wallet disk writes from once per block to once per hour. On -rescan, witness caches are only written out at the end along with the best block, increasing speed while ensuring that on-disk state is kept consistent. Witness caches are now never recreated during a -reindex, on the assumption that the blocks themselves are not changing (the chain is just being reconstructed), and so the witnesses will remain valid. Part of #1749. * Add porter dev overrides for CC, CXX, MAKE, BUILD, HOST * Apply miniupnpc patches to enable compilation on Solaris 11 These can be removed after the next MiniUPnP release. Closes #1835. * Closes #1903. Add fee parameter to z_sendmany. * Add an upstream miniupnpc patch revision * Metrics - Don't exclaim unless > 1 "You have validated 0 transactions!" sounds a little less enthusiastic that intended. Also, only says "1 transaction". * Address review comments, tweak strings * bash-completion: Adapt for 0.12 and 0.13 * separate completion for bitcoind and bitcoin-cli * remove RPC support from bitcoind completion * add completion for bitcoin-tx and bitcoin-qt * rely on autoloading of completions * Change function names to not clash with Bitcoin, apply to correct binaries * Add bash completion files to Debian package * Always bash-complete the default account * Add Zcash RPC commands to CLI argument completion * Fixes #1823. Witness anchors for input notes no longer cross block boundaries. * Edit for grammar: "block chain" At this point, I believe it is universally accepted that "blockchain" is one word, and should not be separated into two. * Increase timeout as laptops on battery power have cpu throttling. * Isolate verification to a `ProofVerifier` context object that allows verification behavior to be tuned by the caller. * Regression test. * Ensure cache contains valid entry when anchor is popped. * Ensure ProofVerifier cannot be accidentally copied. * Document behaviour of CWallet::SetBestChain * WitnessAnchorData only needs to store one witness per JSOutPoint. * Rename Dummy to Disabled. * Add more tests for ProofVerifier. * Fix indentation * Generate JS for trydecryptnotes, make number of addresses a variable * Add JS to second block to ensure witnesses are incremented * ASSERT_TRUE -> ASSERT_FALSE * Skip JoinSplit verification before the last checkpoint Part of #1749 * Gather release notes from previous release to HEAD Also update release-process.md to replace git shortlog command with release-notes.py script. * Add a reindex test that fails because of a bug in decrementing witness caches Ref: https://github.com/zcash/zcash/pull/1904#issuecomment-265992988 * Make the test pass by fixing the bug! * Only check cache validity for witnesses being incremented or decremented Fixes the bug resulting from #1904. * Check that E' points are actually in G2 by ensuring they are of order r. * Fix bug in wallet tests * Extract block-generation wallet test code into a function * Rewrite reindex test to check beyond the max witness cache size * Fix bug in IncrementNoteWitness() * Update payment API docs to recommend -rescan for fixing witness errors * Update version to 1.0.4 * Update man pages * Release notes, authors, changelog * Update seed nodes * Bugfix #14 - getblocksubsidy RPC command is incorrect
2016-12-19 04:59:58 -08:00
//return nSubsidyHalvingInterval + SubsidySlowStartShift() - 1;
return 0; // Bugfix #14: getblocksubsidy RPC command is incorrect
}
/** Used to check majorities for block version upgrade */
int nMajorityEnforceBlockUpgrade;
int nMajorityRejectBlockOutdated;
int nMajorityWindow;
/** Proof of work parameters */
uint256 powLimit;
bool fPowAllowMinDifficultyBlocks;
int64_t nPowAveragingWindow;
int64_t nPowMaxAdjustDown;
int64_t nPowMaxAdjustUp;
int64_t nPowTargetSpacing;
int64_t AveragingWindowTimespan() const { return nPowAveragingWindow * nPowTargetSpacing; }
int64_t MinActualTimespan() const { return (AveragingWindowTimespan() * (100 - nPowMaxAdjustUp )) / 100; }
int64_t MaxActualTimespan() const { return (AveragingWindowTimespan() * (100 + nPowMaxAdjustDown)) / 100; }
};
} // namespace Consensus
#endif // BITCOIN_CONSENSUS_PARAMS_H