Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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