Version 6.0
Updates:
  1. 2023-05-22: changed the submission format to .java.txt

Checklist—Blockchain


The required files, named exactly as follows:

Include your BlockchainLedgerSample.json, BlockchainLog.txt, BlockInput0.txt, BlockInput1.txt and BlockInput2.txt files as LABELED java comments at the bottom of your Blockchain.java.txt file.

Change "No" to "Yes" as you complete the tasks:

Task Complete?
[ENTER YOUR NAME HERE] .
ADMINISTRATION:
I understand that if I copy code from others and submit with my name on it, this is plagiarism and I will fail the class No
I understand that if I claim YES on this checklist for work that was not actually done, this is an academic integrity violation. No
I understand that I can use the class website Blockchain utility code Elliott provided, but no other problem-solution code that was written by others. No
Compiles with the correct version of Java used for this class? No
"javac Blockchain.java" (twice, with appropriate flags) in one directory compiles all code, without errors, from within a console window, and the command line? No
Correct headers for all Java source files? No
Included my BlockchainLedgerSample.json file at the bottom of my code as java comments? No
Included my labled input files at the bottom of my code as java comments? No
Completed at least TWO postings to the Blockchain forum and placed at the bottom of my code as java comments? No
Downloaded my D2L submission to verify not corrupt (optional / recommended) No
Did you consider simplifying the assignment? No
Extensive comments in your code showing you know how the program works [required in your own words—no plagiarism!] No
System will run with supplied batch files No
Process 2 startup triggers the running of the whole system No
Provided clear console log file for my running processes, showing how the system runs. No
Provided sample JSON output of my blockchain in BlockchainLedgerSample.json No
Three processes run from single program with arg 0,1,2 No
Runs from the master grading script and sub-scripts? No
Writes final version of the ledger to BlockchainLedger.json from process 0 No
.
I ran and understand the Blockchain utilities program No
I ran and understand the Blockchain input utilities program with JSON No
I ran and understand the Blockchain Work program No
I ran and understand the Blockchain Process Coordination program No
.
SIMPLIFICATION STRATEGY:
For less credit I have removed all JSON and used Serialized Java Objects (as in ColorServer) instead. No
.
THE PROGRAM:
Processes produce a basic blockchain ledger No
Processes produce a basic blockchain ledger No
All three processes contribute blocks to the ledger No
Blocks are verified by SHA256 hash of 3 items: previous hash, random seed, data No
Reads prescribed data files for initial data No
Three processes cooperate No
Processes each serve multiple ports No
.
Updated blockchain ledger is distributed to three nodes No
Process 0 writes the ledger to disk after each update to it No
Ledger is marshaled to other nodes as JSON No
Un-verified blocks are sent to all other processes No
Un-verified blocks are marshaled to other processes as JSON No
.
Digital Signatures used No
Digital Signatures are verified No
Public Keys are kept with process IDs for all nodes No
A verifying block checks the signature on the data hash before verification No
Work has been implemented. No
Work method periodically checks to see if the block has already been verified No
Nodes compete to verify blocks No
A priority queue was implemented No
.
Optional
.
Blocks are fully listed after console command to do so No
Records are listed one to a line No
Blockchain is validated after console command No
Credit is given to nodes for validating blocks No
Blocks are fully verified with SHA256 and signatures No
No
Hard! (Optional)
.
Multiple blockchains are queued for processing No
Blockchain forks are all handled... No
Same length / same blockID / different timestamp handled No
Same length / different blockID handled No
You have code to verify an entire blockchain No
Different length blockchain handled No
Did you use args 2-N for extra functionality? No
TBD No
No
CREATE YOUR OWN MINI-PROJECT ENTRIES HERE: .
Standalone three-process coordination is running. No
Standalone program creates a blockchain and writes a JSON version to disk. No
Standalone work utilty code runs. No
Add the rest of your mini-projects here, line by line... No
No
BRAGGING RIGHTS BELOW THIS LINE .
Real work has been implemented based on hash value No
Use the dataHash field to verify local records against cache No
Extra command line functionality documented in three places? (Console prelude, in program, bottom checklist.) No
For fun ran system on three different computers No
Clear written analysis of this program's security weaknesses No
You've written up technological updates to the tools used No
Reconstruct entire blockchain when error detected in early block No
Very hard! Any number of peers supported by DHT multicast group with persistent public/private keys No
[Fill in custom extra feature] add multiple entries as needed Yes

Your special comments to me, only if needed:

Comment one

Comment two, etc.