@@ -306,6 +306,17 @@ class Generate:
306
306
307
307
return tmpl
308
308
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
+
309
320
def do_generate (args ):
310
321
if args .max_blocks is not None :
311
322
if args .ongoing :
@@ -417,15 +428,9 @@ def do_generate(args):
417
428
# mine block
418
429
logging .debug ("Mining block delta=%s start=%s mine=%s" , seconds_to_hms (gen .mine_time - bestheader ["time" ]), gen .mine_time , gen .is_mine )
419
430
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 :
426
433
return 1
427
- block , signet_solution = decode_psbt (psbt_signed ["psbt" ])
428
- block = finish_block (block , signet_solution , args .grind_cmd )
429
434
430
435
# submit block
431
436
r = args .bcli ("-stdin" , "submitblock" , input = block .serialize ().hex ().encode ('utf8' ))
0 commit comments