Skip to content

Instantly share code, notes, and snippets.

@dvf dvf/blockchain.py
Last active Sep 19, 2018

Embed
What would you like to do?
Step 8: The Mining Endpoint
import hashlib
import json
from time import time
from uuid import uuid4
from flask import Flask, jsonify, request
...
@app.route('/mine', methods=['GET'])
def mine():
# We run the proof of work algorithm to get the next proof...
last_block = blockchain.last_block
last_proof = last_block['proof']
proof = blockchain.proof_of_work(last_proof)
# We must receive a reward for finding the proof.
# The sender is "0" to signify that this node has mined a new coin.
blockchain.new_transaction(
sender="0",
recipient=node_identifier,
amount=1,
)
# Forge the new Block by adding it to the chain
previous_hash = blockchain.hash(last_block)
block = blockchain.new_block(proof, previous_hash)
response = {
'message': "New Block Forged",
'index': block['index'],
'transactions': block['transactions'],
'proof': block['proof'],
'previous_hash': block['previous_hash'],
}
return jsonify(response), 200
@Niedzwiedzw

This comment has been minimized.

Copy link

Niedzwiedzw commented Jan 13, 2018

What's node_identifier

@d2718nis

This comment has been minimized.

Copy link

d2718nis commented Jul 26, 2018

The node_identifier defined a little bit earlier at the Step 6: Setting up Flask. Briefly, it's a unique identifier of the node (aka the miner) which successfully produced a new block: solved the mathematical problem known as proof of work. It will be rewarded with 1 coin of revenue at this example.

You could get more info regarding the mining process here: https://en.bitcoin.it/wiki/Mining#Reward

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.