SlideShare a Scribd company logo
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)

More Related Content

PPTX
Lecture 17 (Blockchain Implementation using Python).pptx
PPTX
Blockchain - a simple implementation
PDF
BlockChain implementation by python
PPTX
Let's Build A Blockchain... in 40 minutes!
PDF
A Comprehensive Guide To Create Blockchain In Python | Blockchain Development...
PPTX
Blockchain
PDF
Scalaで実装してみる簡易ブロックチェーン
PDF
BDD - Behavior Driven Development Webapps mit Groovy Spock und Geb
Lecture 17 (Blockchain Implementation using Python).pptx
Blockchain - a simple implementation
BlockChain implementation by python
Let's Build A Blockchain... in 40 minutes!
A Comprehensive Guide To Create Blockchain In Python | Blockchain Development...
Blockchain
Scalaで実装してみる簡易ブロックチェーン
BDD - Behavior Driven Development Webapps mit Groovy Spock und Geb

Similar to Part 2 Blockchain Programming Using Python.pdf (12)

PPTX
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
PPTX
Let's build a blockchain.... in 40 minutes!
PDF
Node.js extensions in C++
PDF
Blockchain: Developer's Perspective (Java Edition)
PPTX
Project_Setup_and_Implementation_that helps in smart contract.pptx
PDF
Spock: Test Well and Prosper
PPTX
Play + scala + reactive mongo
PDF
Cracking JWT tokens: a tale of magic, Node.JS and parallel computing - Node.j...
PDF
The Ring programming language version 1.5.1 book - Part 36 of 180
PDF
Python concurrency: libraries overview
PDF
The Ring programming language version 1.5.2 book - Part 37 of 181
PDF
The Ring programming language version 1.9 book - Part 46 of 210
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Let's build a blockchain.... in 40 minutes!
Node.js extensions in C++
Blockchain: Developer's Perspective (Java Edition)
Project_Setup_and_Implementation_that helps in smart contract.pptx
Spock: Test Well and Prosper
Play + scala + reactive mongo
Cracking JWT tokens: a tale of magic, Node.JS and parallel computing - Node.j...
The Ring programming language version 1.5.1 book - Part 36 of 180
Python concurrency: libraries overview
The Ring programming language version 1.5.2 book - Part 37 of 181
The Ring programming language version 1.9 book - Part 46 of 210
Ad

More from Jyoti Yadav (19)

PDF
Part 4: Understanding the working of Smart Contracts
PDF
Part 3 Introduction to Cryptocurrency.pdf
PDF
Part 1: Introduction to Blockchain Fundamentals
PDF
Natural Language Processing Algorithm...
PDF
5. Types of Clustering Algorithms in ML.pdf
PDF
8. Deep Learning.pdf
PDF
7. Reinforcement Learning.pdf
PDF
6. Association Rule.pdf
PDF
4. Classification.pdf
PDF
3. Regression.pdf
PDF
2. Data Preprocessing.pdf
PDF
1. Demystifying ML.pdf
PDF
6. Web Publishing
PDF
5. Web Technology CSS Advanced
PDF
4. Web Technology CSS Basics-1
PDF
3. Web Technology Advanced HTML
PDF
2b. Web Technology HTML Basics-2
PDF
2a web technology html basics 1
PDF
1. web technology basics
Part 4: Understanding the working of Smart Contracts
Part 3 Introduction to Cryptocurrency.pdf
Part 1: Introduction to Blockchain Fundamentals
Natural Language Processing Algorithm...
5. Types of Clustering Algorithms in ML.pdf
8. Deep Learning.pdf
7. Reinforcement Learning.pdf
6. Association Rule.pdf
4. Classification.pdf
3. Regression.pdf
2. Data Preprocessing.pdf
1. Demystifying ML.pdf
6. Web Publishing
5. Web Technology CSS Advanced
4. Web Technology CSS Basics-1
3. Web Technology Advanced HTML
2b. Web Technology HTML Basics-2
2a web technology html basics 1
1. web technology basics
Ad

Recently uploaded (20)

PDF
Computing-Curriculum for Schools in Ghana
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PPTX
master seminar digital applications in india
PPTX
GDM (1) (1).pptx small presentation for students
PDF
Classroom Observation Tools for Teachers
PDF
Anesthesia in Laparoscopic Surgery in India
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PDF
VCE English Exam - Section C Student Revision Booklet
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
Insiders guide to clinical Medicine.pdf
PPTX
Lesson notes of climatology university.
PPTX
Cell Structure & Organelles in detailed.
Computing-Curriculum for Schools in Ghana
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
master seminar digital applications in india
GDM (1) (1).pptx small presentation for students
Classroom Observation Tools for Teachers
Anesthesia in Laparoscopic Surgery in India
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
Microbial disease of the cardiovascular and lymphatic systems
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
Abdominal Access Techniques with Prof. Dr. R K Mishra
STATICS OF THE RIGID BODIES Hibbelers.pdf
Final Presentation General Medicine 03-08-2024.pptx
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
VCE English Exam - Section C Student Revision Booklet
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
Insiders guide to clinical Medicine.pdf
Lesson notes of climatology university.
Cell Structure & Organelles in detailed.

Part 2 Blockchain Programming Using Python.pdf

  • 3. Importing the Libraries import datetime import hashlib import json from flask import Flask, jsonify 3
  • 4. #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
  • 5. #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
  • 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 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. 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. 12 # Running the app app.run(host = ‘0.0.0.0’, port = 5000)