Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13711319
D12134.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
D12134.id.diff
View Options
diff --git a/src/test/miner_tests.cpp b/src/test/miner_tests.cpp
--- a/src/test/miner_tests.cpp
+++ b/src/test/miner_tests.cpp
@@ -37,10 +37,10 @@
EXCLUSIVE_LOCKS_REQUIRED(::cs_main, m_node.mempool->cs);
bool TestSequenceLocks(const CTransaction &tx, int flags)
EXCLUSIVE_LOCKS_REQUIRED(::cs_main, m_node.mempool->cs) {
- CCoinsViewMemPool viewMempool(
+ CCoinsViewMemPool view_mempool(
&m_node.chainman->ActiveChainstate().CoinsTip(), *m_node.mempool);
return CheckSequenceLocks(m_node.chainman->ActiveChain().Tip(),
- viewMempool, tx, flags);
+ view_mempool, tx, flags);
}
BlockAssembler AssemblerForTest(const CChainParams ¶ms);
};
diff --git a/src/txmempool.h b/src/txmempool.h
--- a/src/txmempool.h
+++ b/src/txmempool.h
@@ -942,7 +942,11 @@
public:
CCoinsViewMemPool(CCoinsView *baseIn, const CTxMemPool &mempoolIn);
bool GetCoin(const COutPoint &outpoint, Coin &coin) const override;
- /** Add the coins created by this transaction. */
+ /**
+ * Add the coins created by this transaction. These coins are only
+ * temporarily stored in m_temp_added and cannot be flushed to the back end.
+ * Only used for package validation.
+ */
void PackageAddTransaction(const CTransactionRef &tx);
};
diff --git a/src/txmempool.cpp b/src/txmempool.cpp
--- a/src/txmempool.cpp
+++ b/src/txmempool.cpp
@@ -584,13 +584,13 @@
const CTransaction &tx = it->GetTx();
LockPoints lp = it->GetLockPoints();
bool validLP = TestLockPointValidity(active_chainstate.m_chain, &lp);
- CCoinsViewMemPool viewMempool(&active_chainstate.CoinsTip(), *this);
+ CCoinsViewMemPool view_mempool(&active_chainstate.CoinsTip(), *this);
TxValidationState state;
if (!ContextualCheckTransactionForCurrentBlock(
active_chainstate.m_chain.Tip(),
config.GetChainParams().GetConsensus(), tx, state, flags) ||
- !CheckSequenceLocks(active_chainstate.m_chain.Tip(), viewMempool,
+ !CheckSequenceLocks(active_chainstate.m_chain.Tip(), view_mempool,
tx, flags, &lp, validLP)) {
// Note if CheckSequenceLocks fails the LockPoints may still be
// invalid. So it's critical that we remove the tx and not depend on
diff --git a/src/validation.h b/src/validation.h
--- a/src/validation.h
+++ b/src/validation.h
@@ -480,8 +480,12 @@
* @param[in] tip Chain tip to check tx sequence locks against.
* For example, the tip of the current active chain.
* @param[in] coins_view Any CCoinsView that provides access to the
- * relevant coins for checking sequence locks. Any CCoinsView can be passed
- * in; it is assumed to be consistent with the tip.
+ * relevant coins for checking sequence locks. For example, it can be a
+ * CCoinsViewCache that isn't connected to anything but contains all the
+ * relevant coins, or a CCoinsViewMemPool that is connected to the mempool
+ * and chainstate UTXO set. In the latter case, the caller is responsible
+ * for holding the appropriate locks to ensure that calls to GetCoin()
+ * return correct coins.
* Simulates calling SequenceLocks() with data from the tip passed in.
* Optionally stores in LockPoints the resulting height and time
* calculated and the hash of the block needed for calculation or skips the
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 11:36 (14 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5571846
Default Alt Text
D12134.id.diff (3 KB)
Attached To
D12134: [refactor] comment/naming improvements
Event Timeline
Log In to Comment