Example #1
0
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))
Example #2
0
                          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: