Project description:
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:
A block is composed of the following properties:
The parameters for hashing is:
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:
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!)