Skip to content

faulknerpearce/blockchain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mini blockchain

Overall, this code provides a basic implementation of a blockchain in Python. However, it is important to note that this implementation is not secure and should not be used in production environments.

Overview

This project is a straightforward implementation of a blockchain using Python. A blockchain is a distributed ledger technology that allows secure and tamper-proof storage of transactions. This script provides a fundamental blockchain structure and incorporates key features for creating blocks, adding transactions, and ensuring the blockchain's integrity.

Features

1. Block Creation

Blocks are the building blocks of the blockchain. Each block contains a list of transactions and is linked to the previous block in the chain through a hash. This linkage ensures the immutability and chronological order of transactions.

2. Proof of Work

The script implements a proof-of-work algorithm, a fundamental component of blockchain consensus mechanisms. This algorithm is used to mine new blocks. Miners must find a nonce (a random number) that, when hashed with the block's data, results in a specific leading hash pattern (e.g., "000"). This process requires computational work and serves as a mechanism to deter malicious actors from adding fraudulent blocks to the chain.

3. Blockchain Validation

To maintain the blockchain's integrity, the script provides a function for validating the entire chain. It checks the correctness of block hashes and verifies that each block references the correct previous block. If any inconsistency is detected, it signals a potential breach in the blockchain's security.

4. Genesis Block

The blockchain starts with a genesis block, serving as the foundation of the chain. This block has no predecessors and is typically hard-coded into the system.

5. Block Printing

The script allows you to print the contents of each block. This includes the timestamp, list of transactions, and the block's hash. This feature is valuable for monitoring the blockchain's history and for debugging purposes.

6. Transaction Addition

Transactions are the data units stored in the blockchain. The script provides a method for adding new transactions to the blockchain. When added, these transactions are included in the next mined block.

Classes and Functions

Block

  • __init__(self, transactions, previous_hash): Initializes a block with a list of transactions and the previous block's hash.
  • print_block(self): Prints the contents of the block, including its timestamp, transactions, and hash.
  • generate_hash(self, nonce): Generates the hash for the block's contents, including a nonce, as part of the mining process.

Blockchain

  • __init__(self): Initializes a blockchain with an empty chain and creates the genesis block.
  • genesis_block(self): Creates the genesis block and adds it to the chain as the first block.
  • add_block(self, transactions): Adds a new block to the blockchain with the provided list of transactions.
  • print_blocks(self): Prints the contents of all blocks in the chain for monitoring and analysis.
  • validate_chain(self): Validates the integrity of the entire blockchain by checking block hashes and previous hash references.
  • proof_of_work(self, block, difficulty): Implements the proof-of-work algorithm to mine a block by finding a nonce with a specific leading hash pattern.

Other Functions

  • find_hash(transactions, difficulty): A utility function used for testing purposes. It finds a proof (nonce) that produces a hash with a specified leading hash pattern.

Usage

To use this script, follow these steps:

  1. Create a blockchain instance using Blockchain().
  2. Add transactions to the blockchain using add_block(transactions).
  3. Monitor the blockchain's history with print_blocks().
  4. Ensure blockchain integrity by calling validate_chain().
  5. Implement mining with proof_of_work(block, difficulty) to mine new blocks.

This simple blockchain implementation offers insights into blockchain concepts, including block creation, proof of work, and blockchain validation. It can serve as a foundation for more complex blockchain applications and understanding the inner workings of blockchain technology.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages