post-DIP0001 cleanup (#1763)
* post-DIP0001 cleanup also fixes tests * bump nMinimumChainWork and defaultAssumeValid
This commit is contained in:
parent
4802a1fb71
commit
3028af19f1
@ -121,7 +121,7 @@ class WalletTest (BitcoinTestFramework):
|
||||
|
||||
# Send 100 DASH normal
|
||||
address = self.nodes[0].getnewaddress("test")
|
||||
fee_per_byte = Decimal('0.001') / 1000
|
||||
fee_per_byte = Decimal('0.00001') / 1000
|
||||
self.nodes[2].settxfee(fee_per_byte * 1000)
|
||||
txid = self.nodes[2].sendtoaddress(address, 100, "", "", False)
|
||||
self.nodes[2].generate(1)
|
||||
|
@ -117,10 +117,10 @@ public:
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_DIP0001].nThreshold = 3226; // 80% of 4032
|
||||
|
||||
// The best chain should have at least this much work.
|
||||
consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000172210fe351643b3f1"); // 750000
|
||||
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000100a308553b4863b755"); // 782700
|
||||
|
||||
// By default assume that the signatures in ancestors of this block are valid.
|
||||
consensus.defaultAssumeValid = uint256S("0x00000000000000b4181bbbdddbae464ce11fede5d0292fb63fdede1e7c8ab21c"); //750000
|
||||
consensus.defaultAssumeValid = uint256S("0x000000000000001c172f518793c3b9e83f202284615592f87fe3506ce964dcd4"); // 782700
|
||||
|
||||
/**
|
||||
* The message start string is designed to be unlikely to occur in normal data.
|
||||
@ -258,10 +258,10 @@ public:
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_DIP0001].nThreshold = 50; // 50% of 100
|
||||
|
||||
// The best chain should have at least this much work.
|
||||
consensus.nMinimumChainWork = uint256S("00000000000000000000000000000000000000000000000000000003cd72a542"); //4000
|
||||
consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000000000924e924a21715"); // 37900
|
||||
|
||||
// By default assume that the signatures in ancestors of this block are valid.
|
||||
consensus.defaultAssumeValid = uint256S("00000ce22113f3eb8636e225d6a1691e132fdd587aed993e1bc9b07a0235eea4"); //4000
|
||||
consensus.defaultAssumeValid = uint256S("0x0000000004f5aef732d572ff514af99a995702c92e4452c7af10858231668b1f"); // 37900
|
||||
|
||||
pchMessageStart[0] = 0xce;
|
||||
pchMessageStart[1] = 0xe2;
|
||||
|
@ -7,14 +7,13 @@
|
||||
#define BITCOIN_CONSENSUS_CONSENSUS_H
|
||||
|
||||
/** The maximum allowed size for a serialized block, in bytes (network rule) */
|
||||
// static const unsigned int MAX_BLOCK_SIZE = 1000000;
|
||||
static const unsigned int MAX_LEGACY_BLOCK_SIZE = (1 * 1000 * 1000);
|
||||
static const unsigned int MAX_LEGACY_BLOCK_SIZE = 1000000;
|
||||
static const unsigned int MAX_DIP0001_BLOCK_SIZE = 2000000;
|
||||
inline unsigned int MaxBlockSize(bool fDIP0001Active /*= false */)
|
||||
{
|
||||
return fDIP0001Active ? MAX_LEGACY_BLOCK_SIZE * 2 : MAX_LEGACY_BLOCK_SIZE;
|
||||
return fDIP0001Active ? MAX_DIP0001_BLOCK_SIZE : MAX_LEGACY_BLOCK_SIZE;
|
||||
}
|
||||
/** The maximum allowed number of signature check operations in a block (network rule) */
|
||||
// static const unsigned int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50;
|
||||
inline unsigned int MaxBlockSigOps(bool fDIP0001Active /*= false */)
|
||||
{
|
||||
return MaxBlockSize(fDIP0001Active) / 50;
|
||||
|
@ -13,7 +13,6 @@
|
||||
#ifdef ENABLE_WALLET
|
||||
#include "privatesend-client.h"
|
||||
#endif // ENABLE_WALLET
|
||||
#include "txmempool.h"
|
||||
|
||||
void CDSNotificationInterface::InitializeCurrentBlockTip()
|
||||
{
|
||||
@ -38,28 +37,8 @@ void CDSNotificationInterface::UpdatedBlockTip(const CBlockIndex *pindexNew, con
|
||||
|
||||
masternodeSync.UpdatedBlockTip(pindexNew, fInitialDownload, connman);
|
||||
|
||||
// DIP0001 updates
|
||||
|
||||
bool fDIP0001ActiveAtTipTmp = fDIP0001ActiveAtTip;
|
||||
// Update global flags
|
||||
// Update global DIP0001 activation status
|
||||
fDIP0001ActiveAtTip = (VersionBitsState(pindexNew, Params().GetConsensus(), Consensus::DEPLOYMENT_DIP0001, versionbitscache) == THRESHOLD_ACTIVE);
|
||||
fDIP0001WasLockedIn = fDIP0001ActiveAtTip || (VersionBitsState(pindexNew, Params().GetConsensus(), Consensus::DEPLOYMENT_DIP0001, versionbitscache) == THRESHOLD_LOCKED_IN);
|
||||
|
||||
// Update min fees only if activation changed and we are using default fees
|
||||
if (fDIP0001ActiveAtTipTmp != fDIP0001ActiveAtTip) {
|
||||
if (!mapArgs.count("-minrelaytxfee")) {
|
||||
::minRelayTxFee = CFeeRate(fDIP0001ActiveAtTip ? DEFAULT_DIP0001_MIN_RELAY_TX_FEE : DEFAULT_LEGACY_MIN_RELAY_TX_FEE);
|
||||
mempool.UpdateMinFee(::minRelayTxFee);
|
||||
}
|
||||
#ifdef ENABLE_WALLET
|
||||
if (!mapArgs.count("-mintxfee")) {
|
||||
CWallet::minTxFee = CFeeRate(fDIP0001ActiveAtTip ? DEFAULT_DIP0001_TRANSACTION_MINFEE : DEFAULT_LEGACY_TRANSACTION_MINFEE);
|
||||
}
|
||||
if (!mapArgs.count("-fallbackfee")) {
|
||||
CWallet::fallbackFee = CFeeRate(fDIP0001ActiveAtTip ? DEFAULT_DIP0001_FALLBACK_FEE : DEFAULT_LEGACY_FALLBACK_FEE);
|
||||
}
|
||||
#endif // ENABLE_WALLET
|
||||
}
|
||||
|
||||
if (fInitialDownload)
|
||||
return;
|
||||
|
@ -478,9 +478,9 @@ std::string HelpMessage(HelpMessageMode mode)
|
||||
strUsage += HelpMessageOpt("-disablewallet", _("Do not load the wallet and disable wallet RPC calls"));
|
||||
strUsage += HelpMessageOpt("-keypool=<n>", strprintf(_("Set key pool size to <n> (default: %u)"), DEFAULT_KEYPOOL_SIZE));
|
||||
strUsage += HelpMessageOpt("-fallbackfee=<amt>", strprintf(_("A fee rate (in %s/kB) that will be used when fee estimation has insufficient data (default: %s)"),
|
||||
CURRENCY_UNIT, FormatMoney(DEFAULT_LEGACY_FALLBACK_FEE)));
|
||||
CURRENCY_UNIT, FormatMoney(DEFAULT_FALLBACK_FEE)));
|
||||
strUsage += HelpMessageOpt("-mintxfee=<amt>", strprintf(_("Fees (in %s/kB) smaller than this are considered zero fee for transaction creation (default: %s)"),
|
||||
CURRENCY_UNIT, FormatMoney(DEFAULT_LEGACY_TRANSACTION_MINFEE)));
|
||||
CURRENCY_UNIT, FormatMoney(DEFAULT_TRANSACTION_MINFEE)));
|
||||
strUsage += HelpMessageOpt("-paytxfee=<amt>", strprintf(_("Fee (in %s/kB) to add to transactions you send (default: %s)"),
|
||||
CURRENCY_UNIT, FormatMoney(payTxFee.GetFeePerK())));
|
||||
strUsage += HelpMessageOpt("-rescan", _("Rescan the block chain for missing wallet transactions on startup"));
|
||||
@ -569,7 +569,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
||||
strUsage += HelpMessageOpt("-maxsigcachesize=<n>", strprintf("Limit size of signature cache to <n> MiB (default: %u)", DEFAULT_MAX_SIG_CACHE_SIZE));
|
||||
}
|
||||
strUsage += HelpMessageOpt("-minrelaytxfee=<amt>", strprintf(_("Fees (in %s/kB) smaller than this are considered zero fee for relaying, mining and transaction creation (default: %s)"),
|
||||
CURRENCY_UNIT, FormatMoney(DEFAULT_LEGACY_MIN_RELAY_TX_FEE)));
|
||||
CURRENCY_UNIT, FormatMoney(DEFAULT_MIN_RELAY_TX_FEE)));
|
||||
strUsage += HelpMessageOpt("-printtoconsole", _("Send trace/debug info to console instead of debug.log file"));
|
||||
strUsage += HelpMessageOpt("-printtodebuglog", strprintf(_("Send trace/debug info to debug.log file (default: %u)"), 1));
|
||||
if (showDebug)
|
||||
|
@ -981,7 +981,7 @@ bool CTxLockRequest::IsValid() const
|
||||
|
||||
CAmount CTxLockRequest::GetMinFee() const
|
||||
{
|
||||
CAmount nMinFee = fDIP0001ActiveAtTip ? MIN_FEE / 10 : MIN_FEE;
|
||||
CAmount nMinFee = MIN_FEE;
|
||||
return std::max(nMinFee, CAmount(vin.size() * nMinFee));
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ public:
|
||||
class CTxLockRequest : public CTransaction
|
||||
{
|
||||
private:
|
||||
static const CAmount MIN_FEE = 0.001 * COIN;
|
||||
static const CAmount MIN_FEE = 0.0001 * COIN;
|
||||
|
||||
public:
|
||||
static const int WARN_MANY_INPUTS = 100;
|
||||
|
@ -702,11 +702,8 @@ bool CMasternodePaymentVote::IsValid(CNode* pnode, int nValidationHeight, std::s
|
||||
if(nRank > MNPAYMENTS_SIGNATURES_TOTAL*2 && nBlockHeight > nValidationHeight) {
|
||||
strError = strprintf("Masternode is not in the top %d (%d)", MNPAYMENTS_SIGNATURES_TOTAL*2, nRank);
|
||||
LogPrintf("CMasternodePaymentVote::IsValid -- Error: %s\n", strError);
|
||||
// do not ban nodes before DIP0001 is locked in to avoid banning majority of (old) masternodes
|
||||
if (fDIP0001WasLockedIn) {
|
||||
Misbehaving(pnode->GetId(), 20);
|
||||
}
|
||||
}
|
||||
// Still invalid however
|
||||
return false;
|
||||
}
|
||||
@ -846,8 +843,7 @@ void CMasternodePaymentVote::Relay(CConnman& connman)
|
||||
// do not relay until synced
|
||||
if (!masternodeSync.IsWinnersListSynced()) return;
|
||||
CInv inv(MSG_MASTERNODE_PAYMENT_VOTE, GetHash());
|
||||
// relay votes only strictly to new nodes until DIP0001 is locked in to avoid being banned by majority of (old) masternodes
|
||||
connman.RelayInv(inv, fDIP0001WasLockedIn ? mnpayments.GetMinMasternodePaymentsProto() : MIN_MASTERNODE_PAYMENT_PROTO_VERSION_2);
|
||||
connman.RelayInv(inv);
|
||||
}
|
||||
|
||||
bool CMasternodePaymentVote::CheckSignature(const CPubKey& pubKeyMasternode, int nValidationHeight, int &nDos)
|
||||
|
@ -95,29 +95,12 @@ bool CMasternode::UpdateFromNewBroadcast(CMasternodeBroadcast& mnb, CConnman& co
|
||||
//
|
||||
arith_uint256 CMasternode::CalculateScore(const uint256& blockHash)
|
||||
{
|
||||
if (fDIP0001WasLockedIn) {
|
||||
// Deterministically calculate a "score" for a Masternode based on any given (block)hash
|
||||
CHashWriter ss(SER_GETHASH, PROTOCOL_VERSION);
|
||||
ss << vin.prevout << nCollateralMinConfBlockHash << blockHash;
|
||||
return UintToArith256(ss.GetHash());
|
||||
}
|
||||
|
||||
// TODO: remove calculations below after migration to 12.2
|
||||
|
||||
uint256 aux = ArithToUint256(UintToArith256(vin.prevout.hash) + vin.prevout.n);
|
||||
|
||||
CHashWriter ss(SER_GETHASH, PROTOCOL_VERSION);
|
||||
ss << blockHash;
|
||||
arith_uint256 hash2 = UintToArith256(ss.GetHash());
|
||||
|
||||
CHashWriter ss2(SER_GETHASH, PROTOCOL_VERSION);
|
||||
ss2 << blockHash;
|
||||
ss2 << aux;
|
||||
arith_uint256 hash3 = UintToArith256(ss2.GetHash());
|
||||
|
||||
return (hash3 > hash2 ? hash3 - hash2 : hash2 - hash3);
|
||||
}
|
||||
|
||||
CMasternode::CollateralStatus CMasternode::CheckCollateral(const COutPoint& outpoint)
|
||||
{
|
||||
int nHeight;
|
||||
|
@ -15,11 +15,11 @@ BOOST_FIXTURE_TEST_SUITE(policyestimator_tests, BasicTestingSetup)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(BlockPolicyEstimates)
|
||||
{
|
||||
CTxMemPool mpool(CFeeRate(10000)); // we have 10x higher fee
|
||||
CTxMemPool mpool(CFeeRate(1000));
|
||||
TestMemPoolEntryHelper entry;
|
||||
CAmount basefee(20000); // we have 10x higher fee
|
||||
CAmount basefee(2000);
|
||||
double basepri = 1e6;
|
||||
CAmount deltaFee(1000); // we have 10x higher fee
|
||||
CAmount deltaFee(100);
|
||||
double deltaPri=5e5;
|
||||
std::vector<CAmount> feeV[2];
|
||||
std::vector<double> priV[2];
|
||||
|
@ -337,7 +337,7 @@ BOOST_AUTO_TEST_CASE(test_IsStandard)
|
||||
|
||||
// Check dust with default relay fee:
|
||||
CAmount nDustThreshold = 182 * minRelayTxFee.GetFeePerK()/1000 * 3;
|
||||
BOOST_CHECK_EQUAL(nDustThreshold, 5460);
|
||||
BOOST_CHECK_EQUAL(nDustThreshold, 546);
|
||||
// dust:
|
||||
t.vout[0].nValue = nDustThreshold - 1;
|
||||
BOOST_CHECK(!IsStandardTx(t, reason));
|
||||
@ -346,15 +346,15 @@ BOOST_AUTO_TEST_CASE(test_IsStandard)
|
||||
BOOST_CHECK(IsStandardTx(t, reason));
|
||||
|
||||
// Check dust with odd relay fee to verify rounding:
|
||||
// nDustThreshold = 182 * 12340 / 1000 * 3
|
||||
minRelayTxFee = CFeeRate(12340);
|
||||
// nDustThreshold = 182 * 1234 / 1000 * 3
|
||||
minRelayTxFee = CFeeRate(1234);
|
||||
// dust:
|
||||
t.vout[0].nValue = 6735 - 1;
|
||||
t.vout[0].nValue = 672 - 1;
|
||||
BOOST_CHECK(!IsStandardTx(t, reason));
|
||||
// not dust:
|
||||
t.vout[0].nValue = 6735;
|
||||
t.vout[0].nValue = 672;
|
||||
BOOST_CHECK(IsStandardTx(t, reason));
|
||||
minRelayTxFee = CFeeRate(DEFAULT_LEGACY_MIN_RELAY_TX_FEE);
|
||||
minRelayTxFee = CFeeRate(DEFAULT_MIN_RELAY_TX_FEE);
|
||||
|
||||
t.vout[0].scriptPubKey = CScript() << OP_1;
|
||||
BOOST_CHECK(!IsStandardTx(t, reason));
|
||||
|
@ -91,7 +91,7 @@ std::atomic<bool> fDIP0001ActiveAtTip{false};
|
||||
uint256 hashAssumeValid;
|
||||
|
||||
/** Fees smaller than this (in duffs) are considered zero fee (for relaying, mining and transaction creation) */
|
||||
CFeeRate minRelayTxFee = CFeeRate(DEFAULT_LEGACY_MIN_RELAY_TX_FEE);
|
||||
CFeeRate minRelayTxFee = CFeeRate(DEFAULT_MIN_RELAY_TX_FEE);
|
||||
|
||||
CTxMemPool mempool(::minRelayTxFee);
|
||||
map<uint256, int64_t> mapRejectedBlocks GUARDED_BY(cs_main);
|
||||
|
@ -54,13 +54,8 @@ static const bool DEFAULT_ALERTS = true;
|
||||
static const bool DEFAULT_WHITELISTRELAY = true;
|
||||
/** Default for DEFAULT_WHITELISTFORCERELAY. */
|
||||
static const bool DEFAULT_WHITELISTFORCERELAY = true;
|
||||
/** Default for -minrelaytxfee, minimum relay fee for transactions
|
||||
* We are ~100 times smaller then bitcoin now (2016-03-01), set minRelayTxFee only 10 times higher
|
||||
* so it's still 10 times lower comparing to bitcoin.
|
||||
* 2017-07: we are 10x smaller now, let's lower defaults 10x via the same BIP9 bit as DIP0001
|
||||
*/
|
||||
static const unsigned int DEFAULT_LEGACY_MIN_RELAY_TX_FEE = 10000; // was 1000
|
||||
static const unsigned int DEFAULT_DIP0001_MIN_RELAY_TX_FEE = 1000;
|
||||
/** Default for -minrelaytxfee, minimum relay fee for transactions */
|
||||
static const unsigned int DEFAULT_MIN_RELAY_TX_FEE = 1000;
|
||||
/** Default for -maxorphantx, maximum number of orphan transactions kept in memory */
|
||||
static const unsigned int DEFAULT_MAX_ORPHAN_TRANSACTIONS = 100;
|
||||
/** Default for -limitancestorcount, max number of in-mempool ancestors */
|
||||
@ -168,7 +163,6 @@ extern bool fLargeWorkInvalidChainFound;
|
||||
|
||||
extern std::map<uint256, int64_t> mapRejectedBlocks;
|
||||
|
||||
static const int DIP0001_PROTOCOL_VERSION = 70208;
|
||||
extern std::atomic<bool> fDIP0001WasLockedIn;
|
||||
extern std::atomic<bool> fDIP0001ActiveAtTip;
|
||||
|
||||
|
@ -41,4 +41,7 @@ static const int NO_BLOOM_VERSION = 70201;
|
||||
//! "sendheaders" command and announcing blocks with headers starts with this version
|
||||
static const int SENDHEADERS_VERSION = 70201;
|
||||
|
||||
//! DIP0001 was activated in this version
|
||||
static const int DIP0001_PROTOCOL_VERSION = 70208;
|
||||
|
||||
#endif // BITCOIN_VERSION_H
|
||||
|
@ -52,13 +52,13 @@ bool fSendFreeTransactions = DEFAULT_SEND_FREE_TRANSACTIONS;
|
||||
* Fees smaller than this (in duffs) are considered zero fee (for transaction creation)
|
||||
* Override with -mintxfee
|
||||
*/
|
||||
CFeeRate CWallet::minTxFee = CFeeRate(DEFAULT_LEGACY_TRANSACTION_MINFEE);
|
||||
CFeeRate CWallet::minTxFee = CFeeRate(DEFAULT_TRANSACTION_MINFEE);
|
||||
/**
|
||||
* If fee estimation does not have enough data to provide estimates, use this fee instead.
|
||||
* Has no effect if not using fee estimation
|
||||
* Override with -fallbackfee
|
||||
*/
|
||||
CFeeRate CWallet::fallbackFee = CFeeRate(DEFAULT_LEGACY_FALLBACK_FEE);
|
||||
CFeeRate CWallet::fallbackFee = CFeeRate(DEFAULT_FALLBACK_FEE);
|
||||
|
||||
const uint256 CMerkleTx::ABANDON_HASH(uint256S("0000000000000000000000000000000000000000000000000000000000000001"));
|
||||
|
||||
|
@ -47,16 +47,9 @@ static const CAmount DEFAULT_TRANSACTION_FEE = 0;
|
||||
//! -paytxfee will warn if called with a higher fee than this amount (in satoshis) per KB
|
||||
static const CAmount nHighTransactionFeeWarning = 0.01 * COIN;
|
||||
//! -fallbackfee default
|
||||
static const CAmount DEFAULT_LEGACY_FALLBACK_FEE = 20000;
|
||||
static const CAmount DEFAULT_DIP0001_FALLBACK_FEE = 1000;
|
||||
static const CAmount DEFAULT_FALLBACK_FEE = 1000;
|
||||
//! -mintxfee default
|
||||
/**
|
||||
* We are ~100 times smaller then bitcoin now (2016-03-01), set minTxFee 10 times higher
|
||||
* so it's still 10 times lower comparing to bitcoin.
|
||||
* 2017-07: we are 10x smaller now, let's lower defaults 10x via the same BIP9 bit as DIP0001
|
||||
*/
|
||||
static const CAmount DEFAULT_LEGACY_TRANSACTION_MINFEE = 10000; // was 1000
|
||||
static const CAmount DEFAULT_DIP0001_TRANSACTION_MINFEE = 1000;
|
||||
static const CAmount DEFAULT_TRANSACTION_MINFEE = 1000;
|
||||
//! -maxtxfee default
|
||||
static const CAmount DEFAULT_TRANSACTION_MAXFEE = 0.2 * COIN; // "smallest denom" + X * "denom tails"
|
||||
//! minimum change amount
|
||||
|
Loading…
Reference in New Issue
Block a user