Beispiel #1
0
def test_get_token_network_registry_by_token_network_address():
    test_state = factories.make_chain_state(number_of_channels=1)
    assert (views.get_token_network_registry_by_token_network_address(
        chain_state=test_state.chain_state,
        token_network_address=factories.make_address()) is None)
    assert (views.get_token_network_registry_by_token_network_address(
        chain_state=test_state.chain_state,
        token_network_address=test_state.token_address) is None)
    assert (views.get_token_network_registry_by_token_network_address(
        chain_state=test_state.chain_state,
        token_network_address=test_state.token_network_address,
    ).address == test_state.token_network_registry_address)
Beispiel #2
0
def test_get_token_network_registry_by_token_network_address_is_none(chain_state):
    assert (
        get_token_network_registry_by_token_network_address(
            chain_state=chain_state, token_network_address=factories.make_address()
        )
        is None
    )
Beispiel #3
0
    def __init__(self, raiden: "RaidenService", token_network_address: TokenNetworkAddress):
        self.raiden = raiden
        chain_state = views.state_from_raiden(raiden)
        token_network_state = views.get_token_network_by_address(
            chain_state, token_network_address
        )
        token_network_registry = views.get_token_network_registry_by_token_network_address(
            chain_state, token_network_address
        )

        assert token_network_state
        assert token_network_registry

        # TODO:
        # - Add timeout for transaction polling, used to overwrite the RaidenAPI
        # defaults
        # - Add a proper selection strategy (#576)
        self.funds = 0
        self.initial_channel_target = 0
        self.joinable_funds_target = 0.0

        self.raiden = raiden
        self.registry_address = token_network_registry.address
        self.token_network_address = token_network_address
        self.token_address = token_network_state.token_address

        self.lock = Semaphore()  #: protects self.funds and self.initial_channel_target
        self.api = RaidenAPI(raiden)
Beispiel #4
0
    def __init__(self, raiden: "RaidenService",
                 token_network_address: TokenNetworkAddress):
        self.raiden = raiden
        chain_state = views.state_from_raiden(raiden)
        token_network_state = views.get_token_network_by_address(
            chain_state, token_network_address)
        token_network_registry = views.get_token_network_registry_by_token_network_address(
            chain_state, token_network_address)

        msg = f"Token network for address {to_checksum_address(token_network_address)} not found."
        assert token_network_state, msg
        msg = (f"Token network registry for token network address "
               f"{to_checksum_address(token_network_address)} not found.")
        assert token_network_registry, msg

        # TODO:
        # - Add timeout for transaction polling, used to overwrite the RaidenAPI
        # defaults
        # - Add a proper selection strategy (#576)
        self.funds = 0
        self.initial_channel_target = 0
        self.joinable_funds_target = 0.0

        self.raiden = raiden
        self.registry_address = token_network_registry.address
        self.token_network_address = token_network_address
        self.token_address = token_network_state.token_address

        self.lock = Semaphore(
        )  #: protects self.funds and self.initial_channel_target
        self._retry_greenlet: Optional[Greenlet] = None
        self.api = RaidenAPI(raiden)
Beispiel #5
0
def get_contractreceivechannelnew_data_from_event(
        chain_state: ChainState,
        event: DecodedEvent) -> Optional[NewChannelDetails]:
    token_network_address = TokenNetworkAddress(event.originating_contract)
    data = event.event_data
    args = data["args"]
    participant1 = args["participant1"]
    participant2 = args["participant2"]

    our_address = chain_state.our_address

    if our_address == participant1:
        partner_address = participant2
    elif our_address == participant2:
        partner_address = participant1
    else:
        # Not a channel which this node is a participant
        return None

    token_network_registry = views.get_token_network_registry_by_token_network_address(
        chain_state, token_network_address)
    assert token_network_registry is not None, "Token network registry missing"

    token_network = views.get_token_network_by_address(
        chain_state=chain_state, token_network_address=token_network_address)
    assert token_network is not None, "Token network missing"

    return NewChannelDetails(
        chain_id=event.chain_id,
        token_network_registry_address=token_network_registry.address,
        token_address=token_network.token_address,
        token_network_address=token_network_address,
        our_address=our_address,
        partner_address=partner_address,
    )