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'])
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')
def testVerifyValidSing(): data = {'foo': 'testData'} wallet = Wallet() signature = wallet.sign(data) assert Wallet.verify(wallet.public_key, data, signature)