diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index c39809f98e..dbf5933b97 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -2483,6 +2483,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; @@ -2495,7 +2497,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 b95ff89220..77cbe79cfa 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -5886,6 +5886,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; @@ -5897,7 +5899,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);