本文整理汇总了Python中raiden.transfer.views.state_from_app函数的典型用法代码示例。如果您正苦于以下问题:Python state_from_app函数的具体用法?Python state_from_app怎么用?Python state_from_app使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了state_from_app函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_channel_new
def test_channel_new(raiden_chain, retry_timeout, token_addresses):
app0, app1 = raiden_chain # pylint: disable=unbalanced-tuple-unpacking
registry_address = app0.raiden.default_registry.address
token_address = token_addresses[0]
channelcount0 = views.total_token_network_channels(
views.state_from_app(app0),
registry_address,
token_address,
)
RaidenAPI(app0.raiden).channel_open(
registry_address,
token_address,
app1.raiden.address,
)
wait_both_channel_open(app0, app1, registry_address, token_address, retry_timeout)
# The channel is created but without funds
channelcount1 = views.total_token_network_channels(
views.state_from_app(app0),
registry_address,
token_address,
)
assert channelcount0 + 1 == channelcount1
开发者ID:hackaugusto,项目名称:raiden,代码行数:26,代码来源:test_integration_events.py
示例2: test_automatic_secret_registration
def test_automatic_secret_registration(raiden_chain, token_addresses):
app0, app1 = raiden_chain
token_address = token_addresses[0]
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
app0.raiden.default_registry.address,
token_address,
)
amount = 100
identifier = 1
hold_event_handler = HoldOffChainSecretRequest()
app1.raiden.raiden_event_handler = hold_event_handler
target = app1.raiden.address
secret = sha3(target)
secrethash = sha3(secret)
hold_event_handler.hold_secretrequest_for(secrethash=secrethash)
app0.raiden.start_mediated_transfer_with_secret(
token_network_identifier,
amount,
target,
identifier,
secret,
)
gevent.sleep(1) # wait for the messages to be exchanged
# Stop app0 to avoid sending the unlock
app0.raiden.transport.stop()
reveal_secret = RevealSecret(
random.randint(0, UINT64_MAX),
secret,
)
app0.raiden.sign(reveal_secret)
message_handler.MessageHandler().on_message(app1.raiden, reveal_secret)
chain_state = views.state_from_app(app1)
secrethash = sha3(secret)
target_task = chain_state.payment_mapping.secrethashes_to_task[secrethash]
lock_expiration = target_task.target_state.transfer.lock.expiration
wait_until_block(app1.raiden.chain, lock_expiration)
assert app1.raiden.default_secret_registry.check_registered(secrethash)
开发者ID:hackaugusto,项目名称:raiden,代码行数:49,代码来源:test_settlement.py
示例3: test_receive_directtransfer_invalidnonce
def test_receive_directtransfer_invalidnonce(raiden_network, deposit, token_addresses):
app0, app1 = raiden_network
token_address = token_addresses[0]
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
app0.raiden.default_registry.address,
token_address,
)
channel0 = get_channelstate(app0, app1, token_network_identifier)
transferred_amount = 10
same_payment_identifier = 1
message_identifier = random.randint(0, UINT64_MAX)
event = channel.send_directtransfer(
channel0,
transferred_amount,
message_identifier,
same_payment_identifier,
)
direct_transfer_message = DirectTransfer.from_event(event)
sign_and_inject(
direct_transfer_message,
app0.raiden.private_key,
app0.raiden.address,
app1,
)
# Send a *different* direct transfer with the *same nonce*
invalid_transferred_amount = transferred_amount // 2
message_identifier = random.randint(0, UINT64_MAX)
invalid_direct_transfer_message = DirectTransfer(
chain_id=UNIT_CHAIN_ID,
message_identifier=message_identifier,
payment_identifier=same_payment_identifier,
nonce=1,
token_network_address=token_network_identifier,
token=token_address,
channel_identifier=channel0.identifier,
transferred_amount=invalid_transferred_amount,
locked_amount=0,
recipient=app1.raiden.address,
locksroot=EMPTY_MERKLE_ROOT,
)
sign_and_inject(
invalid_direct_transfer_message,
app0.raiden.private_key,
app0.raiden.address,
app1,
)
assert_synched_channel_state(
token_network_identifier,
app0, deposit - transferred_amount, [],
app1, deposit + transferred_amount, [],
)
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:60,代码来源:test_directransfer_invalid.py
示例4: test_udp_ping_pong_unreachable_node
def test_udp_ping_pong_unreachable_node(raiden_network, skip_if_not_udp):
app0, app1 = raiden_network
app1.raiden.transport.stop_and_wait()
ping_message = Ping(nonce=0)
app0.raiden.sign(ping_message)
ping_encoded = ping_message.encode()
messageid = ('ping', ping_message.nonce, app1.raiden.address)
async_result = app0.raiden.transport.maybe_sendraw_with_result(
app1.raiden.address,
ping_encoded,
messageid,
)
nat_keepalive_fail = (
app0.config['transport']['nat_keepalive_timeout'] *
app0.config['transport']['nat_keepalive_retries'] *
2 # wait a bit longer to avoid races
)
msg = "The message was dropped, it can't be acknowledged"
assert async_result.wait(nat_keepalive_fail) is None, msg
network_state = views.get_node_network_status(
views.state_from_app(app0),
app1.raiden.address,
)
assert network_state is state.NODE_NETWORK_UNREACHABLE
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:29,代码来源:test_service.py
示例5: test_failsfast_lockedtransfer_exceeding_distributable
def test_failsfast_lockedtransfer_exceeding_distributable(
raiden_network,
token_addresses,
deposit,
):
app0, app1 = raiden_network
token_address = token_addresses[0]
payment_network_identifier = app0.raiden.default_registry.address
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
payment_network_identifier,
token_address,
)
result = app0.raiden.mediated_transfer_async(
token_network_identifier,
deposit * 2,
app1.raiden.address,
identifier=1,
)
assert result.successful()
assert result.get_nowait() is False
assert_synced_channel_state(
token_network_identifier,
app0, deposit, [],
app1, deposit, [],
)
开发者ID:hackaugusto,项目名称:raiden,代码行数:30,代码来源:test_mediatedtransfer_invalid.py
示例6: test_close_channel_lack_of_balance_proof
def test_close_channel_lack_of_balance_proof(raiden_chain, deposit, token_addresses):
app0, app1 = raiden_chain
token_address = token_addresses[0]
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
app0.raiden.default_registry.address,
token_address,
)
token_proxy = app0.raiden.chain.token(token_address)
initial_balance0 = token_proxy.balance_of(app0.raiden.address)
initial_balance1 = token_proxy.balance_of(app1.raiden.address)
amount = 100
identifier = 1
secret = pending_mediated_transfer(
raiden_chain,
token_network_identifier,
amount,
identifier,
)
# Stop app0 to avoid sending the unlock
app0.raiden.transport.stop_and_wait()
reveal_secret = RevealSecret(
random.randint(0, UINT64_MAX),
secret,
)
app0.raiden.sign(reveal_secret)
message_handler.on_message(app1.raiden, reveal_secret)
RaidenAPI(app0.raiden).channel_close(
app0.raiden.default_registry.address,
token_address,
app1.raiden.address,
)
channel_state = get_channelstate(app0, app1, token_network_identifier)
waiting.wait_for_settle(
app0.raiden,
app0.raiden.default_registry.address,
token_address,
[channel_state.identifier],
app0.raiden.alarm.sleep_time,
)
# wait for the node to call batch unlock
with gevent.Timeout(10):
wait_for_batch_unlock(
app0,
token_network_identifier,
channel_state.partner_state.address,
channel_state.our_state.address,
)
expected_balance0 = initial_balance0 + deposit - amount
expected_balance1 = initial_balance1 + deposit + amount
assert token_proxy.balance_of(app0.raiden.address) == expected_balance0
assert token_proxy.balance_of(app1.raiden.address) == expected_balance1
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:60,代码来源:test_settlement.py
示例7: direct_transfer
def direct_transfer(
initiator_app,
target_app,
token_network_identifier,
amount,
identifier=None,
timeout=5,
):
""" Nice to read shortcut to make a DirectTransfer. """
channel_state = views.get_channelstate_by_token_network_and_partner(
views.state_from_app(initiator_app),
token_network_identifier,
target_app.raiden.address,
)
assert channel_state, 'there is not a direct channel'
initiator_app.raiden.direct_transfer_async(
token_network_identifier,
amount,
target_app.raiden.address,
identifier,
)
# direct transfers don't have confirmation
gevent.sleep(timeout)
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:25,代码来源:transfer.py
示例8: get_channelstate
def get_channelstate(app0, app1, token_network_identifier) -> NettingChannelState:
channel_state = views.get_channelstate_by_token_network_and_partner(
views.state_from_app(app0),
token_network_identifier,
app1.raiden.address,
)
return channel_state
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:7,代码来源:transfer.py
示例9: pending_mediated_transfer
def pending_mediated_transfer(app_chain, token_network_identifier, amount, identifier):
""" Nice to read shortcut to make a LockedTransfer where the secret is _not_ revealed.
While the secret is not revealed all apps will be synchronized, meaning
they are all going to receive the LockedTransfer message.
Returns:
The secret used to generate the LockedTransfer
"""
# pylint: disable=too-many-locals
if len(app_chain) < 2:
raise ValueError('Cannot make a LockedTransfer with less than two apps')
target = app_chain[-1].raiden.address
# Generate a secret
initiator_channel = views.get_channelstate_by_token_network_and_partner(
views.state_from_app(app_chain[0]),
token_network_identifier,
app_chain[1].raiden.address,
)
address = initiator_channel.identifier
nonce_int = channel.get_next_nonce(initiator_channel.our_state)
nonce_bytes = nonce_int.to_bytes(2, 'big')
secret = sha3(address + nonce_bytes)
initiator_app = app_chain[0]
init_initiator_statechange = initiator_init(
initiator_app.raiden,
identifier,
amount,
secret,
token_network_identifier,
target,
)
events = initiator_app.raiden.wal.log_and_dispatch(
init_initiator_statechange,
initiator_app.raiden.get_block_number(),
)
send_transfermessage = must_contain_entry(events, SendLockedTransfer, {})
transfermessage = LockedTransfer.from_event(send_transfermessage)
initiator_app.raiden.sign(transfermessage)
for mediator_app in app_chain[1:-1]:
mediator_init_statechange = mediator_init(mediator_app.raiden, transfermessage)
events = mediator_app.raiden.wal.log_and_dispatch(
mediator_init_statechange,
mediator_app.raiden.get_block_number(),
)
send_transfermessage = must_contain_entry(events, SendLockedTransfer, {})
transfermessage = LockedTransfer.from_event(send_transfermessage)
mediator_app.raiden.sign(transfermessage)
target_app = app_chain[-1]
mediator_init_statechange = target_init(transfermessage)
events = target_app.raiden.wal.log_and_dispatch(
mediator_init_statechange,
target_app.raiden.get_block_number(),
)
return secret
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:60,代码来源:transfer.py
示例10: test_direct_transfer
def test_direct_transfer(raiden_network, token_addresses, deposit, network_wait):
token_address = token_addresses[0]
app0, app1 = raiden_network
amount = 10
chain_state = views.state_from_app(app0)
payment_network_id = app0.raiden.default_registry.address
token_network_identifier = views.get_token_network_identifier_by_token_address(
chain_state,
payment_network_id,
token_address,
)
direct_transfer(
app0,
app1,
token_network_identifier,
amount,
timeout=network_wait,
)
assert_synched_channel_state(
token_network_identifier,
app0, deposit - amount, [],
app1, deposit + amount, [],
)
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:25,代码来源:test_directransfer.py
示例11: test_regression_unfiltered_routes
def test_regression_unfiltered_routes(
raiden_network,
token_addresses,
settle_timeout,
deposit,
):
""" The transfer should proceed without triggering an assert.
Transfers failed in networks where two or more paths to the destination are
possible but they share same node as a first hop.
"""
app0, app1, app2, app3, app4 = raiden_network
token = token_addresses[0]
registry_address = app0.raiden.default_registry.address
# Topology:
#
# 0 -> 1 -> 2 -> 4
# | ^
# +--> 3 ---+
app_channels = [
(app0, app1),
(app1, app2),
(app1, app3),
(app3, app4),
(app2, app4),
]
greenlets = []
for first_app, second_app in app_channels:
greenlets.append(gevent.spawn(
payment_channel_open_and_deposit,
first_app,
second_app,
token,
deposit,
settle_timeout,
))
gevent.wait(greenlets)
wait_for_channels(
app_channels,
registry_address,
[token],
deposit,
)
payment_network_identifier = app0.raiden.default_registry.address
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
payment_network_identifier,
token,
)
transfer = app0.raiden.mediated_transfer_async(
token_network_identifier=token_network_identifier,
amount=1,
target=app4.raiden.address,
identifier=1,
)
assert transfer.wait()
开发者ID:hackaugusto,项目名称:raiden,代码行数:60,代码来源:test_regression.py
示例12: test_mediated_transfer_events
def test_mediated_transfer_events(raiden_network, number_of_nodes, token_addresses, network_wait):
app0, app1, app2 = raiden_network
token_address = token_addresses[0]
chain_state = views.state_from_app(app0)
payment_network_id = app0.raiden.default_registry.address
token_network_identifier = views.get_token_network_identifier_by_token_address(
chain_state,
payment_network_id,
token_address,
)
amount = 10
mediated_transfer(
app0,
app2,
token_network_identifier,
amount,
timeout=network_wait * number_of_nodes,
)
def test_initiator_events():
initiator_blockevents = app0.raiden.wal.storage.get_events_by_identifier(
from_identifier=0,
to_identifier='latest',
)
initiator_events = [blocknumber_event[1] for blocknumber_event in initiator_blockevents]
return (
must_contain_entry(initiator_events, SendRevealSecret, {}) and
must_contain_entry(initiator_events, EventUnlockSuccess, {})
)
assert wait_until(test_initiator_events, network_wait)
def test_mediator_events():
mediator_blockevents = app1.raiden.wal.storage.get_events_by_identifier(
from_identifier=0,
to_identifier='latest',
)
mediator_events = [blocknumber_event[1] for blocknumber_event in mediator_blockevents]
return (
must_contain_entry(mediator_events, EventUnlockSuccess, {}) and
must_contain_entry(mediator_events, EventUnlockClaimSuccess, {})
)
assert wait_until(test_mediator_events, network_wait)
def test_target_events():
target_blockevents = app2.raiden.wal.storage.get_events_by_identifier(
from_identifier=0,
to_identifier='latest',
)
target_events = [blocknumber_event[1] for blocknumber_event in target_blockevents]
return (
must_contain_entry(target_events, SendSecretRequest, {}) and
must_contain_entry(target_events, SendRevealSecret, {}) and
must_contain_entry(target_events, EventUnlockClaimSuccess, {})
)
assert wait_until(test_target_events, network_wait)
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:59,代码来源:test_mediatedtransfer_events.py
示例13: test_refund_messages
def test_refund_messages(raiden_chain, token_addresses, deposit):
# The network has the following topology:
#
# App0 <---> App1 <---> App2
app0, app1, app2 = raiden_chain # pylint: disable=unbalanced-tuple-unpacking
token_address = token_addresses[0]
payment_network_identifier = app0.raiden.default_registry.address
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
payment_network_identifier,
token_address,
)
# Exhaust the channel App1 <-> App2 (to force the refund transfer)
exhaust_amount = deposit
mediated_transfer(
initiator_app=app1,
target_app=app2,
token_network_identifier=token_network_identifier,
amount=exhaust_amount,
identifier=1,
)
refund_amount = deposit // 2
identifier = 1
async_result = app0.raiden.mediated_transfer_async(
token_network_identifier,
refund_amount,
app2.raiden.address,
identifier,
)
assert async_result.wait() is False, 'Must fail, there are no routes available'
# The transfer from app0 to app2 failed, so the balances did change.
# Since the refund is not unlocked both channels have the corresponding
# amount locked (issue #1091)
send_lockedtransfer = raiden_events_must_contain_entry(
app0.raiden,
SendLockedTransfer,
{'transfer': {'lock': {'amount': refund_amount}}},
)
assert send_lockedtransfer
send_refundtransfer = raiden_events_must_contain_entry(app1.raiden, SendRefundTransfer, {})
assert send_refundtransfer
assert_synced_channel_state(
token_network_identifier,
app0, deposit, [send_lockedtransfer.transfer.lock],
app1, deposit, [send_refundtransfer.transfer.lock],
)
# This channel was exhausted to force the refund transfer
assert_synced_channel_state(
token_network_identifier,
app1, 0, [],
app2, deposit * 2, [],
)
开发者ID:hackaugusto,项目名称:raiden,代码行数:58,代码来源:test_refundtransfer.py
示例14: test_receive_secrethashtransfer_unknown
def test_receive_secrethashtransfer_unknown(raiden_network, token_addresses):
app0 = raiden_network[0]
token_address = token_addresses[0]
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
app0.raiden.default_registry.address,
token_address,
)
other_key = HOP1_KEY
other_address = HOP1
channel_identifier = make_channel_identifier()
amount = 10
refund_transfer_message = make_refund_transfer(
payment_identifier=1,
nonce=1,
token_network_address=token_network_identifier,
token=token_address,
channel_identifier=channel_identifier,
transferred_amount=amount,
recipient=app0.raiden.address,
locksroot=UNIT_SECRETHASH,
amount=amount,
secrethash=UNIT_SECRETHASH,
)
sign_and_inject(refund_transfer_message, other_key, other_address, app0)
secret = Secret(
chain_id=UNIT_CHAIN_ID,
message_identifier=random.randint(0, UINT64_MAX),
payment_identifier=1,
nonce=1,
channel_identifier=channel_identifier,
token_network_address=token_network_identifier,
transferred_amount=amount,
locked_amount=0,
locksroot=UNIT_SECRETHASH,
secret=UNIT_SECRET,
)
sign_and_inject(secret, other_key, other_address, app0)
secret_request_message = SecretRequest(
message_identifier=random.randint(0, UINT64_MAX),
payment_identifier=1,
secrethash=UNIT_SECRETHASH,
amount=1,
expiration=refund_transfer_message.lock.expiration,
)
sign_and_inject(secret_request_message, other_key, other_address, app0)
reveal_secret_message = RevealSecret(
message_identifier=random.randint(0, UINT64_MAX),
secret=UNIT_SECRET,
)
sign_and_inject(reveal_secret_message, other_key, other_address, app0)
开发者ID:hackaugusto,项目名称:raiden,代码行数:57,代码来源:test_refund_invalid.py
示例15: test_locked_transfer_secret_registered_onchain
def test_locked_transfer_secret_registered_onchain(
raiden_network,
token_addresses,
secret_registry_address,
):
app0 = raiden_network[0]
token_address = token_addresses[0]
chain_state = views.state_from_app(app0)
payment_network_id = app0.raiden.default_registry.address
token_network_identifier = views.get_token_network_identifier_by_token_address(
chain_state,
payment_network_id,
token_address,
)
amount = 1
target = UNIT_TRANSFER_INITIATOR
identifier = 1
transfer_secret = sha3(target + b'1')
secret_registry_proxy = app0.raiden.chain.secret_registry(
secret_registry_address,
)
secret_registry_proxy.register_secret(transfer_secret)
# Test that sending a transfer with a secret already registered on-chain fails
with pytest.raises(RaidenUnrecoverableError):
app0.raiden.start_mediated_transfer_with_secret(
token_network_identifier,
amount,
target,
identifier,
transfer_secret,
)
expiration = 9999
transfer = make_signed_transfer(
amount,
UNIT_TRANSFER_INITIATOR,
app0.raiden.address,
expiration,
transfer_secret,
)
message_handler = MessageHandler()
message_handler.handle_message_lockedtransfer(
app0.raiden,
transfer,
)
state_changes = app0.raiden.wal.storage.get_statechanges_by_identifier(0, 'latest')
transfer_statechange_dispatched = (
must_contain_entry(state_changes, ActionInitMediator, {}) or
must_contain_entry(state_changes, ActionInitTarget, {})
)
assert not transfer_statechange_dispatched
开发者ID:hackaugusto,项目名称:raiden,代码行数:56,代码来源:test_mediatedtransfer.py
示例16: test_settle_is_automatically_called
def test_settle_is_automatically_called(raiden_network, token_addresses, deposit):
"""Settle is automatically called by one of the nodes."""
app0, app1 = raiden_network
registry_address = app0.raiden.default_registry.address
token_address = token_addresses[0]
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
app0.raiden.default_registry.address,
token_address,
)
channel_identifier = get_channelstate(app0, app1, token_network_identifier).identifier
# A ChannelClose event will be generated, this will be polled by both apps
# and each must start a task for calling settle
RaidenAPI(app1.raiden).channel_close(
registry_address,
token_address,
app0.raiden.address,
)
waiting.wait_for_settle(
app0.raiden,
registry_address,
token_address,
[channel_identifier],
app0.raiden.alarm.sleep_time,
)
assert_synched_channel_state(
token_network_identifier,
app0, deposit, [],
app1, deposit, [],
)
state_changes = app0.raiden.wal.storage.get_statechanges_by_identifier(
from_identifier=0,
to_identifier='latest',
)
channel_state = get_channelstate(app0, app1, token_network_identifier)
assert channel_state.close_transaction.finished_block_number
assert channel_state.settle_transaction.finished_block_number
assert must_contain_entry(state_changes, ContractReceiveChannelClosed, {
'token_network_identifier': token_network_identifier,
'channel_identifier': channel_identifier,
'closing_address': app1.raiden.address,
'closed_block_number': channel_state.close_transaction.finished_block_number,
})
assert must_contain_entry(state_changes, ContractReceiveChannelSettled, {
'token_network_identifier': token_network_identifier,
'channel_identifier': channel_identifier,
'settle_block_number': channel_state.settle_transaction.finished_block_number,
})
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:56,代码来源:test_settlement.py
示例17: test_received_directtransfer_closedchannel
def test_received_directtransfer_closedchannel(raiden_network, token_addresses, deposit):
app0, app1 = raiden_network
token_address = token_addresses[0]
registry_address = app0.raiden.default_registry.address
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
registry_address,
token_address,
)
channel0 = get_channelstate(app0, app1, token_network_identifier)
RaidenAPI(app1.raiden).channel_close(
registry_address,
token_address,
app0.raiden.address,
)
wait_until_block(
app0.raiden.chain,
app0.raiden.chain.block_number() + 1,
)
# Now receive one direct transfer for the closed channel
message_identifier = random.randint(0, UINT64_MAX)
direct_transfer_message = DirectTransfer(
chain_id=UNIT_CHAIN_ID,
message_identifier=message_identifier,
payment_identifier=1,
nonce=1,
token_network_address=token_network_identifier,
token=token_address,
channel_identifier=channel0.identifier,
transferred_amount=10,
locked_amount=0,
recipient=app0.raiden.address,
locksroot=EMPTY_MERKLE_ROOT,
)
sign_and_inject(
direct_transfer_message,
app0.raiden.private_key,
app0.raiden.address,
app1,
)
# The local state must not change since the channel is already closed
assert_synched_channel_state(
token_network_identifier,
app0, deposit, [],
app1, deposit, [],
)
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:51,代码来源:test_directransfer_invalid.py
示例18: test_receive_lockedtransfer_invalidrecipient
def test_receive_lockedtransfer_invalidrecipient(
raiden_network,
token_addresses,
reveal_timeout,
deposit,
):
app0, app1 = raiden_network
token_address = token_addresses[0]
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
app0.raiden.default_registry.address,
token_address,
)
channel0 = get_channelstate(app0, app1, token_network_identifier)
payment_identifier = 1
invalid_recipient = make_address()
lock_amount = 10
expiration = reveal_timeout * 2
mediated_transfer_message = LockedTransfer(
chain_id=UNIT_CHAIN_ID,
message_identifier=random.randint(0, UINT64_MAX),
payment_identifier=payment_identifier,
nonce=1,
token_network_address=token_network_identifier,
token=token_address,
channel_identifier=channel0.identifier,
transferred_amount=0,
locked_amount=lock_amount,
recipient=invalid_recipient,
locksroot=UNIT_SECRETHASH,
lock=Lock(lock_amount, expiration, UNIT_SECRETHASH),
target=app1.raiden.address,
initiator=app0.raiden.address,
fee=0,
)
sign_and_inject(
mediated_transfer_message,
app0.raiden.private_key,
app0.raiden.address,
app1,
)
assert_synced_channel_state(
token_network_identifier,
app0, deposit, [],
app1, deposit, [],
)
开发者ID:hackaugusto,项目名称:raiden,代码行数:50,代码来源:test_mediatedtransfer_invalid.py
示例19: test_mediated_transfer_with_entire_deposit
def test_mediated_transfer_with_entire_deposit(
raiden_network,
number_of_nodes,
token_addresses,
deposit,
network_wait,
public_and_private_rooms,
):
app0, app1, app2 = raiden_network
token_address = token_addresses[0]
chain_state = views.state_from_app(app0)
payment_network_id = app0.raiden.default_registry.address
token_network_identifier = views.get_token_network_identifier_by_token_address(
chain_state,
payment_network_id,
token_address,
)
mediated_transfer(
app0,
app2,
token_network_identifier,
deposit,
timeout=network_wait * number_of_nodes,
)
mediated_transfer(
app2,
app0,
token_network_identifier,
deposit * 2,
timeout=network_wait * number_of_nodes,
)
with gevent.Timeout(network_wait):
wait_assert(
assert_synced_channel_state,
token_network_identifier,
app0, deposit * 2, [],
app1, 0, [],
)
with gevent.Timeout(network_wait):
wait_assert(
assert_synced_channel_state,
token_network_identifier,
app1, deposit * 2, [],
app2, 0, [],
)
开发者ID:hackaugusto,项目名称:raiden,代码行数:47,代码来源:test_mediatedtransfer.py
示例20: test_log_directransfer
def test_log_directransfer(raiden_chain, token_addresses, deposit):
"""The action that starts a direct transfer must be logged in the WAL."""
app0, app1 = raiden_chain # pylint: disable=unbalanced-tuple-unpacking
token_address = token_addresses[0]
token_network_identifier = views.get_token_network_identifier_by_token_address(
views.state_from_app(app0),
app0.raiden.default_registry.address,
token_address,
)
amount = int(deposit / 2.)
payment_identifier = 13
direct_transfer(
app0,
app1,
token_network_identifier,
amount,
payment_identifier,
)
app0_state_changes = app0.raiden.wal.storage.get_statechanges_by_identifier(
from_identifier=0,
to_identifier='latest',
)
assert must_contain_entry(app0_state_changes, ActionTransferDirect, {
'token_network_identifier': token_network_identifier,
'amount': amount,
'receiver_address': app1.raiden.address,
})
app1_state_changes = app1.raiden.wal.storage.get_statechanges_by_identifier(
from_identifier=0,
to_identifier='latest',
)
assert must_contain_entry(app1_state_changes, ReceiveTransferDirect, {
'token_network_identifier': token_network_identifier,
'payment_identifier': payment_identifier,
'balance_proof': {
'transferred_amount': amount,
'sender': app0.raiden.address,
},
})
开发者ID:AlphaX-IBS,项目名称:raiden,代码行数:44,代码来源:test_directtransfer_statechanges.py
注:本文中的raiden.transfer.views.state_from_app函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论