def main(port, force=False): server = Server(f'http://127.0.0.1:{port}') last_block = None while True: try: info = server.getblockchaininfo() trace(info) if info['block'] != last_block: needs_solve = (last_block is not None) or force trace('needs_solve?', needs_solve) if needs_solve: block = server.getblockinfo(info['block']) sol = solve(block) trace('sol:', sol) if sol: trace('submit') r = server.submit(sol['block'], sol['task_sol_fn'], sol['puzzle_sol_fn']) trace(r) last_block = info['block'] except: trace(traceback.format_exc()) pass trace('idle') time.sleep(random.randint(15, 25))
default=None, help=".desc file for block puzzle") args = parser.parse_args() try: args.port = int(args.port) except ValueError: parser.error('Port must be an integer.') server = Server(f'http://{args.bind}:{args.port}') # Handle getblockinfo if args.subcmd == 'getblockinfo': bi = None if args.block is None: bi = server.getblockinfo() else: # Allow commands like `./lambda-cli.py getblockinfo block` # i.e. with block taken as item rather than item if not args.block.isdecimal(): args.subitem = args.item args.item = args.block args.block = None bi = server.getblockinfo( ) if args.block is None else server.getblockinfo(args.block) res = None if args.item is None: res = bi else: if args.subitem is None: