BLOCKCHAIN PROGRAMMING 1
Introduction 2
Importing the Libraries import datetime import hashlib import json from flask import Flask, jsonify 3
#Part 1: Building a Blockchain class Blockchain: def __init__(self): self.chain = [ ] self.create_block(proof = 1, previous_hash = '0') def create_block(self, proof, previous_hash): block = {'index': len(self.chain) + 1, 'timestamp': str(datetime.datetime.now()), 'proof': proof, 'previous_hash': previous_hash} self.chain.append(block) return block 4
#Part 1: Building a Blockchain def create_block(self, proof, previous_hash): block = {'index': len(self.chain) + 1, 'timestamp': str(datetime.datetime.now()), 'proof': proof, 'previous_hash': previous_hash} self.chain.append(block) return block 5
Introduction 6
Introduction 7 def hash(self, block): encoded_block = json.dumps(block, sort_keys = True).encode() return hashlib.sha256(encoded_block).hexdigest()
8 def is_chain_valid(self, chain): previous_block = chain[0] block_index = 1 while block_index < len(chain): block = chain[block_index] if block['previous_hash'] != self.hash(previous_block): return False previous_proof = previous_block['proof'] proof = block['proof'] hash_operation = hashlib.sha256(str(proof**2 previous_proof**2).encode()).hexdigest() if hash_operation[:4] != '0000': return False previous_block = block block_index += 1 return True
9 # Part 2 - Mining our Blockchain # Creating a Web App app = Flask(__name__) app.config['JSONIFY_PRETTYPRINT_REGULAR'] = False # Creating a Blockchain blockchain = Blockchain() from flask import Flask app = Flask(__name__) @app.route ('/’) def hello_world(): return 'Hello, World!' A minimal Flask application looks something like this:
10 # Mining a new block @app.route('/mine_block', methods = ['GET']) def mine_block(): previous_block = blockchain.get_previous_block() previous_proof = previous_block['proof'] proof = blockchain.proof_of_work(previous_proof) previous_hash = blockchain.hash(previous_block) block = blockchain.create_block(proof, previous_hash) response = {'message': 'Congratulations, you just mined a block!', 'index': block['index'], 'timestamp': block['timestamp'], 'proof': block['proof'], 'previous_hash': block['previous_hash']} return jsonify(response), 200 # HTTP code 200 is for success , OK
11 # Getting the full Blockchain @app.route('/get_chain', methods = ['GET']) def get_chain(): response = {'chain': blockchain.chain, 'length': len(blockchain.chain)} return jsonify(response), 200 # Checking if the Blockchain is valid @app.route('/is_valid', methods = ['GET']) def is_valid(): is_valid = blockchain.is_chain_valid(blockchain.chain) if is_valid: response = {'message': 'All good. The Blockchain is valid.'} else: response = {'message’: ‘The Blockchain is not valid.'} return jsonify(response), 200
12 # Running the app app.run(host = ‘0.0.0.0’, port = 5000)

Part 2 Blockchain Programming Using Python.pdf

  • 1.
  • 2.
  • 3.
    Importing the Libraries importdatetime import hashlib import json from flask import Flask, jsonify 3
  • 4.
    #Part 1: Buildinga Blockchain class Blockchain: def __init__(self): self.chain = [ ] self.create_block(proof = 1, previous_hash = '0') def create_block(self, proof, previous_hash): block = {'index': len(self.chain) + 1, 'timestamp': str(datetime.datetime.now()), 'proof': proof, 'previous_hash': previous_hash} self.chain.append(block) return block 4
  • 5.
    #Part 1: Buildinga Blockchain def create_block(self, proof, previous_hash): block = {'index': len(self.chain) + 1, 'timestamp': str(datetime.datetime.now()), 'proof': proof, 'previous_hash': previous_hash} self.chain.append(block) return block 5
  • 6.
  • 7.
    Introduction 7 def hash(self, block): encoded_block= json.dumps(block, sort_keys = True).encode() return hashlib.sha256(encoded_block).hexdigest()
  • 8.
    8 def is_chain_valid(self,chain): previous_block = chain[0] block_index = 1 while block_index < len(chain): block = chain[block_index] if block['previous_hash'] != self.hash(previous_block): return False previous_proof = previous_block['proof'] proof = block['proof'] hash_operation = hashlib.sha256(str(proof**2 previous_proof**2).encode()).hexdigest() if hash_operation[:4] != '0000': return False previous_block = block block_index += 1 return True
  • 9.
    9 # Part 2- Mining our Blockchain # Creating a Web App app = Flask(__name__) app.config['JSONIFY_PRETTYPRINT_REGULAR'] = False # Creating a Blockchain blockchain = Blockchain() from flask import Flask app = Flask(__name__) @app.route ('/’) def hello_world(): return 'Hello, World!' A minimal Flask application looks something like this:
  • 10.
    10 # Mining anew block @app.route('/mine_block', methods = ['GET']) def mine_block(): previous_block = blockchain.get_previous_block() previous_proof = previous_block['proof'] proof = blockchain.proof_of_work(previous_proof) previous_hash = blockchain.hash(previous_block) block = blockchain.create_block(proof, previous_hash) response = {'message': 'Congratulations, you just mined a block!', 'index': block['index'], 'timestamp': block['timestamp'], 'proof': block['proof'], 'previous_hash': block['previous_hash']} return jsonify(response), 200 # HTTP code 200 is for success , OK
  • 11.
    11 # Getting thefull Blockchain @app.route('/get_chain', methods = ['GET']) def get_chain(): response = {'chain': blockchain.chain, 'length': len(blockchain.chain)} return jsonify(response), 200 # Checking if the Blockchain is valid @app.route('/is_valid', methods = ['GET']) def is_valid(): is_valid = blockchain.is_chain_valid(blockchain.chain) if is_valid: response = {'message': 'All good. The Blockchain is valid.'} else: response = {'message’: ‘The Blockchain is not valid.'} return jsonify(response), 200
  • 12.
    12 # Running theapp app.run(host = ‘0.0.0.0’, port = 5000)