Skip to content

Commit

Permalink
signet/miner: add --prefer-gbt-cli option
Browse files Browse the repository at this point in the history
  • Loading branch information
ajtowns committed Oct 2, 2022
1 parent 0094afe commit ae59f31
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions contrib/signet/miner
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,11 @@ def do_generate(args):

ultimate_target = nbits_to_target(int(args.nbits,16))

if args.prefer_gbt_cli is not None:
gbtcli = lambda *a, input=b"", **kwargs: bitcoin_cli(args.prefer_gbt_cli.split(" "), list(a), input=input, **kwargs)
else:
gbtcli = None

gen = Generate(multiminer=my_blocks, ultimate_target=ultimate_target, poisson=args.poisson, max_interval=args.max_interval,
standby_delay=args.standby_delay, backup_delay=args.backup_delay, set_block_time=args.set_block_time)

Expand Down Expand Up @@ -421,6 +426,23 @@ def do_generate(args):
# mine and submit
mined_blocks += 1
done = False

if gbtcli is not None:
# gbt via prefered bcli
tmpl = gen.gbt(gbtcli, bci["bestblockhash"], now)
if tmpl is not None:
logging.debug("Prefered GBT template: %s", tmpl)

# mine block
logging.debug("Mining block delta=%s start=%s mine=%s", seconds_to_hms(gen.mine_time-bestheader["time"]), gen.mine_time, gen.is_mine)
block = gen.mine(args.bcli, args.grind_cmd, tmpl, reward_spk)
if block is not None:
r = args.bcli("-stdin", "submitblock", input=block.serialize().hex().encode('utf8'))
if r is None or r == "":
done = True
else:
logging.warning("submitblock based on prefered template returned %r" % (r,))

if not done:
# gbt
tmpl = gen.gbt(args.bcli, bci["bestblockhash"], now)
Expand Down Expand Up @@ -519,6 +541,7 @@ def main():
generate.add_argument("--backup-delay", default=300, type=int, help="Seconds to delay before mining blocks reserved for other miners (default=300)")
generate.add_argument("--standby-delay", default=0, type=int, help="Seconds to delay before mining blocks (default=0)")
generate.add_argument("--max-interval", default=1800, type=int, help="Maximum interblock interval (seconds)")
generate.add_argument("--prefer-gbt-cli", default=None, type=str, help="Alternative bitcoin-cli invocation for getblocktemplate (optional)")

calibrate = cmds.add_parser("calibrate", help="Calibrate difficulty")
calibrate.set_defaults(fn=do_calibrate)
Expand Down

0 comments on commit ae59f31

Please sign in to comment.