mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 15:09:59 +01:00
Relay double-spends, subject to anti-DOS
Allows network wallets and other clients to see transactions that respend a prevout already spent in an unconfirmed transaction in this node's mempool. Knowledge of an attempted double-spend is of interest to recipients of the first spend. In some cases, it will allow these recipients to withhold goods or services upon being alerted of a double-spend that deprives them of payment. As before, respends are not added to the mempool. Anti-Denial-of-Service-Attack provisions: - Use a bloom filter to relay only one respend per mempool prevout - Rate-limit respend relays to a default of 100 thousand bytes/minute - Define tx2.IsEquivalentTo(tx1): equality when scriptSigs are not considered - Do not relay these equivalent transactions Remove an unused variable declaration in txmempool.cpp.
This commit is contained in:
16
src/core.cpp
16
src/core.cpp
@@ -119,6 +119,22 @@ CTransaction& CTransaction::operator=(const CTransaction &tx) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool CTransaction::IsEquivalentTo(const CTransaction& tx) const
|
||||
{
|
||||
if (nVersion != tx.nVersion ||
|
||||
nLockTime != tx.nLockTime ||
|
||||
vin.size() != tx.vin.size() ||
|
||||
vout != tx.vout)
|
||||
return false;
|
||||
for (unsigned int i = 0; i < vin.size(); i++)
|
||||
{
|
||||
if (vin[i].nSequence != tx.vin[i].nSequence ||
|
||||
vin[i].prevout != tx.vin[i].prevout)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int64_t CTransaction::GetValueOut() const
|
||||
{
|
||||
int64_t nValueOut = 0;
|
||||
|
||||
Reference in New Issue
Block a user