Switch GetTransaction to returning a CTransactionRef
This commit is contained in:
parent
2efcfa5acf
commit
a1883536b4
4 changed files with 11 additions and 11 deletions
|
@ -363,7 +363,7 @@ static bool rest_tx(HTTPRequest* req, const std::string& strURIPart)
|
||||||
if (!ParseHashStr(hashStr, hash))
|
if (!ParseHashStr(hashStr, hash))
|
||||||
return RESTERR(req, HTTP_BAD_REQUEST, "Invalid hash: " + hashStr);
|
return RESTERR(req, HTTP_BAD_REQUEST, "Invalid hash: " + hashStr);
|
||||||
|
|
||||||
CTransaction tx;
|
CTransactionRef tx;
|
||||||
uint256 hashBlock = uint256();
|
uint256 hashBlock = uint256();
|
||||||
if (!GetTransaction(hash, tx, Params().GetConsensus(), hashBlock, true))
|
if (!GetTransaction(hash, tx, Params().GetConsensus(), hashBlock, true))
|
||||||
return RESTERR(req, HTTP_NOT_FOUND, hashStr + " not found");
|
return RESTERR(req, HTTP_NOT_FOUND, hashStr + " not found");
|
||||||
|
@ -388,7 +388,7 @@ static bool rest_tx(HTTPRequest* req, const std::string& strURIPart)
|
||||||
|
|
||||||
case RF_JSON: {
|
case RF_JSON: {
|
||||||
UniValue objTx(UniValue::VOBJ);
|
UniValue objTx(UniValue::VOBJ);
|
||||||
TxToJSON(tx, hashBlock, objTx);
|
TxToJSON(*tx, hashBlock, objTx);
|
||||||
string strJSON = objTx.write() + "\n";
|
string strJSON = objTx.write() + "\n";
|
||||||
req->WriteHeader("Content-Type", "application/json");
|
req->WriteHeader("Content-Type", "application/json");
|
||||||
req->WriteReply(HTTP_OK, strJSON);
|
req->WriteReply(HTTP_OK, strJSON);
|
||||||
|
|
|
@ -218,19 +218,19 @@ UniValue getrawtransaction(const JSONRPCRequest& request)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CTransaction tx;
|
CTransactionRef tx;
|
||||||
uint256 hashBlock;
|
uint256 hashBlock;
|
||||||
if (!GetTransaction(hash, tx, Params().GetConsensus(), hashBlock, true))
|
if (!GetTransaction(hash, tx, Params().GetConsensus(), hashBlock, true))
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "No information available about transaction");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "No information available about transaction");
|
||||||
|
|
||||||
string strHex = EncodeHexTx(tx);
|
string strHex = EncodeHexTx(*tx);
|
||||||
|
|
||||||
if (!fVerbose)
|
if (!fVerbose)
|
||||||
return strHex;
|
return strHex;
|
||||||
|
|
||||||
UniValue result(UniValue::VOBJ);
|
UniValue result(UniValue::VOBJ);
|
||||||
result.push_back(Pair("hex", strHex));
|
result.push_back(Pair("hex", strHex));
|
||||||
TxToJSON(tx, hashBlock, result);
|
TxToJSON(*tx, hashBlock, result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,7 +289,7 @@ UniValue gettxoutproof(const JSONRPCRequest& request)
|
||||||
|
|
||||||
if (pblockindex == NULL)
|
if (pblockindex == NULL)
|
||||||
{
|
{
|
||||||
CTransaction tx;
|
CTransactionRef tx;
|
||||||
if (!GetTransaction(oneTxid, tx, Params().GetConsensus(), hashBlock, false) || hashBlock.IsNull())
|
if (!GetTransaction(oneTxid, tx, Params().GetConsensus(), hashBlock, false) || hashBlock.IsNull())
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Transaction not yet in block");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Transaction not yet in block");
|
||||||
if (!mapBlockIndex.count(hashBlock))
|
if (!mapBlockIndex.count(hashBlock))
|
||||||
|
|
|
@ -984,7 +984,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return transaction in txOut, and if it was found inside a block, its hash is placed in hashBlock */
|
/** Return transaction in txOut, and if it was found inside a block, its hash is placed in hashBlock */
|
||||||
bool GetTransaction(const uint256 &hash, CTransaction &txOut, const Consensus::Params& consensusParams, uint256 &hashBlock, bool fAllowSlow)
|
bool GetTransaction(const uint256 &hash, CTransactionRef &txOut, const Consensus::Params& consensusParams, uint256 &hashBlock, bool fAllowSlow)
|
||||||
{
|
{
|
||||||
CBlockIndex *pindexSlow = NULL;
|
CBlockIndex *pindexSlow = NULL;
|
||||||
|
|
||||||
|
@ -993,7 +993,7 @@ bool GetTransaction(const uint256 &hash, CTransaction &txOut, const Consensus::P
|
||||||
CTransactionRef ptx = mempool.get(hash);
|
CTransactionRef ptx = mempool.get(hash);
|
||||||
if (ptx)
|
if (ptx)
|
||||||
{
|
{
|
||||||
txOut = *ptx;
|
txOut = ptx;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1012,7 +1012,7 @@ bool GetTransaction(const uint256 &hash, CTransaction &txOut, const Consensus::P
|
||||||
return error("%s: Deserialize or I/O error - %s", __func__, e.what());
|
return error("%s: Deserialize or I/O error - %s", __func__, e.what());
|
||||||
}
|
}
|
||||||
hashBlock = header.GetHash();
|
hashBlock = header.GetHash();
|
||||||
if (txOut.GetHash() != hash)
|
if (txOut->GetHash() != hash)
|
||||||
return error("%s: txid mismatch", __func__);
|
return error("%s: txid mismatch", __func__);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1035,7 +1035,7 @@ bool GetTransaction(const uint256 &hash, CTransaction &txOut, const Consensus::P
|
||||||
if (ReadBlockFromDisk(block, pindexSlow, consensusParams)) {
|
if (ReadBlockFromDisk(block, pindexSlow, consensusParams)) {
|
||||||
for (const auto& tx : block.vtx) {
|
for (const auto& tx : block.vtx) {
|
||||||
if (tx->GetHash() == hash) {
|
if (tx->GetHash() == hash) {
|
||||||
txOut = *tx;
|
txOut = tx;
|
||||||
hashBlock = pindexSlow->GetBlockHash();
|
hashBlock = pindexSlow->GetBlockHash();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -276,7 +276,7 @@ bool IsInitialBlockDownload();
|
||||||
*/
|
*/
|
||||||
std::string GetWarnings(const std::string& strFor);
|
std::string GetWarnings(const std::string& strFor);
|
||||||
/** Retrieve a transaction (from memory pool, or from disk, if possible) */
|
/** Retrieve a transaction (from memory pool, or from disk, if possible) */
|
||||||
bool GetTransaction(const uint256 &hash, CTransaction &tx, const Consensus::Params& params, uint256 &hashBlock, bool fAllowSlow = false);
|
bool GetTransaction(const uint256 &hash, CTransactionRef &tx, const Consensus::Params& params, uint256 &hashBlock, bool fAllowSlow = false);
|
||||||
/** Find the best known block, and make it the tip of the block chain */
|
/** Find the best known block, and make it the tip of the block chain */
|
||||||
bool ActivateBestChain(CValidationState& state, const CChainParams& chainparams, const CBlock* pblock = NULL);
|
bool ActivateBestChain(CValidationState& state, const CChainParams& chainparams, const CBlock* pblock = NULL);
|
||||||
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams);
|
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams);
|
||||||
|
|
Loading…
Add table
Reference in a new issue