Changeset View
Changeset View
Standalone View
Standalone View
src/rpc/rawtransaction.cpp
Show First 20 Lines • Show All 278 Lines • ▼ Show 20 Lines | if (request.fHelp || | ||||
"hex-encoded data for the proof.\n"); | "hex-encoded data for the proof.\n"); | ||||
} | } | ||||
std::set<TxId> setTxIds; | std::set<TxId> setTxIds; | ||||
TxId oneTxId; | TxId oneTxId; | ||||
UniValue txids = request.params[0].get_array(); | UniValue txids = request.params[0].get_array(); | ||||
for (unsigned int idx = 0; idx < txids.size(); idx++) { | for (unsigned int idx = 0; idx < txids.size(); idx++) { | ||||
const UniValue &utxid = txids[idx]; | const UniValue &utxid = txids[idx]; | ||||
if (utxid.get_str().length() != 64 || !IsHex(utxid.get_str())) { | TxId txid(ParseHashV(utxid, "txid")); | ||||
throw JSONRPCError(RPC_INVALID_PARAMETER, | |||||
std::string("Invalid txid ") + utxid.get_str()); | |||||
} | |||||
TxId txid(uint256S(utxid.get_str())); | |||||
if (setTxIds.count(txid)) { | if (setTxIds.count(txid)) { | ||||
throw JSONRPCError( | throw JSONRPCError( | ||||
RPC_INVALID_PARAMETER, | RPC_INVALID_PARAMETER, | ||||
std::string("Invalid parameter, duplicated txid: ") + | std::string("Invalid parameter, duplicated txid: ") + | ||||
utxid.get_str()); | utxid.get_str()); | ||||
} | } | ||||
setTxIds.insert(txid); | setTxIds.insert(txid); | ||||
oneTxId = txid; | oneTxId = txid; | ||||
} | } | ||||
CBlockIndex *pblockindex = nullptr; | CBlockIndex *pblockindex = nullptr; | ||||
BlockHash hashBlock; | BlockHash hashBlock; | ||||
if (!request.params[1].isNull()) { | if (!request.params[1].isNull()) { | ||||
LOCK(cs_main); | LOCK(cs_main); | ||||
hashBlock = BlockHash::fromHex(request.params[1].get_str()); | hashBlock = BlockHash(ParseHashV(request.params[1], "blockhash")); | ||||
pblockindex = LookupBlockIndex(hashBlock); | pblockindex = LookupBlockIndex(hashBlock); | ||||
if (!pblockindex) { | if (!pblockindex) { | ||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Block not found"); | throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Block not found"); | ||||
} | } | ||||
} else { | } else { | ||||
LOCK(cs_main); | LOCK(cs_main); | ||||
// Loop through txids and try to find which block they're in. Exit loop | // Loop through txids and try to find which block they're in. Exit loop | ||||
// once a block is found. | // once a block is found. | ||||
▲ Show 20 Lines • Show All 1,692 Lines • Show Last 20 Lines |