def testTransactionUpdate():
    senderWallet = Wallet()
    firstRecipiemt = 'firstRecipient'
    firstAmount = 50
    transaction = Trasaction(senderWallet, firstRecipiemt, firstAmount)

    nextRecipient = 'nextRecipient'
    nextAmount = 75
    transaction.update(senderWallet, nextRecipient, nextAmount)

    assert transaction.output[nextRecipient] == nextAmount
    assert transaction.output[senderWallet.address] == \
           senderWallet.balance - firstAmount - nextAmount
    assert Wallet.verify(transaction.input['public_key'], transaction.output,
                         transaction.input['signature'])

    toFirstAgainAmount = 25
    transaction.update(senderWallet, firstRecipiemt, toFirstAgainAmount)

    assert transaction.output[firstRecipiemt] == \
           firstAmount + toFirstAgainAmount
    assert transaction.output[senderWallet.address] == \
           senderWallet.balance - firstAmount - nextAmount - toFirstAgainAmount
    assert Wallet.verify(transaction.input['public_key'], transaction.output,
                         transaction.input['signature'])
def testTransaction():
    senderWallet = Wallet()
    recipient = 'recipient'
    amount = 50
    transaction = Trasaction(senderWallet, recipient, amount)

    assert transaction.output[recipient] == amount
    assert transaction.output[
        senderWallet.address] == senderWallet.balance - amount

    assert 'timestamp' in transaction.input
    assert transaction.input['amount'] == senderWallet.balance
    assert transaction.input['address'] == senderWallet.address
    assert transaction.input['public_key'] == senderWallet.public_key

    assert Wallet.verify(transaction.input['public_key'], transaction.output,
                         transaction.input['signature'])
Пример #3
0
    def isValidTransaction(transaction):
        """
        Validate a transac
        Raise a exception for invalid transaction

        Sprawdź poprawność transakcji
        Podnieś wyjątek dla nieprawidłowej transakcji
        """

        if transaction.input == MINING_REWARD_INPUT:
            if list(transaction.output.values()) != [MINING_REWARD]:
                raise Exception('Invalid mining reward')
            return

        outputTotal = sum(transaction.output.values())

        if transaction.input['amount'] != outputTotal:
            raise Exception('Invalid transaction output values')

        if not Wallet.verify(transaction.input['public_key'],
                             transaction.output,
                             transaction.input['signature']):
            raise Exception('Invalid signature')
Пример #4
0
def testVerifyValidSing():
    data = {'foo': 'testData'}
    wallet = Wallet()
    signature = wallet.sign(data)

    assert Wallet.verify(wallet.public_key, data, signature)