mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-05-29 13:32:33 +02:00
Implement ignore_rejects for transaction packages
This commit is contained in:
parent
f433dadedd
commit
ce3e33cde2
@ -504,10 +504,10 @@ public:
|
|||||||
|
|
||||||
/** Parameters for test package mempool validation through testmempoolaccept. */
|
/** Parameters for test package mempool validation through testmempoolaccept. */
|
||||||
static ATMPArgs PackageTestAccept(const CChainParams& chainparams, int64_t accept_time,
|
static ATMPArgs PackageTestAccept(const CChainParams& chainparams, int64_t accept_time,
|
||||||
std::vector<COutPoint>& coins_to_uncache) {
|
const ignore_rejects_type& ignore_rejects, std::vector<COutPoint>& coins_to_uncache) {
|
||||||
return ATMPArgs{/* m_chainparams */ chainparams,
|
return ATMPArgs{/* m_chainparams */ chainparams,
|
||||||
/* m_accept_time */ accept_time,
|
/* m_accept_time */ accept_time,
|
||||||
empty_ignore_rejects,
|
/* m_ignore_rejects */ ignore_rejects,
|
||||||
/* m_coins_to_uncache */ coins_to_uncache,
|
/* m_coins_to_uncache */ coins_to_uncache,
|
||||||
/* m_test_accept */ true,
|
/* m_test_accept */ true,
|
||||||
/* m_allow_replacement */ false,
|
/* m_allow_replacement */ false,
|
||||||
@ -521,10 +521,10 @@ public:
|
|||||||
|
|
||||||
/** Parameters for child-with-unconfirmed-parents package validation. */
|
/** Parameters for child-with-unconfirmed-parents package validation. */
|
||||||
static ATMPArgs PackageChildWithParents(const CChainParams& chainparams, int64_t accept_time,
|
static ATMPArgs PackageChildWithParents(const CChainParams& chainparams, int64_t accept_time,
|
||||||
std::vector<COutPoint>& coins_to_uncache, const std::optional<CFeeRate>& client_maxfeerate) {
|
std::vector<COutPoint>& coins_to_uncache, const std::optional<CFeeRate>& client_maxfeerate, const ignore_rejects_type& ignore_rejects) {
|
||||||
return ATMPArgs{/* m_chainparams */ chainparams,
|
return ATMPArgs{/* m_chainparams */ chainparams,
|
||||||
/* m_accept_time */ accept_time,
|
/* m_accept_time */ accept_time,
|
||||||
empty_ignore_rejects,
|
/* m_ignore_rejects */ ignore_rejects,
|
||||||
/* m_coins_to_uncache */ coins_to_uncache,
|
/* m_coins_to_uncache */ coins_to_uncache,
|
||||||
/* m_test_accept */ false,
|
/* m_test_accept */ false,
|
||||||
/* m_allow_replacement */ true,
|
/* m_allow_replacement */ true,
|
||||||
@ -1920,7 +1920,7 @@ MempoolAcceptResult AcceptToMemoryPool(Chainstate& active_chainstate, const CTra
|
|||||||
}
|
}
|
||||||
|
|
||||||
PackageMempoolAcceptResult ProcessNewPackage(Chainstate& active_chainstate, CTxMemPool& pool,
|
PackageMempoolAcceptResult ProcessNewPackage(Chainstate& active_chainstate, CTxMemPool& pool,
|
||||||
const Package& package, bool test_accept, const std::optional<CFeeRate>& client_maxfeerate)
|
const Package& package, bool test_accept, const std::optional<CFeeRate>& client_maxfeerate, const ignore_rejects_type& ignore_rejects)
|
||||||
{
|
{
|
||||||
AssertLockHeld(cs_main);
|
AssertLockHeld(cs_main);
|
||||||
assert(!package.empty());
|
assert(!package.empty());
|
||||||
@ -1931,10 +1931,10 @@ PackageMempoolAcceptResult ProcessNewPackage(Chainstate& active_chainstate, CTxM
|
|||||||
auto result = [&]() EXCLUSIVE_LOCKS_REQUIRED(cs_main) {
|
auto result = [&]() EXCLUSIVE_LOCKS_REQUIRED(cs_main) {
|
||||||
AssertLockHeld(cs_main);
|
AssertLockHeld(cs_main);
|
||||||
if (test_accept) {
|
if (test_accept) {
|
||||||
auto args = MemPoolAccept::ATMPArgs::PackageTestAccept(chainparams, GetTime(), coins_to_uncache);
|
auto args = MemPoolAccept::ATMPArgs::PackageTestAccept(chainparams, GetTime(), ignore_rejects, coins_to_uncache);
|
||||||
return MemPoolAccept(pool, active_chainstate).AcceptMultipleTransactions(package, args);
|
return MemPoolAccept(pool, active_chainstate).AcceptMultipleTransactions(package, args);
|
||||||
} else {
|
} else {
|
||||||
auto args = MemPoolAccept::ATMPArgs::PackageChildWithParents(chainparams, GetTime(), coins_to_uncache, client_maxfeerate);
|
auto args = MemPoolAccept::ATMPArgs::PackageChildWithParents(chainparams, GetTime(), coins_to_uncache, client_maxfeerate, ignore_rejects);
|
||||||
return MemPoolAccept(pool, active_chainstate).AcceptPackage(package, args);
|
return MemPoolAccept(pool, active_chainstate).AcceptPackage(package, args);
|
||||||
}
|
}
|
||||||
}();
|
}();
|
||||||
|
@ -291,7 +291,7 @@ static inline MempoolAcceptResult AcceptToMemoryPool(Chainstate& active_chainsta
|
|||||||
* possible for the package to be partially submitted.
|
* possible for the package to be partially submitted.
|
||||||
*/
|
*/
|
||||||
PackageMempoolAcceptResult ProcessNewPackage(Chainstate& active_chainstate, CTxMemPool& pool,
|
PackageMempoolAcceptResult ProcessNewPackage(Chainstate& active_chainstate, CTxMemPool& pool,
|
||||||
const Package& txns, bool test_accept, const std::optional<CFeeRate>& client_maxfeerate)
|
const Package& txns, bool test_accept, const std::optional<CFeeRate>& client_maxfeerate, const ignore_rejects_type& ignore_rejects=empty_ignore_rejects)
|
||||||
EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
||||||
|
|
||||||
/* Mempool validation helper functions */
|
/* Mempool validation helper functions */
|
||||||
|
Loading…
Reference in New Issue
Block a user