def transaction(): form=TransactionForm() # current_user.balance=10000 # db.session.commit() if form.validate_on_submit(): The_one=User.query.filter_by(username=form.receiver.data).first() The_two=User.query.filter_by(username=form.sender.data).first() if current_user.balance>=int(form.amount.data) and int(form.amount.data)>0 and current_user.balance>=0 and The_one!=None and The_two!=None and The_two.username==current_user.username : amount=form.amount.data data=str(form.sender.data)+str(form.receiver.data) block=Block(number=amount,data=data) blockchain=Blockchain() blockchain.mine_block(block) block_=Block_(amount=amount,data=data,hash=block.hash(),nonce=block.nonce,previous_hash=block.previous_hash) db.session.add(block_) db.session.commit() flash("Your transaction is Successfull!") for ock in Block_.query.all(): if ock.id!=1: ock.previous_hash=a db.session.commit() a=ock.hash current_user.balance-=int(form.amount.data) The_one.balance+=int(form.amount.data) # for testing purpose current_user.balance=10000 db.session.commit() else: flash('Transaction not granted') return render_template('transaction.html',form=form)
def test_add_block_invalid(self): block = Block(self.blockchain.latest_block.index, self.blockchain.latest_block.hash, datetime.utcnow().timestamp(), 'new-block', None) block.hash = Blockchain.calculate_hash_for_block(block) self.blockchain.add_block(block) self.assertNotEqual(block, self.blockchain.latest_block)
def create_genesis_block(self): """ A function to generate genesis block and appends it to the chain. The block has index 0, previous_hash as 0, and a valid hash. """ genesis_block = Block(0, [], time.time(), "0") genesis_block.hash = genesis_block.compute_hash() self.chain.append(genesis_block)
def block_serializer(data): block = Block(index=data['index']) for transaction in data['transactions']: block.add_transaction(sender=transaction['sender'], receiver=transaction['receiver'], amount=transaction['amount'], timestamp=transaction['timestamp'], thash=transaction['hash']) block.hash = data['hash'] return block
def chain_deserializer(chain_json): chain = [] for block_json in chain_json: transactions = transactions_deserializer(block_json['transactions']) block_to_append = Block(block_json['timestamp'], transactions, block_json['prev_hash']) block_to_append.nonce = block_json['nonce'] block_to_append.hash = block_json['hash'] chain.append(block_to_append) return chain