def make_from_route_from_counter(counter): from_channel = factories.make_channel( partner_balance=next(counter), partner_address=factories.HOP1, token_address=factories.make_address(), channel_identifier=next(counter), ) from_route = factories.route_from_channel(from_channel) expiration = factories.UNIT_REVEAL_TIMEOUT + 1 from_transfer = factories.make_signed_transfer_for( from_channel, factories.LockedTransferSignedStateProperties( transfer=factories.LockedTransferProperties( balance_proof=factories.BalanceProofProperties( transferred_amount=0, token_network_identifier=from_channel. token_network_identifier, ), amount=1, expiration=expiration, secret=sha3(factories.make_secret(next(counter))), initiator=factories.make_address(), target=factories.make_address(), payment_identifier=next(counter), ), sender=factories.HOP1, pkey=factories.HOP1_KEY, ), ) return from_route, from_transfer
def test_balance_proof_invalid_attributes(): invalid_nonces = [-10, 0, UINT64_MAX + 1] invalid_transferred_amounts = [-1, UINT256_MAX + 1] invalid_locksroots = [urandom(31), urandom(33)] invalid_signatures = [urandom(64), urandom(66)] properties_unsigned = factories.BalanceProofProperties() properties_signed = factories.BalanceProofSignedStateProperties( signature=urandom(64)) for properties in (properties_unsigned, properties_signed): for nonce in invalid_nonces: with pytest.raises(ValueError): factories.create(factories.replace(properties, nonce=nonce)) for amount in invalid_transferred_amounts: with pytest.raises(ValueError): factories.create( factories.replace(properties, transferred_amount=amount)) for locksroot in invalid_locksroots: with pytest.raises(ValueError): factories.create( factories.replace(properties, locksroot=locksroot)) for signature in invalid_signatures: with pytest.raises(ValueError): factories.create( factories.replace(properties_signed, signature=signature))
def update(self, amount, lock): self._pending_locks = channel.compute_locks_with(self._pending_locks, lock) if self.properties: self.properties = factories.replace( self.properties, locked_amount=self.properties.locked_amount + amount, locksroot=compute_locksroot(self._pending_locks), nonce=self.properties.nonce + 1, ) else: self.properties = factories.BalanceProofProperties( transferred_amount=0, locked_amount=amount, nonce=1, locksroot=compute_locksroot(self._pending_locks), canonical_identifier=self._canonical_identifier, )
def update(self, amount, lockhash): self._merkletree = channel.compute_merkletree_with( self._merkletree, lockhash) if self.properties: self.properties = factories.replace( self.properties, locked_amount=self.properties.locked_amount + amount, locksroot=merkleroot(self._merkletree), nonce=self.properties.nonce + 1, ) else: self.properties = factories.BalanceProofProperties( transferred_amount=0, locked_amount=amount, nonce=1, locksroot=merkleroot(self._merkletree), canonical_identifier=self._canonical_identifier, )
def test_mediator_task_view(): """Same as above for mediator tasks.""" secret1 = factories.make_secret(1) locked_amount1 = 11 payee_transfer = factories.create( factories.LockedTransferProperties(secret=secret1)) payer_transfer = factories.create( factories.LockedTransferSignedStateProperties( transfer=factories.LockedTransferProperties( secret=secret1, payment_identifier=1, balance_proof=factories.BalanceProofProperties( locked_amount=locked_amount1, ), ), )) secrethash1 = payee_transfer.lock.secrethash initiator = payee_transfer.initiator initiator_channel = factories.create( factories.NettingChannelStateProperties( partner_state=factories.NettingChannelEndStateProperties( address=initiator, balance=100), )) routes = [factories.route_from_channel(initiator_channel)] transfer_state1 = MediatorTransferState(secrethash=secrethash1, routes=routes) transfer_state1.transfers_pair.append( MediationPairState( payer_transfer=payer_transfer, payee_transfer=payee_transfer, payee_address=payee_transfer.target, )) task1 = MediatorTask( token_network_identifier=factories.UNIT_TOKEN_NETWORK_ADDRESS, mediator_state=transfer_state1, ) secret2 = factories.make_secret(2) locked_amount2 = 13 transfer2 = factories.create( factories.LockedTransferSignedStateProperties( transfer=factories.LockedTransferProperties( secret=secret2, payment_identifier=2, balance_proof=factories.BalanceProofProperties( locked_amount=locked_amount2, ), ), )) secrethash2 = transfer2.lock.secrethash transfer_state2 = MediatorTransferState(secrethash=secrethash2, routes=routes) transfer_state2.waiting_transfer = WaitingTransferState(transfer=transfer2) task2 = MediatorTask( token_network_identifier=factories.UNIT_TOKEN_NETWORK_ADDRESS, mediator_state=transfer_state2, ) payment_mapping = {secrethash1: task1, secrethash2: task2} view = transfer_tasks_view(payment_mapping) assert len(view) == 2 if view[0].get('payment_identifier') == '1': pending_transfer, waiting_transfer = view else: waiting_transfer, pending_transfer = view assert pending_transfer.get('role') == waiting_transfer.get( 'role') == 'mediator' assert pending_transfer.get('payment_identifier') == '1' assert waiting_transfer.get('payment_identifier') == '2' assert pending_transfer.get('locked_amount') == str(locked_amount1) assert waiting_transfer.get('locked_amount') == str(locked_amount2)