Example #1
0
def get_synced_accounts(stub, accounts):
    block_count = stub.GetLedgerInfo(Empty()).block_count
    synced = {a: False for a in accounts}
    while not any(synced.values()):
        print(".", end="", flush=True)
        for a in synced:
            request = mobilecoind_api_pb2.GetMonitorStatusRequest(monitor_id=a)
            monitor_block = stub.GetMonitorStatus(request).status.next_block
            if monitor_block == block_count:
                synced[a] = True
    return {a for a in synced if synced[a] == True}
Example #2
0
def wait_for_accounts_sync(stub, accounts, wait_secs):
    print("accounts = ", accounts[0])
    block_count = stub.GetLedgerInfo(Empty()).block_count
    synced_ids = {a: False for a in accounts}
    while not all(synced_ids.values()):
        print(".", end="", flush=True)
        for a in synced_ids:
            request = mobilecoind_api_pb2.GetMonitorStatusRequest(monitor_id=a)
            monitor_block = stub.GetMonitorStatus(request).status.next_block
            if monitor_block == block_count:
                synced_ids[a] = True
        time.sleep(wait_secs)
    print("All accounts synced")
Example #3
0
def wait_for_accounts_sync(stub, accounts, wait_secs):
    logging.debug("accounts = %s", accounts[0])
    block_count = stub.GetLedgerInfo(Empty()).block_count
    synced_ids = {a: False for a in accounts}
    while not all(synced_ids.values()):
        logging.info("Waiting for accounts to sync")
        for a in synced_ids:
            request = mobilecoind_api_pb2.GetMonitorStatusRequest(monitor_id=a)
            monitor_block = stub.GetMonitorStatus(request).status.next_block
            if monitor_block == block_count:
                synced_ids[a] = True
        time.sleep(wait_secs)
    logging.info("All accounts synced")
Example #4
0
 def get_monitor_status(self, monitor_id):
     """ Returns a status report for a monitor process.
     """
     request = api.GetMonitorStatusRequest(monitor_id=monitor_id)
     response = self.stub.GetMonitorStatus(request)
     return response.status
Example #5
0
if __name__ == '__main__':
    args = parse_args()
    logging.debug(args)

    stub = connect(args.mobilecoind_host, args.mobilecoind_port)
    block_count = stub.GetLedgerInfo(Empty()).block_count
    total = 0
    for keyfile in sorted(
            filter(lambda x: x.endswith(".json"), os.listdir(args.key_dir))):
        logging.info("%s", keyfile)

        account_data = load_key_and_register(
            os.path.join(args.key_dir, keyfile), stub)

        # Get starting balance
        request = mobilecoind_api_pb2.GetMonitorStatusRequest(
            monitor_id=account_data.monitor_id)
        monitor_block = stub.GetMonitorStatus(request).status.next_block
        if block_count != monitor_block:
            logging.info("Account not synced")
        else:
            resp = stub.GetBalance(
                mobilecoind_api_pb2.GetBalanceRequest(
                    monitor_id=account_data.monitor_id))
            balance = resp.balance
            total += balance
            logging.info("Balance: %s", resp.balance)
            # Remove balances of 0 FIXME: MC-367 also from mobilecoind wallet
            if int(balance) == 0 and args.prune:
                os.remove(os.path.join(args.key_dir, keyfile))
    logging.info("Total balance of key collection: %s PicoMob", total)