Skip to content

Commit 3aa1d9f

Browse files
committed
Give more descriptive error for non-WSH(OP_TRUE) block generation
1 parent ed03bfc commit 3aa1d9f

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

src/rpc/mining.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,13 @@ UniValue generateBlocks(std::shared_ptr<CReserveScript> coinbaseScript, int nGen
142142
}
143143
}
144144

145-
// Fill out block witness if dynamic federation is enabled
146-
// since we are assuming WSH(OP_TRUE)
147-
if (!pblock->m_dynafed_params.IsNull()) {
148-
CScript op_true(OP_TRUE);
145+
// Handle OP_TRUE m_signblockscript case
146+
CScript op_true(OP_TRUE);
147+
if (pblock->m_dynafed_params.m_current.m_signblockscript ==
148+
GetScriptForDestination(WitnessV0ScriptHash(op_true))) {
149149
pblock->m_signblock_witness.stack.push_back(std::vector<unsigned char>(op_true.begin(), op_true.end()));
150+
} else if (!pblock->m_dynafed_params.IsNull()) {
151+
throw JSONRPCError(RPC_MISC_ERROR, "Unable to fill out dynamic federation signblockscript witness, are you sure it's WSH(OP_TRUE)?");
150152
}
151153

152154
std::shared_ptr<const CBlock> shared_pblock = std::make_shared<const CBlock>(*pblock);

0 commit comments

Comments
 (0)