コード例 #1
0
def test_endpointregistry(tester_chain, tester_events):
    account0 = tester.a0
    sender = address_encoder(account0)

    endpointregistry_path = get_contract_path('EndpointRegistry.sol')

    endpointregistry_compiled = _solidity.compile_contract(
        endpointregistry_path,
        "EndpointRegistry"
    )
    tester_chain.head_state.log_listeners.append(tester_events.append)
    endpointregistry_address = tester_chain.contract(
        endpointregistry_compiled['bin'],
        language='evm'
    )
    endpoint_registry = tester.ABIContract(
        tester_chain,
        endpointregistry_compiled['abi'],
        endpointregistry_address
    )

    endpoint_registry.registerEndpoint('127.0.0.1:4001')
    assert endpoint_registry.findAddressByEndpoint('127.0.0.1:4001') == sender
    assert endpoint_registry.findEndpointByAddress(sender) == b'127.0.0.1:4001'

    endpoint_registry.registerEndpoint('192.168.0.1:4002')
    assert endpoint_registry.findAddressByEndpoint('192.168.0.1:4002') == sender
    assert endpoint_registry.findEndpointByAddress(sender) == b'192.168.0.1:4002'

    assert len(tester_events) == 2

    event0 = event_decoder(tester_events[0], endpoint_registry.translator)
    event1 = event_decoder(tester_events[1], endpoint_registry.translator)
    assert event0['_event_type'] == b'AddressRegistered'
    assert event1['_event_type'] == b'AddressRegistered'
コード例 #2
0
def test_endpointregistry(tester_chain, tester_events):
    account0 = tester.a0
    sender = address_encoder(account0)

    endpointregistry_path = get_contract_path('EndpointRegistry.sol')

    endpointregistry_compiled = _solidity.compile_contract(
        endpointregistry_path, "EndpointRegistry")
    tester_chain.head_state.log_listeners.append(tester_events.append)
    endpointregistry_address = tester_chain.contract(
        endpointregistry_compiled['bin'], language='evm')
    endpoint_registry = tester.ABIContract(tester_chain,
                                           endpointregistry_compiled['abi'],
                                           endpointregistry_address)

    endpoint_registry.registerEndpoint('127.0.0.1:4001')
    assert endpoint_registry.findAddressByEndpoint('127.0.0.1:4001') == sender
    assert endpoint_registry.findEndpointByAddress(sender) == b'127.0.0.1:4001'

    endpoint_registry.registerEndpoint('192.168.0.1:4002')
    assert endpoint_registry.findAddressByEndpoint(
        '192.168.0.1:4002') == sender
    assert endpoint_registry.findEndpointByAddress(
        sender) == b'192.168.0.1:4002'

    assert len(tester_events) == 2

    event0 = event_decoder(tester_events[0], endpoint_registry.translator)
    event1 = event_decoder(tester_events[1], endpoint_registry.translator)
    assert event0['_event_type'] == b'AddressRegistered'
    assert event1['_event_type'] == b'AddressRegistered'
コード例 #3
0
def test_registry(tester_registry, tester_events, private_keys, tester_chain):
    privatekey0 = tester.k0

    token_address1 = tester_token_address(private_keys, 100, tester_chain, 0)
    token_address2 = tester_token_address(private_keys, 100, tester_chain, 1)
    unregistered_address = tester_token_address(private_keys, 100,
                                                tester_chain, 2)

    tester_chain.head_state.log_listeners.append(tester_events.append)

    contract_address1 = tester_registry.addToken(token_address1,
                                                 sender=privatekey0)
    channel_manager_address1 = tester_registry.channelManagerByToken(
        token_address1,
        sender=privatekey0,
    )
    assert channel_manager_address1 == contract_address1

    with pytest.raises(tester.TransactionFailed):
        tester_registry.addToken(token_address1, sender=privatekey0)

    contract_address2 = tester_registry.addToken(token_address2,
                                                 sender=privatekey0)
    channel_manager_address2 = tester_registry.channelManagerByToken(
        token_address2,
        sender=privatekey0,
    )
    assert channel_manager_address2 == contract_address2

    with pytest.raises(tester.TransactionFailed):
        tester_registry.channelManagerByToken(
            unregistered_address,
            sender=privatekey0,
        )

    addresses = tester_registry.tokenAddresses(sender=privatekey0)

    assert len(addresses) == 2
    assert addresses[0] == address_encoder(token_address1)
    assert addresses[1] == address_encoder(token_address2)

    assert len(tester_events) == 2

    event0 = event_decoder(tester_events[0], tester_registry.translator)
    event1 = event_decoder(tester_events[1], tester_registry.translator)

    assert event0['_event_type'] == b'TokenAdded'
    assert event0['token_address'] == address_encoder(token_address1)
    assert event0['channel_manager_address'] == contract_address1

    assert event1['_event_type'] == b'TokenAdded'
    assert event1['token_address'] == address_encoder(token_address2)
    assert event1['channel_manager_address'] == contract_address2
コード例 #4
0
def test_registry(tester_registry, tester_events, private_keys, tester_chain):
    privatekey0 = tester.k0

    token_address1 = tester_token_address(private_keys, 100, tester_chain, 0)
    token_address2 = tester_token_address(private_keys, 100, tester_chain, 1)
    unregistered_address = tester_token_address(private_keys, 100, tester_chain, 2)

    tester_chain.head_state.log_listeners.append(tester_events.append)

    contract_address1 = tester_registry.addToken(token_address1, sender=privatekey0)
    channel_manager_address1 = tester_registry.channelManagerByToken(
        token_address1,
        sender=privatekey0,
    )
    assert channel_manager_address1 == contract_address1

    with pytest.raises(tester.TransactionFailed):
        tester_registry.addToken(token_address1, sender=privatekey0)

    contract_address2 = tester_registry.addToken(token_address2, sender=privatekey0)
    channel_manager_address2 = tester_registry.channelManagerByToken(
        token_address2,
        sender=privatekey0,
    )
    assert channel_manager_address2 == contract_address2

    with pytest.raises(tester.TransactionFailed):
        tester_registry.channelManagerByToken(
            unregistered_address,
            sender=privatekey0,
        )

    addresses = tester_registry.tokenAddresses(sender=privatekey0)

    assert len(addresses) == 2
    assert addresses[0] == address_encoder(token_address1)
    assert addresses[1] == address_encoder(token_address2)

    assert len(tester_events) == 2

    event0 = event_decoder(tester_events[0], tester_registry.translator)
    event1 = event_decoder(tester_events[1], tester_registry.translator)

    assert event0['_event_type'] == b'TokenAdded'
    assert event0['token_address'] == address_encoder(token_address1)
    assert event0['channel_manager_address'] == contract_address1

    assert event1['_event_type'] == b'TokenAdded'
    assert event1['token_address'] == address_encoder(token_address2)
    assert event1['channel_manager_address'] == contract_address2
コード例 #5
0
def test_settle_event(
    settle_timeout,
    tester_registry_address,
    tester_chain,
    tester_events,
    tester_nettingcontracts,
):
    """ The event ChannelSettled is emitted when the channel is settled. """
    pkey0, _, nettingchannel = tester_nettingcontracts[0]

    nettingchannel.close(sender=pkey0)

    tester_chain.mine(number_of_blocks=settle_timeout + 1)

    previous_events = list(tester_events)
    tester_chain.head_state.log_listeners.append(tester_events.append)
    nettingchannel.settle(sender=pkey0)

    # settle + a transfer per participant
    assert len(previous_events) + 3 == len(tester_events)

    settle_event = event_decoder(tester_events[-1], nettingchannel.translator)
    assert settle_event == {
        '_event_type': b'ChannelSettled',
        'registry_address': address_encoder(tester_registry_address)
    }
コード例 #6
0
def test_channelnew_event(
        settle_timeout,
        tester_channelmanager,
        private_keys,
        tester_events):
    """ When a new channel is created the channel new event must be emitted. """

    pkey0 = private_keys[0]
    address0 = privatekey_to_address(pkey0)
    address1 = privatekey_to_address(private_keys[1])

    # pylint: disable=no-member
    netting_channel_address1_hex = tester_channelmanager.newChannel(
        address1,
        settle_timeout,
        sender=pkey0,
    )

    last_event = event_decoder(tester_events[-1], tester_channelmanager.translator)
    assert last_event == {
        '_event_type': b'ChannelNew',
        'netting_channel': netting_channel_address1_hex,
        'participant1': address_encoder(address0),
        'participant2': address_encoder(address1),
        'settle_timeout': settle_timeout,
    }
コード例 #7
0
def test_transfer_update_event(tester_channels, tester_events):
    """ The event TransferUpdated is emitted after a successful call to
    updateTransfer.
    """

    pkey0, pkey1, nettingchannel, channel0, channel1 = tester_channels[0]
    address1 = privatekey_to_address(pkey1)

    direct0 = make_direct_transfer_from_channel(
        channel0,
        channel1,
        amount=90,
        pkey=pkey0,
    )

    nettingchannel.close(sender=pkey0)
    previous_events = list(tester_events)

    direct0_hash = sha3(direct0.packed().data[:-65])
    nettingchannel.updateTransfer(
        direct0.nonce,
        direct0.transferred_amount,
        direct0.locksroot,
        direct0_hash,
        direct0.signature,
        sender=pkey1,
    )
    assert len(previous_events) + 1 == len(tester_events)

    last_event = event_decoder(tester_events[-1], nettingchannel.translator)
    assert last_event == {
        '_event_type': b'TransferUpdated',
        'node_address': address_encoder(address1),
    }
コード例 #8
0
def test_channelnew_event(
        settle_timeout,
        tester_channelmanager,
        private_keys,
        tester_events):
    """ When a new channel is created the channel new event must be emitted. """

    pkey0 = private_keys[0]
    address0 = privatekey_to_address(pkey0)
    address1 = privatekey_to_address(private_keys[1])

    # pylint: disable=no-member
    netting_channel_address1_hex = tester_channelmanager.newChannel(
        address1,
        settle_timeout,
        sender=pkey0,
    )

    last_event = event_decoder(tester_events[-1], tester_channelmanager.translator)
    assert last_event == {
        '_event_type': b'ChannelNew',
        'netting_channel': netting_channel_address1_hex,
        'participant1': address_encoder(address0),
        'participant2': address_encoder(address1),
        'settle_timeout': settle_timeout,
    }
コード例 #9
0
def test_deposit_events(
        private_keys,
        settle_timeout,
        tester_chain,
        tester_channelmanager,
        tester_token,
        tester_events):

    """ A deposit must emit the events Transfer and a ChannelNewBalance. """
    private_key = private_keys[0]
    address = privatekey_to_address(private_key)

    nettingchannel = new_nettingcontract(
        private_key,
        private_keys[1],
        tester_chain,
        tester_events.append,
        tester_channelmanager,
        settle_timeout,
    )

    initial_balance0 = tester_token.balanceOf(address, sender=private_key)
    deposit_amount = initial_balance0 // 10

    assert tester_token.approve(nettingchannel.address, deposit_amount, sender=private_key) is True
    assert nettingchannel.deposit(deposit_amount, sender=private_key) is True

    transfer_event = event_decoder(tester_events[-2], tester_token.translator)
    newbalance_event = event_decoder(tester_events[-1], nettingchannel.translator)

    assert transfer_event == {
        '_event_type': b'Transfer',
        '_from': address_encoder(address),
        '_to': nettingchannel.address,
        '_value': deposit_amount,
    }

    assert newbalance_event['_event_type'] == b'ChannelNewBalance'
    assert newbalance_event['token_address'] == address_encoder(tester_token.address)
    assert newbalance_event['participant'] == address_encoder(address)
    assert newbalance_event['balance'] == deposit_amount
コード例 #10
0
ファイル: test_deposit.py プロジェクト: yy18/raidenenv
def test_deposit_events(private_keys, settle_timeout, tester_chain,
                        tester_channelmanager, tester_token, tester_events):
    """ A deposit must emit the events Transfer and a ChannelNewBalance. """
    private_key = private_keys[0]
    address = privatekey_to_address(private_key)

    nettingchannel = new_nettingcontract(
        private_key,
        private_keys[1],
        tester_chain,
        tester_events.append,
        tester_channelmanager,
        settle_timeout,
    )

    initial_balance0 = tester_token.balanceOf(address, sender=private_key)
    deposit_amount = initial_balance0 // 10

    assert tester_token.approve(
        nettingchannel.address, deposit_amount, sender=private_key) is True
    assert nettingchannel.deposit(deposit_amount, sender=private_key) is True

    transfer_event = event_decoder(tester_events[-2], tester_token.translator)
    newbalance_event = event_decoder(tester_events[-1],
                                     nettingchannel.translator)

    assert transfer_event == {
        '_event_type': b'Transfer',
        '_from': address_encoder(address),
        '_to': nettingchannel.address,
        '_value': deposit_amount,
    }

    assert newbalance_event['_event_type'] == b'ChannelNewBalance'
    assert newbalance_event['token_address'] == address_encoder(
        tester_token.address)
    assert newbalance_event['participant'] == address_encoder(address)
    assert newbalance_event['balance'] == deposit_amount
コード例 #11
0
ファイル: test_close.py プロジェクト: youngqqcn/raiden
def test_close_event(tester_nettingcontracts, tester_events):
    """ The event ChannelClosed is emitted when close is called. """
    pkey0, _, nettingchannel = tester_nettingcontracts[0]
    address = privatekey_to_address(pkey0)

    previous_events = list(tester_events)
    nettingchannel.close(sender=pkey0)
    assert len(previous_events) + 1 == len(tester_events)

    close_event = event_decoder(tester_events[-1], nettingchannel.translator)
    assert close_event == {
        '_event_type': b'ChannelClosed',
        'closing_address': address_encoder(address),
    }
コード例 #12
0
def test_close_event(tester_chain, tester_nettingcontracts, tester_events):
    """ The event ChannelClosed is emitted when close is called. """
    pkey0, _, nettingchannel = tester_nettingcontracts[0]
    address = privatekey_to_address(pkey0)

    previous_events = list(tester_events)
    nettingchannel.close(sender=pkey0)
    assert len(previous_events) + 1 == len(tester_events)

    close_event = event_decoder(tester_events[-1], nettingchannel.translator)
    assert close_event == {
        '_event_type': b'ChannelClosed',
        'closing_address': address_encoder(address),
    }
コード例 #13
0
def test_settle_event(settle_timeout, tester_chain, tester_events, tester_nettingcontracts):
    """ The event ChannelSettled is emitted when the channel is settled. """
    pkey0, _, nettingchannel = tester_nettingcontracts[0]

    nettingchannel.close(sender=pkey0)

    tester_chain.mine(number_of_blocks=settle_timeout + 1)

    previous_events = list(tester_events)
    tester_chain.head_state.log_listeners.append(tester_events.append)
    nettingchannel.settle(sender=pkey0)

    # settle + a transfer per participant
    assert len(previous_events) + 3 == len(tester_events)

    settle_event = event_decoder(tester_events[-1], nettingchannel.translator)
    assert settle_event == {
        '_event_type': b'ChannelSettled',
    }
コード例 #14
0
def test_channeldeleted_event(
        settle_timeout,
        tester_channelmanager,
        tester_events,
        tester_nettingcontracts,
        tester_chain):
    """ A channel deleted event must be emmited when the channel is cleaned.

    This happens once a *new* channel with *the same parties* is created,
    overwritting the old one. This behavior may be unexpected due to the weird
    timing.
    """
    pkey0, pkey1, nettingchannel = tester_nettingcontracts[0]
    address0 = privatekey_to_address(pkey0)
    address1 = privatekey_to_address(pkey1)

    netting_channel_settled(
        tester_chain,
        nettingchannel,
        pkey0,
        settle_timeout,
    )

    tester_chain.head_state.log_listeners.append(tester_events.append)

    # old entry will be deleted when calling newChannel
    tester_channelmanager.newChannel(
        address1,
        settle_timeout,
        sender=pkey0,
    )

    channeldelete_event = event_decoder(tester_events[-2], tester_channelmanager.translator)
    assert channeldelete_event == {
        '_event_type': b'ChannelDeleted',
        'caller_address': address_encoder(address0),
        'partner': address_encoder(address1)
    }
コード例 #15
0
def test_channeldeleted_event(
        settle_timeout,
        tester_channelmanager,
        tester_events,
        tester_nettingcontracts,
        tester_chain):
    """ A channel deleted event must be emmited when the channel is cleaned.

    This happens once a *new* channel with *the same parties* is created,
    overwritting the old one. This behavior may be unexpected due to the weird
    timing.
    """
    pkey0, pkey1, nettingchannel = tester_nettingcontracts[0]
    address0 = privatekey_to_address(pkey0)
    address1 = privatekey_to_address(pkey1)

    netting_channel_settled(
        tester_chain,
        nettingchannel,
        pkey0,
        settle_timeout,
    )

    tester_chain.head_state.log_listeners.append(tester_events.append)

    # old entry will be deleted when calling newChannel
    tester_channelmanager.newChannel(
        address1,
        settle_timeout,
        sender=pkey0,
    )

    channeldelete_event = event_decoder(tester_events[-2], tester_channelmanager.translator)
    assert channeldelete_event == {
        '_event_type': b'ChannelDeleted',
        'caller_address': address_encoder(address0),
        'partner': address_encoder(address1)
    }
コード例 #16
0
def test_transfer_update_event(tester_chain, tester_channels, tester_events):
    """ The event TransferUpdated is emitted after a successful call to
    updateTransfer.
    """

    pkey0, pkey1, nettingchannel, channel0, channel1 = tester_channels[0]
    address1 = privatekey_to_address(pkey1)

    block_number = tester_chain.block.number
    direct0 = make_direct_transfer_from_channel(
        block_number,
        channel0,
        channel1,
        amount=90,
        pkey=pkey0,
    )

    nettingchannel.close(sender=pkey0)
    previous_events = list(tester_events)

    direct0_hash = sha3(direct0.packed().data[:-65])
    nettingchannel.updateTransfer(
        direct0.nonce,
        direct0.transferred_amount,
        direct0.locksroot,
        direct0_hash,
        direct0.signature,
        sender=pkey1,
    )
    assert len(previous_events) + 1 == len(tester_events)

    last_event = event_decoder(tester_events[-1], nettingchannel.translator)
    assert last_event == {
        '_event_type': b'TransferUpdated',
        'node_address': address_encoder(address1),
    }