Source code for microraiden.test.utils.client

import logging
from typing import List

from eth_utils import to_checksum_address

from microraiden.client import Channel
from microraiden import Client
from microraiden.utils import privkey_to_addr, sign_close


log = logging.getLogger(__name__)


[docs]def close_all_channels(client: Client): close_events = [c.close() for c in client.channels if c.state == Channel.State.open] assert all(close_events)
[docs]def close_channel_cooperatively( channel: Channel, privkey_receiver: str, contract_address: str, balance: int=None ): if balance is not None: channel.update_balance(balance) closing_sig = sign_close( privkey_receiver, channel.sender, channel.block, channel.balance, contract_address ) assert channel.close_cooperatively(closing_sig)
[docs]def close_all_channels_cooperatively( client: Client, private_keys: List[str], contract_address: str, balance: int=None ): addresses_to_keys = { to_checksum_address(privkey_to_addr(private_key)): private_key for private_key in private_keys } client.sync_channels() closable_channels = [c for c in client.channels if c.state != Channel.State.closed] log.info('Closing {} channels.'.format(len(closable_channels))) for channel in closable_channels: private_key = addresses_to_keys.get(to_checksum_address(channel.receiver)) if private_key is not None: close_channel_cooperatively(channel, private_key, contract_address, balance)