def populate_token_network_random(token_network_model: TokenNetwork, private_keys: List[str]) -> None: # seed for pseudo-randomness from config constant, that changes from time to time random.seed(NUMBER_OF_CHANNELS) for channel_id_int in range(NUMBER_OF_CHANNELS): channel_id = ChannelID(channel_id_int) private_key1, private_key2 = random.sample(private_keys, 2) address1 = Address(private_key_to_address(private_key1)) address2 = Address(private_key_to_address(private_key2)) settle_timeout = 15 token_network_model.handle_channel_opened_event( channel_id, address1, address2, settle_timeout) # deposit to channels deposit1 = TokenAmount(random.randint(0, 1000)) deposit2 = TokenAmount(random.randint(0, 1000)) address1, address2 = token_network_model.channel_id_to_addresses[ channel_id] token_network_model.handle_channel_new_deposit_event( channel_id, address1, deposit1) token_network_model.handle_channel_new_deposit_event( channel_id, address2, deposit2) token_network_model.handle_channel_balance_update_message( UpdatePFS( canonical_identifier=CanonicalIdentifier( chain_identifier=ChainID(1), channel_identifier=channel_id, token_network_address=TokenNetworkAddressBytes( decode_hex(token_network_model.address)), ), updating_participant=decode_hex(address1), other_participant=decode_hex(address2), updating_nonce=Nonce(1), other_nonce=Nonce(1), updating_capacity=deposit1, other_capacity=deposit2, reveal_timeout=2, mediation_fee=FeeAmount(0), )) token_network_model.handle_channel_balance_update_message( UpdatePFS( canonical_identifier=CanonicalIdentifier( chain_identifier=ChainID(1), channel_identifier=channel_id, token_network_address=TokenNetworkAddressBytes( decode_hex(token_network_model.address)), ), updating_participant=decode_hex(address2), other_participant=decode_hex(address1), updating_nonce=Nonce(2), other_nonce=Nonce(1), updating_capacity=deposit2, other_capacity=deposit1, reveal_timeout=2, mediation_fee=FeeAmount(0), ))
def test_pfs_rejects_capacity_update_with_wrong_token_network_address( pathfinding_service_web3_mock: PathfindingService, ): setup_channel(pathfinding_service_web3_mock) message = get_updatepfs_message( token_network_address=TokenNetworkAddressBytes(decode_hex("0x" + "1" * 40)), updating_participant=PRIVATE_KEY_1_ADDRESS, other_participant=PRIVATE_KEY_2_ADDRESS, privkey_signer=PRIVATE_KEY_1, ) with pytest.raises(InvalidCapacityUpdate) as exinfo: pathfinding_service_web3_mock.on_pfs_update(message) assert "unknown token network" in str(exinfo.value)
def test_pfs_rejects_capacity_update_with_wrong_token_network_address( pathfinding_service_web3_mock, ): pathfinding_service_web3_mock.chain_id = ChainID(1) token_network = TokenNetwork( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS) pathfinding_service_web3_mock.token_networks[ token_network.address] = token_network message = get_updatepfs_message( token_network_address=TokenNetworkAddressBytes( decode_hex("0x" + "1" * 40)), updating_participant=private_key_to_address(PRIVAT_KEY_EXAMPLE_1), other_participant=private_key_to_address(PRIVAT_KEY_EXAMPLE_2), privkey_signer=PRIVAT_KEY_EXAMPLE_1, ) with pytest.raises(InvalidCapacityUpdate) as exinfo: pathfinding_service_web3_mock.on_pfs_update(message) assert "unknown token network" in str(exinfo.value)
def populate_token_network(token_network: TokenNetwork, addresses: List[Address], channel_descriptions: List): for ( channel_id, ( p1_index, p1_deposit, p1_capacity, _p1_fee, p1_reveal_timeout, p2_index, p2_deposit, p2_capacity, _p2_fee, p2_reveal_timeout, settle_timeout, ), ) in enumerate(channel_descriptions): token_network.handle_channel_opened_event( ChannelID(channel_id), addresses[p1_index], addresses[p2_index], settle_timeout=settle_timeout, ) token_network.handle_channel_new_deposit_event( ChannelID(channel_id), addresses[p1_index], p1_deposit) token_network.handle_channel_new_deposit_event( ChannelID(channel_id), addresses[p2_index], p2_deposit) token_network.handle_channel_balance_update_message( UpdatePFS( canonical_identifier=CanonicalIdentifier( chain_identifier=ChainID(1), channel_identifier=ChannelID(channel_id), token_network_address=TokenNetworkAddressBytes( decode_hex(token_network.address)), ), updating_participant=decode_hex(addresses[p1_index]), other_participant=decode_hex(addresses[p2_index]), updating_nonce=Nonce(1), other_nonce=Nonce(1), updating_capacity=p1_capacity, other_capacity=p2_capacity, reveal_timeout=p1_reveal_timeout, mediation_fee=FeeAmount(0), )) token_network.handle_channel_balance_update_message( UpdatePFS( canonical_identifier=CanonicalIdentifier( chain_identifier=ChainID(1), channel_identifier=ChannelID(channel_id), token_network_address=TokenNetworkAddressBytes( decode_hex(token_network.address)), ), updating_participant=decode_hex(addresses[p2_index]), other_participant=decode_hex(addresses[p1_index]), updating_nonce=Nonce(2), other_nonce=Nonce(1), updating_capacity=p2_capacity, other_capacity=p1_capacity, reveal_timeout=p2_reveal_timeout, mediation_fee=FeeAmount(0), ))
from raiden.utils import CanonicalIdentifier from raiden.utils.signer import LocalSigner from raiden.utils.typing import ( ChainID, ChannelID, FeeAmount, Nonce, TokenAmount, TokenNetworkAddress as TokenNetworkAddressBytes, ) from raiden_libs.types import Address, TokenNetworkAddress from raiden_libs.utils import private_key_to_address DEFAULT_TOKEN_NETWORK_ADDRESS = TokenNetworkAddress( "0x6e46B62a245D9EE7758B8DdCCDD1B85fF56B9Bc9") DEFAULT_TOKEN_NETWORK_ADDRESS_BYTES = TokenNetworkAddressBytes( decode_hex(DEFAULT_TOKEN_NETWORK_ADDRESS)) PRIVAT_KEY_EXAMPLE_1 = bytes([1] * 32) PRIVAT_KEY_EXAMPLE_2 = bytes([2] * 32) PRIVAT_KEY_EXAMPLE_3 = bytes([3] * 32) def get_updatepfs_message( updating_participant: Address, other_participant: Address, chain_identifier=ChainID(1), channel_identifier=ChannelID(0), token_network_address: TokenNetworkAddressBytes = DEFAULT_TOKEN_NETWORK_ADDRESS_BYTES, updating_nonce=Nonce(1), other_nonce=Nonce(0), updating_capacity=TokenAmount(90),