mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 09:46:52 -05:00
parent
2749613020
commit
78f4c8b98e
3 changed files with 24 additions and 20 deletions
|
@ -74,12 +74,10 @@ static RPCHelpMan getrawtransaction()
|
||||||
"getrawtransaction",
|
"getrawtransaction",
|
||||||
"\nReturn the raw transaction data.\n"
|
"\nReturn the raw transaction data.\n"
|
||||||
|
|
||||||
"\nBy default this function only works for mempool transactions. When called with a blockhash\n"
|
"\nBy default, this call only returns a transaction if it is in the mempool. If -txindex is enabled\n"
|
||||||
"argument, getrawtransaction will return the transaction if the specified block is available and\n"
|
"and no blockhash argument is passed, it will return the transaction if it is in the mempool or any block.\n"
|
||||||
"the transaction is found in that block. When called without a blockhash argument, getrawtransaction\n"
|
"If -txindex is not enabled and a blockhash argument is passed, it will return the transaction if\n"
|
||||||
"will return the transaction if it is in the mempool, or if -txindex is enabled and the transaction\n"
|
"the specified block is available and the transaction is found in that block.\n"
|
||||||
"is in a block in the blockchain.\n"
|
|
||||||
|
|
||||||
"\nHint: Use gettransaction for wallet transactions.\n"
|
"\nHint: Use gettransaction for wallet transactions.\n"
|
||||||
|
|
||||||
"\nIf verbose is 'true', returns an Object with information about 'txid'.\n"
|
"\nIf verbose is 'true', returns an Object with information about 'txid'.\n"
|
||||||
|
|
|
@ -1159,6 +1159,20 @@ CTransactionRef GetTransaction(const CBlockIndex* const block_index, const CTxMe
|
||||||
{
|
{
|
||||||
LOCK(cs_main);
|
LOCK(cs_main);
|
||||||
|
|
||||||
|
if (mempool && !block_index) {
|
||||||
|
CTransactionRef ptx = mempool->get(hash);
|
||||||
|
if (ptx) return ptx;
|
||||||
|
}
|
||||||
|
if (g_txindex) {
|
||||||
|
CTransactionRef tx;
|
||||||
|
uint256 block_hash;
|
||||||
|
if (g_txindex->FindTx(hash, block_hash, tx)) {
|
||||||
|
if (!block_index || block_index->GetBlockHash() == block_hash) {
|
||||||
|
hashBlock = block_hash;
|
||||||
|
return tx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (block_index) {
|
if (block_index) {
|
||||||
CBlock block;
|
CBlock block;
|
||||||
if (ReadBlockFromDisk(block, block_index, consensusParams)) {
|
if (ReadBlockFromDisk(block, block_index, consensusParams)) {
|
||||||
|
@ -1169,15 +1183,6 @@ CTransactionRef GetTransaction(const CBlockIndex* const block_index, const CTxMe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
if (mempool) {
|
|
||||||
CTransactionRef ptx = mempool->get(hash);
|
|
||||||
if (ptx) return ptx;
|
|
||||||
}
|
|
||||||
if (g_txindex) {
|
|
||||||
CTransactionRef tx;
|
|
||||||
if (g_txindex->FindTx(hash, hashBlock, tx)) return tx;
|
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,15 +142,16 @@ void StartScriptCheckWorkerThreads(int threads_num);
|
||||||
/** Stop all of the script checking worker threads */
|
/** Stop all of the script checking worker threads */
|
||||||
void StopScriptCheckWorkerThreads();
|
void StopScriptCheckWorkerThreads();
|
||||||
/**
|
/**
|
||||||
* Return transaction from the block at block_index.
|
* Return transaction with a given hash.
|
||||||
* If block_index is not provided, fall back to mempool.
|
* If mempool is provided and block_index is not provided, check it first for the tx.
|
||||||
* If mempool is not provided or the tx couldn't be found in mempool, fall back to g_txindex.
|
* If -txindex is available, check it next for the tx.
|
||||||
|
* Finally, if block_index is provided, check for tx by reading entire block from disk.
|
||||||
*
|
*
|
||||||
* @param[in] block_index The block to read from disk, or nullptr
|
* @param[in] block_index The block to read from disk, or nullptr
|
||||||
* @param[in] mempool If block_index is not provided, look in the mempool, if provided
|
* @param[in] mempool If provided, check mempool for tx
|
||||||
* @param[in] hash The txid
|
* @param[in] hash The txid
|
||||||
* @param[in] consensusParams The params
|
* @param[in] consensusParams The params
|
||||||
* @param[out] hashBlock The hash of block_index, if the tx was found via block_index
|
* @param[out] hashBlock The block hash, if the tx was found via -txindex or block_index
|
||||||
* @returns The tx if found, otherwise nullptr
|
* @returns The tx if found, otherwise nullptr
|
||||||
*/
|
*/
|
||||||
CTransactionRef GetTransaction(const CBlockIndex* const block_index, const CTxMemPool* const mempool, const uint256& hash, const Consensus::Params& consensusParams, uint256& hashBlock);
|
CTransactionRef GetTransaction(const CBlockIndex* const block_index, const CTxMemPool* const mempool, const uint256& hash, const Consensus::Params& consensusParams, uint256& hashBlock);
|
||||||
|
|
Loading…
Add table
Reference in a new issue