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.

• A layman's introduction to cryptocurrencies: lrb.co.uk/v38/n08/john-lanchester/when-bitcoin-grows-up – pluke Jun 8 '17 at 21:24
• I'm sure a simple example can be done as a group exercise (with a trivial hash). I'll try and develop something unless someone beats me to it. – Sean Houlihane Jun 9 '17 at 9:38
• Block chains are not a currency thing (though are used by some). see en.wikipedia.org/wiki/Blockchain they are also used in the revision control system git, ipfs, and other systems. The basics are take the hash of the parent block, append the new block, and create a new hash. – ctrl-alt-delor Jun 10 '17 at 16:03
• Thanks for that - I didn't know that! But nevertheless, in order to understand the technology of finance going forward, it seems like Blockchain is becoming rather foundational. So it still has a place in a "Tech of Finance" course. – Ben I. Jun 10 '17 at 16:08
• are you teaching this at the university level? it does seem like a very interesting topic to teach! – jkeesh Jun 14 '17 at 20:57

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.

1. Start with a short message (in text) and round up to a multiple of 16 bytes, padding with spaces.

2. Replace the final space with a non-space character

3. 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.

4. If you're not done, go back to step 2, and modify your non-space trailing padding.

5. 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).