@@ -306,6 +306,17 @@ class Generate:
306306
307307 return tmpl
308308
309+ def mine (self , bcli , grind_cmd , tmpl , reward_spk ):
310+ psbt = generate_psbt (tmpl , reward_spk , blocktime = self .mine_time )
311+ input_stream = os .linesep .join ([psbt , "true" , "ALL" ]).encode ('utf8' )
312+ psbt_signed = json .loads (bcli ("-stdin" , "walletprocesspsbt" , input = input_stream ))
313+ if not psbt_signed .get ("complete" ,False ):
314+ logging .debug ("Generated PSBT: %s" % (psbt ,))
315+ sys .stderr .write ("PSBT signing failed\n " )
316+ return None
317+ block , signet_solution = decode_psbt (psbt_signed ["psbt" ])
318+ return finish_block (block , signet_solution , grind_cmd )
319+
309320def do_generate (args ):
310321 if args .max_blocks is not None :
311322 if args .ongoing :
@@ -417,15 +428,9 @@ def do_generate(args):
417428 # mine block
418429 logging .debug ("Mining block delta=%s start=%s mine=%s" , seconds_to_hms (gen .mine_time - bestheader ["time" ]), gen .mine_time , gen .is_mine )
419430 mined_blocks += 1
420- psbt = generate_psbt (tmpl , reward_spk , blocktime = gen .mine_time )
421- input_stream = os .linesep .join ([psbt , "true" , "ALL" ]).encode ('utf8' )
422- psbt_signed = json .loads (args .bcli ("-stdin" , "walletprocesspsbt" , input = input_stream ))
423- if not psbt_signed .get ("complete" ,False ):
424- logging .debug ("Generated PSBT: %s" % (psbt ,))
425- sys .stderr .write ("PSBT signing failed\n " )
431+ block = gen .mine (args .bcli , args .grind_cmd , tmpl , reward_spk )
432+ if block is None :
426433 return 1
427- block , signet_solution = decode_psbt (psbt_signed ["psbt" ])
428- block = finish_block (block , signet_solution , args .grind_cmd )
429434
430435 # submit block
431436 r = args .bcli ("-stdin" , "submitblock" , input = block .serialize ().hex ().encode ('utf8' ))
0 commit comments