mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-13 12:33:42 +02:00
Make claimpegin fail in the case of a double claim
Currently it will commit to the transaction without it being able to enter the mempool. This makes the block creation code include the tx into the block and create an invalid block.
This commit is contained in:
parent
af2264665e
commit
48a82fa993
1 changed files with 9 additions and 0 deletions
|
|
@ -5317,6 +5317,15 @@ UniValue claimpegin(const JSONRPCRequest& request)
|
|||
throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX decode failed");
|
||||
}
|
||||
|
||||
// To check if it's not double spending an existing pegin UTXO, we check mempool acceptance.
|
||||
CValidationState acceptState;
|
||||
bool accepted = ::AcceptToMemoryPool(mempool, acceptState, MakeTransactionRef(mtx), nullptr /* pfMissingInputs */,
|
||||
nullptr /* plTxnReplaced */, false /* bypass_limits */, maxTxFee, true /* test_accept */);
|
||||
if (!accepted) {
|
||||
std::string strError = strprintf("Error: The transaction was rejected! Reason given: %s", FormatStateMessage(acceptState));
|
||||
throw JSONRPCError(RPC_WALLET_ERROR, strError);
|
||||
}
|
||||
|
||||
// Send it
|
||||
CValidationState state;
|
||||
mapValue_t mapValue;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue