本文整理汇总了Python中raiden.utils.isaddress函数的典型用法代码示例。如果您正苦于以下问题:Python isaddress函数的具体用法?Python isaddress怎么用?Python isaddress使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了isaddress函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: open_channel
def open_channel(
self,
token_address,
partner_address,
settle_timeout=None,
reveal_timeout=None):
invalid_timeout = (
settle_timeout < NETTINGCHANNEL_SETTLE_TIMEOUT_MIN or
settle_timeout > NETTINGCHANNEL_SETTLE_TIMEOUT_MAX
)
if invalid_timeout:
raise InvalidSettleTimeout('`settle_timeout` should be in range [{}, {}].'.format(
NETTINGCHANNEL_SETTLE_TIMEOUT_MIN, NETTINGCHANNEL_SETTLE_TIMEOUT_MAX
))
if not isaddress(token_address):
raise InvalidAddress('Expected binary address format for token in channel open')
if not isaddress(partner_address):
raise InvalidAddress('Expected binary address format for partner in channel open')
reveal_value = reveal_timeout if reveal_timeout is not None else self.reveal_timeout
channel = self.make_channel(
token_address=token_address,
partner_address=partner_address,
settle_timeout=settle_timeout,
reveal_timeout=reveal_value
)
self.channels.append(channel)
return channel
示例2: transfer_async
def transfer_async(self, asset_address, amount, target, identifier=None,
callback=None):
# pylint: disable=too-many-arguments
if not isinstance(amount, (int, long)):
raise InvalidAmount('Amount not a number')
if amount <= 0:
raise InvalidAmount('Amount negative')
asset_address_bin = safe_address_decode(asset_address)
target_bin = safe_address_decode(target)
if not isaddress(asset_address_bin) or asset_address_bin not in self.assets:
raise InvalidAddress('asset address is not valid.')
if not isaddress(target_bin):
raise InvalidAddress('target address is not valid.')
asset_manager = self.raiden.get_manager_by_asset_address(asset_address_bin)
if not asset_manager.has_path(self.raiden.address, target_bin):
raise NoPathError('No path to address found')
transfer_manager = asset_manager.transfermanager
async_result = transfer_manager.transfer_async(
amount,
target_bin,
identifier=identifier,
callback=callback,
)
return async_result
示例3: make_graph
def make_graph(edge_list):
""" Return a graph that represents the connections among the netting
contracts.
Args:
edge_list (List[(address1, address2)]): All the channels that compose
the graph.
Returns:
Graph A networkx.Graph instance were the graph nodes are nodes in the
network and the edges are nodes that have a channel between them.
"""
for edge in edge_list:
if len(edge) != 2:
raise ValueError('All values in edge_list must be of length two (origin, destination)')
origin, destination = edge
if not isaddress(origin) or not isaddress(destination):
raise ValueError('All values in edge_list must be valid addresses')
graph = networkx.Graph() # undirected graph, for bidirectional channels
for first, second in edge_list:
graph.add_edge(first, second)
return graph
示例4: close
def close(self, asset_address, partner_address):
""" Close a channel opened with `partner_address` for the given `asset_address`. """
asset_address_bin = safe_address_decode(asset_address)
partner_address_bin = safe_address_decode(partner_address)
if not isaddress(asset_address_bin) or asset_address_bin not in self.assets:
raise InvalidAddress('asset address is not valid.')
if not isaddress(partner_address_bin):
raise InvalidAddress('partner_address is not valid.')
manager = self.raiden.get_manager_by_asset_address(asset_address_bin)
channel = manager.get_channel_by_partner_address(partner_address_bin)
first_transfer = None
if channel.received_transfers:
first_transfer = channel.received_transfers[-1]
second_transfer = None
if channel.sent_transfers:
second_transfer = channel.sent_transfers[-1]
netting_channel = channel.external_state.netting_channel
netting_channel.close(
self.raiden.address,
first_transfer,
second_transfer,
)
示例5: settle
def settle(self, token_address, partner_address):
""" Settle a closed channel with `partner_address` for the given `token_address`. """
if not isaddress(token_address):
raise InvalidAddress('Expected binary address format for token in channel settle')
if not isaddress(partner_address):
raise InvalidAddress('Expected binary address format for partner in channel settle')
if not isaddress(token_address) or token_address not in self.tokens:
raise InvalidAddress('token address is not valid.')
if not isaddress(partner_address):
raise InvalidAddress('partner_address is not valid.')
graph = self.raiden.token_to_channelgraph[token_address]
channel = graph.partneraddress_to_channel[partner_address]
if channel.can_transfer:
raise InvalidState('channel is still open.')
netting_channel = channel.external_state.netting_channel
current_block = self.raiden.chain.block_number()
settle_timeout = netting_channel.detail()['settle_timeout']
settle_expiration = channel.external_state.closed_block + settle_timeout
if current_block <= settle_expiration:
raise InvalidState('settlement period is not yet over.')
netting_channel.settle()
return channel
示例6: transfer
def transfer(self, asset_address, amount, target, callback=None):
""" Do a transfer with `target` with the given `amount` of `asset_address`. """
if not isinstance(amount, (int, long)):
raise InvalidAmount('Amount not a number')
if amount <= 0:
raise InvalidAmount('Amount negative')
asset_address_bin = safe_address_decode(asset_address)
target_bin = safe_address_decode(target)
asset_manager = self.raiden.get_manager_by_asset_address(asset_address_bin)
if not isaddress(asset_address_bin) or asset_address_bin not in self.assets:
raise InvalidAddress('asset address is not valid.')
if not isaddress(target_bin):
raise InvalidAddress('target address is not valid.')
if not asset_manager.has_path(self.raiden.address, target_bin):
raise NoPathError('No path to address found')
transfer_manager = self.raiden.managers_by_asset_address[asset_address_bin].transfermanager
task = transfer_manager.transfer(amount, target_bin, callback=callback)
task.join()
示例7: new_netting_channel
def new_netting_channel(self, peer1, peer2, settle_timeout):
""" Creates a new netting contract between peer1 and peer2.
Raises:
ValueError: If peer1 or peer2 is not a valid address.
"""
if not isaddress(peer1):
raise ValueError('The pee1 must be a valid address')
if not isaddress(peer2):
raise ValueError('The peer2 must be a valid address')
if privatekey_to_address(self.private_key) == peer1:
other = peer2
else:
other = peer1
netting_channel_address_hex = self.proxy.newChannel(other, settle_timeout)
self.tester_state.mine(number_of_blocks=1)
channel = NettingChannelTesterMock(
self.tester_state,
self.private_key,
netting_channel_address_hex,
)
return decode_hex(channel.address)
示例8: settle
def settle(self, asset_address, partner_address):
""" Settle a closed channel with `partner_address` for the given `asset_address`. """
asset_address_bin = safe_address_decode(asset_address)
partner_address_bin = safe_address_decode(partner_address)
if not isaddress(asset_address_bin) or asset_address_bin not in self.assets:
raise InvalidAddress('asset address is not valid.')
if not isaddress(partner_address_bin):
raise InvalidAddress('partner_address is not valid.')
manager = self.raiden.get_manager_by_asset_address(asset_address_bin)
channel = manager.get_channel_by_partner_address(partner_address_bin)
if channel.isopen:
raise InvalidState('channel is still open.')
netting_channel = channel.external_state.netting_channel
if not (self.raiden.chain.client.blocknumber() >=
(channel.external_state.closed_block +
netting_channel.detail(self.raiden.address)['settle_timeout'])):
raise InvalidState('settlement period not over.')
netting_channel.settle()
return netting_channel
示例9: request_transfer
def request_transfer(self, asset_address, amount, target):
if not isaddress(asset_address) or asset_address not in self.assets:
raise InvalidAddress('asset address is not valid.')
if not isaddress(target):
raise InvalidAddress('target address is not valid.')
transfer_manager = self.raiden.assetmanagers[asset_address].transfermanager
transfer_manager.request_transfer(amount, target)
示例10: get_channel_list
def get_channel_list(self, token_address=None, partner_address=None):
"""Returns a list of channels associated with the optionally given
`token_address` and/or `partner_address`.
Args:
token_address (bin): an optionally provided token address
partner_address (bin): an optionally provided partner address
Return:
A list containing all channels the node participates. Optionally
filtered by a token address and/or partner address.
Raises:
KeyError: An error occurred when the token address is unknown to the node.
"""
if token_address and not isaddress(token_address):
raise InvalidAddress('Expected binary address format for token in get_channel_list')
if partner_address and not isaddress(partner_address):
raise InvalidAddress('Expected binary address format for partner in get_channel_list')
result = list()
if token_address and partner_address:
graph = self.raiden.token_to_channelgraph[token_address]
channel = graph.partneraddress_to_channel.get(partner_address)
if channel:
result = [channel]
elif token_address:
graph = self.raiden.token_to_channelgraph.get(token_address)
if graph:
result = list(graph.address_to_channel.values())
elif partner_address:
partner_channels = [
graph.partneraddress_to_channel[partner_address]
for graph in self.raiden.token_to_channelgraph.values()
if partner_address in graph.partneraddress_to_channel
]
result = partner_channels
else:
all_channels = list()
for graph in self.raiden.token_to_channelgraph.values():
all_channels.extend(graph.address_to_channel.values())
result = all_channels
return result
示例11: get_shortest_paths
def get_shortest_paths(self, source, target):
"""Compute all shortest paths in the graph.
Returns:
generator of lists: A generator of all paths between source and
target.
"""
if not isaddress(source) or not isaddress(target):
raise ValueError('both source and target must be valid addresses')
return networkx.all_shortest_paths(self.graph, source, target)
示例12: send_ping
def send_ping(self, receiver_address):
if not isaddress(receiver_address):
raise ValueError('Invalid address {}'.format(pex(receiver_address)))
nonce = self._ping_nonces[receiver_address]
self._ping_nonces[receiver_address] += 1
message = Ping(nonce)
self.raiden.sign(message)
if log.isEnabledFor(logging.INFO):
log.info(
'SENDING PING %s > %s',
pex(self.raiden.address),
pex(receiver_address)
)
message_data = message.encode()
echohash = sha3(message_data + receiver_address)
async_result = AsyncResult()
if echohash not in self.echohash_asyncresult:
self.echohash_asyncresult[echohash] = WaitAck(async_result, receiver_address)
# Just like ACK, a PING message is sent directly. No need for queuing
self.transport.send(
self.raiden,
self.discovery.get(receiver_address),
message_data
)
return async_result
示例13: __init__
def __init__(
self,
jsonrpc_client,
registry_address,
startgas,
gasprice,
poll_timeout=DEFAULT_POLL_TIMEOUT):
# pylint: disable=too-many-arguments
if not isaddress(registry_address):
raise ValueError('registry_address must be a valid address')
check_address_has_code(jsonrpc_client, registry_address, 'Registry')
proxy = jsonrpc_client.new_contract_proxy(
CONTRACT_MANAGER.get_abi(CONTRACT_REGISTRY),
address_encoder(registry_address),
)
self.address = registry_address
self.proxy = proxy
self.client = jsonrpc_client
self.startgas = startgas
self.gasprice = gasprice
self.poll_timeout = poll_timeout
self.address_to_channelmanager = dict()
self.token_to_channelmanager = dict()
示例14: get_channel_events
def get_channel_events(self, channel_address, from_block, to_block=None):
if not isaddress(channel_address):
raise InvalidAddress(
'Expected binary address format for channel in get_channel_events'
)
returned_events = get_all_netting_channel_events(
self.raiden.chain,
channel_address,
events=ALL_EVENTS,
from_block=from_block,
to_block=to_block,
)
raiden_events = self.raiden.transaction_log.get_events_in_block_range(
from_block=from_block,
to_block=to_block
)
# Here choose which raiden internal events we want to expose to the end user
for event in raiden_events:
is_user_transfer_event = isinstance(event.event_object, (
EventTransferSentSuccess,
EventTransferSentFailed,
EventTransferReceivedSuccess
))
if is_user_transfer_event:
new_event = {
'block_number': event.block_number,
'_event_type': type(event.event_object).__name__,
}
new_event.update(event.event_object.__dict__)
returned_events.append(new_event)
return returned_events
示例15: __init__
def __init__(
self,
jsonrpc_client,
discovery_address,
startgas,
gasprice,
poll_timeout=DEFAULT_POLL_TIMEOUT):
if not isaddress(discovery_address):
raise ValueError('discovery_address must be a valid address')
check_address_has_code(jsonrpc_client, discovery_address, 'Discovery')
proxy = jsonrpc_client.new_contract_proxy(
CONTRACT_MANAGER.get_abi(CONTRACT_ENDPOINT_REGISTRY),
address_encoder(discovery_address),
)
self.address = discovery_address
self.proxy = proxy
self.client = jsonrpc_client
self.startgas = startgas
self.gasprice = gasprice
self.poll_timeout = poll_timeout
self.not_found_address = '0x' + '0' * 40