diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index fd996193b4..aa9a3130f4 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -2462,6 +2462,8 @@ UniValue rawblindrawtransaction(const JSONRPCRequest& request) "Invalid parameter: one (potentially empty) input asset blind for each input must be provided"); } + const auto& fedpegscripts = GetValidFedpegScripts(chainActive.Tip(), Params().GetConsensus(), true /* nextblock_validation */); + std::vector input_amounts; std::vector input_blinds; std::vector input_asset_blinds; @@ -2474,7 +2476,7 @@ UniValue rawblindrawtransaction(const JSONRPCRequest& request) // Special handling for pegin inputs: no blinds and explicit amount/asset. if (tx.vin[nIn].m_is_pegin) { std::string err; - if (tx.witness.vtxinwit.size() != tx.vin.size() || !IsValidPeginWitness(tx.witness.vtxinwit[nIn].m_pegin_witness, tx.vin[nIn].prevout, err, false)) { + if (tx.witness.vtxinwit.size() != tx.vin.size() || !IsValidPeginWitness(tx.witness.vtxinwit[nIn].m_pegin_witness, fedpegscripts, tx.vin[nIn].prevout, err, false)) { throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Transaction contains invalid peg-in input: %s", err)); } CTxOut pegin_output = GetPeginOutputFromWitness(tx.witness.vtxinwit[nIn].m_pegin_witness); diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index a8bef5d7ef..da73bfb314 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -5891,6 +5891,8 @@ UniValue blindrawtransaction(const JSONRPCRequest& request) LOCK(pwallet->cs_wallet); + const auto& fedpegscripts = GetValidFedpegScripts(chainActive.Tip(), Params().GetConsensus(), true /* nextblock_validation */); + std::vector input_blinds; std::vector input_asset_blinds; std::vector input_assets; @@ -5902,7 +5904,7 @@ UniValue blindrawtransaction(const JSONRPCRequest& request) // Special handling for pegin inputs: no blinds and explicit amount/asset. if (tx.vin[nIn].m_is_pegin) { std::string err; - if (tx.witness.vtxinwit.size() != tx.vin.size() || !IsValidPeginWitness(tx.witness.vtxinwit[nIn].m_pegin_witness, prevout, err, false)) { + if (tx.witness.vtxinwit.size() != tx.vin.size() || !IsValidPeginWitness(tx.witness.vtxinwit[nIn].m_pegin_witness, fedpegscripts, prevout, err, false)) { throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Transaction contains invalid peg-in input: %s", err)); } CTxOut pegin_output = GetPeginOutputFromWitness(tx.witness.vtxinwit[nIn].m_pegin_witness);