Fix MAX_STANDARD_TX_WEIGHT check
As suggested by the constant name and its comment in policy.h, a transaction with a weight of exactly MAX_STANDARD_TX_WEIGHT should be allowed
This commit is contained in:
parent
627c3762ce
commit
2f1a30c63e
3 changed files with 4 additions and 4 deletions
|
@ -664,10 +664,10 @@ bool AddOrphanTx(const CTransactionRef& tx, NodeId peer) EXCLUSIVE_LOCKS_REQUIRE
|
||||||
// large transaction with a missing parent then we assume
|
// large transaction with a missing parent then we assume
|
||||||
// it will rebroadcast it later, after the parent transaction(s)
|
// it will rebroadcast it later, after the parent transaction(s)
|
||||||
// have been mined or received.
|
// have been mined or received.
|
||||||
// 100 orphans, each of which is at most 99,999 bytes big is
|
// 100 orphans, each of which is at most 100,000 bytes big is
|
||||||
// at most 10 megabytes of orphans and somewhat more byprev index (in the worst case):
|
// at most 10 megabytes of orphans and somewhat more byprev index (in the worst case):
|
||||||
unsigned int sz = GetTransactionWeight(*tx);
|
unsigned int sz = GetTransactionWeight(*tx);
|
||||||
if (sz >= MAX_STANDARD_TX_WEIGHT)
|
if (sz > MAX_STANDARD_TX_WEIGHT)
|
||||||
{
|
{
|
||||||
LogPrint(BCLog::MEMPOOL, "ignoring large orphan tx (size: %u, hash: %s)\n", sz, hash.ToString());
|
LogPrint(BCLog::MEMPOOL, "ignoring large orphan tx (size: %u, hash: %s)\n", sz, hash.ToString());
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -91,7 +91,7 @@ bool IsStandardTx(const CTransaction& tx, std::string& reason, const bool witnes
|
||||||
// computing signature hashes is O(ninputs*txsize). Limiting transactions
|
// computing signature hashes is O(ninputs*txsize). Limiting transactions
|
||||||
// to MAX_STANDARD_TX_WEIGHT mitigates CPU exhaustion attacks.
|
// to MAX_STANDARD_TX_WEIGHT mitigates CPU exhaustion attacks.
|
||||||
unsigned int sz = GetTransactionWeight(tx);
|
unsigned int sz = GetTransactionWeight(tx);
|
||||||
if (sz >= MAX_STANDARD_TX_WEIGHT) {
|
if (sz > MAX_STANDARD_TX_WEIGHT) {
|
||||||
reason = "tx-size";
|
reason = "tx-size";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3053,7 +3053,7 @@ bool CWallet::CreateTransaction(const std::vector<CRecipient>& vecSend, CTransac
|
||||||
tx = MakeTransactionRef(std::move(txNew));
|
tx = MakeTransactionRef(std::move(txNew));
|
||||||
|
|
||||||
// Limit size
|
// Limit size
|
||||||
if (GetTransactionWeight(*tx) >= MAX_STANDARD_TX_WEIGHT)
|
if (GetTransactionWeight(*tx) > MAX_STANDARD_TX_WEIGHT)
|
||||||
{
|
{
|
||||||
strFailReason = _("Transaction too large");
|
strFailReason = _("Transaction too large");
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in a new issue