Introduction
Blockchain is a data structure that maintains a growing list of records or blocks. Each block contains information such as transaction data, timestamp, and a reference to the previous block. The blockchain is resistant to data modification and is often used to record the transactions of cryptocurrencies such as Bitcoin.
How Does Blockchain Work?
Each block in the blockchain contains a hash of the previous block. This connects the blocks to each other and creates a chain. The blockchain uses a decentralized network of peers who maintain and verify the chain. When a new block is added, all peers in the network must agree that the block is valid. This makes the blockchain extremely secure and resistant to fraud.
Building a Blockchain with Python
Building a blockchain with Python is a great way to understand how they work. Here is an example of how it could be done.
Dependency Installation: Python offers a number of libraries that can help streamline the creation of your blockchain. One of them is hashlib, which can be used to hash your block.
pip install hashlib
Creating the Blockchain: We create a Blockchain class with methods to create new blocks and to verify the integrity of the chain.
import hashlib
import time
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': time.time(),
'proof': proof,
'previous_hash': previous_hash}
self.chain.append(block)
return block
def get_previous_block(self):
return self.chain[-1]
def proof_of_work(self, previous_proof):
new_proof = 1
check_proof = False
while check_proof is False:
hash_operation = hashlib.sha256(str(new_proof**2 - previous_proof**2).encode()).hexdigest()
if hash_operation[:4] == '0000':
check_proof = True
else:
new_proof += 1
return new_proof
def hash(self, block):
encoded_block = json.dumps(block, sort_keys=True).encode()
return hashlib.sha256(encoded_block).hexdigest()
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
Conclusion
This is a very simple example and real blockchain like Bitcoin or Ethereum has many other features and security measures. However, I hope this has given you a basic understanding of how a blockchain works.