Project description:

  • In this project, you will create a basic C implementation of the blockchain data structure.

The user interface of your program should look something like this:

Choose an option:
1. Add a new block to the chain
2. View the chain
3. Check chain validity
4. Search for a block
5. Mine new block

Enter your choice:

1.Specific Requirements:

R1: Create a function for generating hashes
R2: Create a Block data structure
R3: Create a Blockchain data structure
R4. Create a program that adds blocks to your blockchain
R5: Print out the blockchain (view the chain)
R6: Create an algorithm that tests the validity of the blockchain
R7: Create a function that searches the blockchain for a particular hash
R8: Implement a function to "mine" a new block

R1: Create a "Block"

Assumptions:

  • All blocks hold string data
  • The string data is maximum 50 characters long.

A block is composed of the following properties:

  • Data you want to put in the block
  • Hash of the current block

The parameters for hashing is:

  • Current block data
  • Previous hash
  • Current date and time

R2: Create a hash for the block

Create the algorithm for generating a hash for the current block.

The formula for hashing a block is:

String dataToHash = (hash of previous block) + (current time) + (data in the current block)

R3: Create a Block data structure

The block has the following properties:

Properties Description
Data in the block String data
Maximum 25 characters in the string
Current time Timestamp when the block was created
Previous hash Hash of the previous block
The genesis block has hash = 0

R3: Create a Blockchain data structure

Create a blockchain data structure. see image.

Implement the chain with the data structure of your choice (array, linked list, doubly linked list, stack, queue, etc)

R4. Create a program that adds blocks to your blockchain

Write a program that adds blocks to the blockchain.

Your program should:

  • Ask user what data they want to store (string data, maximum 20 characters)
  • Create a new block to store the user data
  • Add the block to the blockchain

R5. Print out the blockchain

Add an option to your program so the user can print out the entire blockchain.

The visual output should be something like this:
(Note: these are fake hashes)

Block 1: 192333101
Data = “Jenelle”
Previous Hash: 0

Block 2: 144000332
Data = “Peter”
Previous hash = 192333101

Block 3: 993811091
Data = “Roy”
Previous hash = 144000332

etc
etc

R6: Create an algorithm that tests the validity of the blockchain

Given a blockchain data structure, write a function to verify that every block in the chain is valid.
If the entire chain is valid, output: "Chain is valid" to the screen
Else, output the block(s) that are invalid + the reason why.

R8: Write a program to mine blocks

Program that can mine new blocks. You do not need to add data to your new blokc. Just use

(previous hash + x) ---> and solve for x

Note - this mining process might take a long time (and it may never complete, but that's okay!)

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.