2.0 Updates:
  1. 2023-02-22: Clarified partial credit.

Blockchain development mini-project suggestions

Partial Credit

A major simplifiying strategy is to remove all of the JSON from the design and use only Serialized Java Objects for network communication as we did with the ColorServer.

Even if you do not get your full blockchain assignment running, I can give partial credit if you complete some of these development strategy utility programs. Put each one in a separate sub-directory, with your clear description of what you have done in a file called 0-readme.txt. Zip together all your projects and turn that in. You must also create a TII file with all of your code in it and submit it to the TII link.

Development strategies using small utility programs

This assignment is hard, and can easily spiral out of control during development because of the complexity, and the number of components that have to work together. Here are my recommendations on one way you might wish to go about developing your blockchain assignment. The individual "mini projects" are suggestions with the idea that you will pick your own versions of the small components that you want to get running during the development process.

Create a collection of named "working" subdirectories where you are going to put running code that implements small parts of the blockchain assignment. How you go about this is up to you, but here is an example set that you might use. The critical feature of these mini projects is that each one runs, implementing a piece of the full Blockchain project. No matter what other development you do, you still have this running code to fall back on. When you want to use the code in another mini project then copy it to a new directory so that you always have the current running version to fall back on. The point of breaking down the larger project into running mini-projects is to help you complete this large assignment.

Throughout the development process you may wish to step back, look at the bigger picture of what you are designing, and work with pencil and paper to sort out your design.

If you don't complete a regular version of the blockchain assignment you can also still earn partial credit for the following, if you follow the submission rules: Put each project in its own labeled subdirectory. Put a 0-readme.txt file in the subdirectory with a brief description of what the mini-project achieves. Zip your main blockchain directory together with all of the mini-project subdirectories and submit to D2L in the usual way. Concatenate all your Java code and submit to the TII link in the usual way. For each of these independent mini projects, create an entry for it at the bottom of your checklist and mark it "yes". This is a backup plan: even a partially running blockchain assignment that makes use of your mini-project code will tend to be worth more. Keep in mind that we are looking for ways to give you credit for good work towards completing the full assignment.

Continue in this way, with each piece of running code residing in its own directory. If anything breaks you are never more than a few minutes from erasing the current code and falling back on a large collection of still-running code, so you can backtrack slightly and try again. You will want to add other code for abandoning work when a block has already been verified, for not adding a verified block to a blockchain that already has the block in it, writing out your entire blockchain to disk, and so on.

Each time you complete some standalone portion of the full project as above, add a line at the bottom of your checklist describing it and saying "Yes" you got that done. Make sure each named subdirectory has a 0-readme.txt file in it that briefly describes what the running code does.

Lastly, when you are ready, combine together the small pieces you have working, from your various subdirectories, to complete your Blockchain assignment. Typically you'll start doing this while simultaneously continuing to work out small utility code along the way, in your subdirectories.