mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-17 13:07:54 +02:00
JSON-RPC: Add 'sendrawtx' op, for sending pre-built TX's to network
This commit is contained in:
parent
7a99821377
commit
976c08b68a
3 changed files with 37 additions and 1 deletions
|
|
@ -2217,6 +2217,40 @@ Value getblock(const Array& params, bool fHelp)
|
|||
(params.size() > 1) ? params[1].get_obj() : emptyobj);
|
||||
}
|
||||
|
||||
Value sendrawtx(const Array& params, bool fHelp)
|
||||
{
|
||||
if (fHelp || params.size() < 1 || params.size() > 1)
|
||||
throw runtime_error(
|
||||
"sendrawtx <hex string>\n"
|
||||
"Submits raw transaction (serialized, hex-encoded) to local node and network.");
|
||||
|
||||
// parse hex string from parameter
|
||||
vector<unsigned char> txData(ParseHex(params[0].get_str()));
|
||||
CDataStream ssData(txData, SER_NETWORK, PROTOCOL_VERSION);
|
||||
CTransaction tx;
|
||||
|
||||
// deserialize binary data stream
|
||||
try {
|
||||
ssData >> tx;
|
||||
}
|
||||
catch (std::exception &e) {
|
||||
throw JSONRPCError(-22, "TX decode failed");
|
||||
}
|
||||
|
||||
// push to local node
|
||||
CTxDB txdb("r");
|
||||
if (!tx.AcceptToMemoryPool(txdb))
|
||||
throw JSONRPCError(-22, "TX rejected");
|
||||
|
||||
SyncWithWallets(tx, NULL, true);
|
||||
|
||||
// relay to network
|
||||
CInv inv(MSG_TX, tx.GetHash());
|
||||
RelayInventory(inv);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -2280,6 +2314,7 @@ static const CRPCCommand vRPCCommands[] =
|
|||
{ "listsinceblock", &listsinceblock, false },
|
||||
{ "dumpprivkey", &dumpprivkey, false },
|
||||
{ "importprivkey", &importprivkey, false },
|
||||
{ "sendrawtx", &sendrawtx, false },
|
||||
};
|
||||
|
||||
CRPCTable::CRPCTable()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue