mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-03 01:33:20 +02:00
policy: Allow dust in transactions, spent in-mempool
Also known as Ephemeral Dust.
We try to ensure that dust is spent in blocks by requiring:
- ephemeral dust tx is 0-fee
- ephemeral dust tx only has one dust output
- If the ephemeral dust transaction has a child,
the dust is spent by by that child.
0-fee requirement means there is no incentive to mine
a transaction which doesn't have a child bringing its
own fees for the transaction package.
This commit is contained in:
@@ -813,6 +813,11 @@ BOOST_AUTO_TEST_CASE(test_IsStandard)
|
||||
// Check dust with default relay fee:
|
||||
CAmount nDustThreshold = 182 * g_dust.GetFeePerK() / 1000;
|
||||
BOOST_CHECK_EQUAL(nDustThreshold, 546);
|
||||
|
||||
// Add dust output to take dust slot, still standard!
|
||||
t.vout.emplace_back(0, t.vout[0].scriptPubKey);
|
||||
CheckIsStandard(t);
|
||||
|
||||
// dust:
|
||||
t.vout[0].nValue = nDustThreshold - 1;
|
||||
CheckIsNotStandard(t, "dust");
|
||||
@@ -969,6 +974,10 @@ BOOST_AUTO_TEST_CASE(test_IsStandard)
|
||||
CheckIsNotStandard(t, "bare-multisig");
|
||||
g_bare_multi = DEFAULT_PERMIT_BAREMULTISIG;
|
||||
|
||||
// Add dust output to take dust slot
|
||||
assert(t.vout.size() == 1);
|
||||
t.vout.emplace_back(0, t.vout[0].scriptPubKey);
|
||||
|
||||
// Check compressed P2PK outputs dust threshold (must have leading 02 or 03)
|
||||
t.vout[0].scriptPubKey = CScript() << std::vector<unsigned char>(33, 0x02) << OP_CHECKSIG;
|
||||
t.vout[0].nValue = 576;
|
||||
|
||||
Reference in New Issue
Block a user