Learning about the Blockchain Since this is a very hot topic, I would love to offer an elective in Blockchain technology next year (and possibly in cryptocurrencies as well).  I know that my students are already very enthusiastic about the topic, so it would be a well-attended course.

However, I know basically nothing about this topic right now, and what I've found has been quite confusing.  It seems very hard to find an entry point, particularly since I ultimately want enough technical and mathematical background to create a meaningful course.

Can anyone recommend a way to approach this material?  Essentially, this would be a curriculum of self-learning.  What are the topics to tackle, and in what order can they be learned without having to do a straight "drop into the deep end"?

Additionally, recommendations for good resources that work through the topic in an organized are always appreciated, as they are very useful in the creation of an ultimate curriculum.  I prefer written (or audio) materials to videos, but I am open to anything that works through the material in a comprehensible way.
Try this as a trivialised example in order to help people get their head around some of the ideas. It's not strictly accurate, but I think it will help with understanding the concept.


Start with a short message (in text) and round up to a multiple of 16 bytes, padding with spaces.
Replace the final space with a non-space character
Take the m5sum of the result, and look only at the last digit. If this is '1', you're done and have finished the block.
If you're not done, go back to step 2, and modify your non-space trailing padding.
After finishing a block, you can append a new message, pad again, and repeat the process of modifying the whole message to achieve the target hash.


In practice, the hash function is expensive to calculate (and will have far fewer collisions meaning many iterations will be required to search for a suitable padding section).

Although a single block could be modified, once the modified block has been wrapped into a subsequent block, a couple of times, the compute cost of re-writing an older message grows significantly.

What this generates is a publicly readable message, which can't be re-written in the future (and everyone can verify the accuracy or an old message).