Skip to content

Commit

Permalink
contrib: fix signet miner (sighash mismatch)
Browse files Browse the repository at this point in the history
PSBT signing was changed to use SIGHASH_DEFAULT by default in #22514.
The signet miner script sets the sighash type of the created PSBT to
SIGHASH_ALL, hence this leads to a sighash mismatch when the
`walletprocesspsbt` RPC is called. Fix this by explicitly passing the
correct sighash type.

Note that the same change was needed in one of our functional tests,
see commit d399266.

Reported by gruve-p.

Github-Pull: #24553
Rebased-From: 12cc020
  • Loading branch information
theStack authored and jonatack committed Mar 31, 2022
1 parent 235b042 commit eaa0419
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions contrib/signet/miner
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import base64
import json
import logging
import math
import os.path
import os
import re
import struct
import sys
Expand Down Expand Up @@ -493,10 +493,11 @@ def do_generate(args):
logging.debug("Mining block delta=%s start=%s mine=%s", seconds_to_hms(mine_time-bestheader["time"]), mine_time, is_mine)
mined_blocks += 1
psbt = generate_psbt(tmpl, reward_spk, blocktime=mine_time)
psbt_signed = json.loads(args.bcli("-stdin", "walletprocesspsbt", input=psbt.encode('utf8')))
input_stream = os.linesep.join([psbt, "true", "ALL"]).encode('utf8')
psbt_signed = json.loads(args.bcli("-stdin", "walletprocesspsbt", input=input_stream))
if not psbt_signed.get("complete",False):
logging.debug("Generated PSBT: %s" % (psbt,))
sys.stderr.write("PSBT signing failed")
sys.stderr.write("PSBT signing failed\n")
return 1
block, signet_solution = do_decode_psbt(psbt_signed["psbt"])
block = finish_block(block, signet_solution, args.grind_cmd)
Expand Down

0 comments on commit eaa0419

Please sign in to comment.