示例#1
0
def pyethapp_event_to_state_change(pyethapp_event):  # pylint: disable=too-many-return-statements
    contract_address = pyethapp_event.originating_contract
    event = pyethapp_event.event_data

    # Raiden uses the binary representation of address internally, pyethapp
    # keeps the addresses in hex representation inside the events, so all
    # addresses inside the event_data must be decoded.

    if event['_event_type'] == 'TokenAdded':
        return ContractReceiveTokenAdded(
            contract_address,
            address_decoder(event['token_address']),
            address_decoder(event['channel_manager_address']),
        )

    elif event['_event_type'] == 'ChannelNew':
        return ContractReceiveNewChannel(
            contract_address,
            address_decoder(event['netting_channel']),
            address_decoder(event['participant1']),
            address_decoder(event['participant2']),
            event['settle_timeout'],
        )

    elif event['_event_type'] == 'ChannelNewBalance':
        return ContractReceiveBalance(
            contract_address,
            address_decoder(event['token_address']),
            address_decoder(event['participant']),
            event['balance'],
            event['block_number'],
        )

    elif event['_event_type'] == 'ChannelClosed':
        return ContractReceiveClosed(
            contract_address,
            address_decoder(event['closing_address']),
            event['block_number'],
        )

    elif event['_event_type'] == 'ChannelSettled':
        return ContractReceiveSettled(
            contract_address,
            event['block_number'],
        )

    elif event['_event_type'] == 'ChannelSecretRevealed':
        return ContractReceiveWithdraw(
            contract_address,
            event['secret'],
            address_decoder(event['receiver_address']),
        )

    else:
        return None
示例#2
0
def event_to_state_change(event):  # pylint: disable=too-many-return-statements
    contract_address = event.originating_contract
    event = event.event_data

    # Note: All addresses inside the event_data must be decoded.

    if event['_event_type'] == 'TokenAdded':
        result = ContractReceiveTokenAdded(
            contract_address,
            address_decoder(event['token_address']),
            address_decoder(event['channel_manager_address']),
        )

    elif event['_event_type'] == 'ChannelNew':
        result = ContractReceiveNewChannel(
            contract_address,
            address_decoder(event['netting_channel']),
            address_decoder(event['participant1']),
            address_decoder(event['participant2']),
            event['settle_timeout'],
        )

    elif event['_event_type'] == 'ChannelNewBalance':
        result = ContractReceiveBalance(
            contract_address,
            address_decoder(event['token_address']),
            address_decoder(event['participant']),
            event['balance'],
            event['block_number'],
        )

    elif event['_event_type'] == 'ChannelClosed':
        result = ContractReceiveClosed(
            contract_address,
            address_decoder(event['closing_address']),
            event['block_number'],
        )

    elif event['_event_type'] == 'ChannelSettled':
        result = ContractReceiveSettled(
            contract_address,
            event['block_number'],
        )

    elif event['_event_type'] == 'ChannelSecretRevealed':
        result = ContractReceiveWithdraw(
            contract_address,
            event['secret'],
            address_decoder(event['receiver_address']),
        )

    else:
        result = None

    return result