本文整理汇总了Python中raiden.utils.isaddress函数的典型用法代码示例。如果您正苦于以下问题:Python isaddress函数的具体用法?Python isaddress怎么用?Python isaddress使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了isaddress函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:31,代码来源:apitestcontext.py
示例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
开发者ID:raiden-network,项目名称:raiden,代码行数:32,代码来源:raiden_service.py
示例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
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:28,代码来源:channelgraph.py
示例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,
)
开发者ID:hdiedrich,项目名称:raiden,代码行数:28,代码来源:raiden_service.py
示例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
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:32,代码来源:python.py
示例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()
开发者ID:hdiedrich,项目名称:raiden,代码行数:25,代码来源:raiden_service.py
示例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)
开发者ID:raiden-network,项目名称:raiden,代码行数:27,代码来源:tester_client.py
示例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
开发者ID:raiden-network,项目名称:raiden,代码行数:26,代码来源:raiden_service.py
示例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)
开发者ID:ahuachen,项目名称:raiden,代码行数:9,代码来源:raiden_service.py
示例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
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:55,代码来源:python.py
示例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)
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:11,代码来源:channelgraph.py
示例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
开发者ID:raiden-network,项目名称:raiden,代码行数:29,代码来源:protocol.py
示例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()
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:28,代码来源:registry.py
示例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
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:33,代码来源:python.py
示例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
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:25,代码来源:discovery.py
示例16: __init__
def __init__(
self,
our_address,
channelmanager_address,
token_address,
edge_list,
channels_details):
if not isaddress(token_address):
raise ValueError('token_address must be a valid address')
graph = make_graph(edge_list)
self.address_to_channel = dict()
self.graph = graph
self.our_address = our_address
self.partneraddress_to_channel = dict()
self.token_address = token_address
self.channelmanager_address = channelmanager_address
for details in channels_details:
try:
self.add_channel(details)
except ValueError as e:
log.warn(
'Error at registering opened channel contract. Perhaps contract is invalid?',
error=str(e),
channel_address=pex(details.channel_address)
)
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:28,代码来源:channelgraph.py
示例17: manager_by_token
def manager_by_token(self, token_address):
""" Find the channel manager for `token_address` and return a proxy to
interact with it.
If the token is not already registered it raises `EthNodeCommunicationError`,
since we try to instantiate a Channel manager with an empty address.
"""
if not isaddress(token_address):
raise ValueError('token_address must be a valid address')
if token_address not in self.token_to_channelmanager:
check_address_has_code(self.client, token_address) # check that the token exists
manager_address = self.manager_address_by_token(token_address)
if manager_address is None:
raise NoTokenManager(
'Manager for token 0x{} does not exist'.format(hexlify(token_address))
)
manager = ChannelManager(
self.client,
manager_address,
self.startgas,
self.gasprice,
self.poll_timeout,
)
self.token_to_channelmanager[token_address] = manager
self.address_to_channelmanager[manager_address] = manager
return self.token_to_channelmanager[token_address]
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:31,代码来源:registry.py
示例18: send_async
def send_async(self, receiver_address, message):
if not isaddress(receiver_address):
raise ValueError('Invalid address {}'.format(pex(receiver_address)))
if isinstance(message, Ack):
raise ValueError('Do not use send for Ack messages or Errors')
if len(message.encode()) > self.max_message_size:
raise ValueError('message size exceeds the maximum {}'.format(self.max_message_size))
messagedata = message.encode()
# Adding the receiver address into the echohash to avoid collisions
# among different receivers.
# (Messages that are not unique per receiver
# can result in hash colision, eg. Secret message sent to more than one
# node, this hash collision has the undesired effect of aborting
# message resubmission once a single node replied with an Ack)
echohash = sha3(messagedata + receiver_address)
# Don't add the same message twice into the queue
if echohash not in self.echohash_asyncresult:
ack_result = AsyncResult()
self.echohash_asyncresult[echohash] = WaitAck(ack_result, receiver_address)
# state changes are local to each channel/asset
queue_name = getattr(message, 'asset', '')
self._send(receiver_address, queue_name, message, messagedata, echohash)
else:
waitack = self.echohash_asyncresult[echohash]
ack_result = waitack.ack_result
return ack_result
开发者ID:raiden-network,项目名称:raiden,代码行数:34,代码来源:protocol.py
示例19: __init__
def __init__(self, raiden, asset_address, channel_manager_address, channel_graph):
"""
Args:
raiden (RaidenService): a node's service
asset_address (bin): the asset address managed by this instance
channel_manager_address (bin): The channel manager address.
channelgraph (networkx.Graph): a graph representing the raiden network
"""
if not isaddress(asset_address):
raise ValueError("asset_address must be a valid address")
self.partneraddress_channel = dict() #: maps the partner address to the channel instance
self.address_channel = dict() #: maps the channel address to the channel instance
# This is a map from a hashlock to a list of channels, the same
# hashlock can be used in more than one AssetManager (for exchanges), a
# channel should be removed from this list only when the lock is
# released/withdrawed but not when the secret is registered.
self.hashlock_channel = defaultdict(list) #: channels waiting on the conditional lock
self.asset_address = asset_address
self.channel_manager_address = channel_manager_address
self.channelgraph = channel_graph
self.raiden = raiden
transfermanager = TransferManager(self)
self.transfermanager = transfermanager
开发者ID:raiden-network,项目名称:raiden,代码行数:27,代码来源:assetmanager.py
示例20: add_token
def add_token(self, token_address):
if not isaddress(token_address):
raise ValueError('token_address must be a valid address')
transaction_hash = estimate_and_transact(
self.proxy,
'addToken',
self.startgas,
self.gasprice,
token_address,
)
self.client.poll(unhexlify(transaction_hash), timeout=self.poll_timeout)
receipt_or_none = check_transaction_threw(self.client, transaction_hash)
if receipt_or_none:
raise TransactionThrew('AddToken', receipt_or_none)
manager_address = self.manager_address_by_token(token_address)
if manager_address is None:
log.error('Transaction failed and check_transaction_threw didnt detect it')
raise RuntimeError('channelManagerByToken failed')
if log.isEnabledFor(logging.INFO):
log.info(
'add_token called',
token_address=pex(token_address),
registry_address=pex(self.address),
manager_address=pex(manager_address),
)
return manager_address
开发者ID:destenson,项目名称:raiden-network--raiden,代码行数:32,代码来源:registry.py
注:本文中的raiden.utils.isaddress函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论