Answers.Body: <p>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.</p>
  
  <ol>
  <li><p>Start with a short message (in text) and round up to a multiple of 16 bytes, padding with spaces.</p></li>
  <li><p>Replace the final space with a non-space character</p></li>
  <li><p>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.</p></li>
  <li><p>If you're not done, go back to step 2, and modify your non-space trailing padding.</p></li>
  <li><p>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.</p></li>
  </ol>
  
  <p>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).</p>
  
  <p>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.</p>
  
  <p>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).</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-06-10T19:25:22.980Z
Answers.LastActivityDate: 2017-06-10T22:04:24.113Z
Answers.LastEditDate: 2017-06-10T22:04:24.113Z
Answers.UserDisplayName: Sean Houlihane
Body: <p>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.</p>
  
  <p>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.</p>
  
  <p>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"?</p>
  
  <p>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.</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-08T21:24:00.987Z
Comments.Text: A layman's introduction to cryptocurrencies: https://www.lrb.co.uk/v38/n08/john-lanchester/when-bitcoin-grows-up
Comments.UserDisplayName: pluke
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-09T09:38:38.287Z
Comments.Text: 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.
Comments.UserDisplayName: Sean Houlihane
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-10T16:03:41.980Z
Comments.Text: Block chains are not a currency thing (though are used by some). see https://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.
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-10T16:08:52.890Z
Comments.Text: Thanks for that - I didn't know that! But nevertheless, in order to understand the technology of finance going forward, it seems like [Blockchain](https://www.bloomberg.com/news/articles/2016-12-21/who-owns-blockchain-goldman-bofa-amass-patents-for-coming-wars) is [becoming](http://economictimes.indiatimes.com/industry/banking/finance/banking/big-banks-plan-interbank-blockchain-platform/articleshow/56770736.cms) rather [foundational](http://www.pepperlaw.com/publications/your-next-ipo-could-be-on-the-blockchain-2016-05-19/). So it still has a place in a "Tech of Finance" course.
Comments.UserDisplayName: Ben I.
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-14T20:57:21.593Z
Comments.Text: are you teaching this at the university level? it does seem like a very interesting topic to teach!
Comments.UserDisplayName: jkeesh
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2017-06-14T20:58:20.420Z
Comments.Text: Technically, I'm teaching at a specialized HS, but the net result is that much of the material we teach is at a university level.
Comments.UserDisplayName: Ben I.
Tags: <curriculum-design><self-learning><resource-request>
Title: Learning about the Blockchain
ThreadText: # Learning about the Blockchain
  
  (Asked by: username_0 on 2017-06-08)
  
  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.
  
  **Tags:** curriculum-design, self-learning, resource-request
  
  > **Comments:**
  > **username_1**: A layman's introduction to cryptocurrencies: https://www.lrb.co.uk/v38/n08/john-lanchester/when-bitcoin-grows-up  
  > **username_2**: 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.  
  > **username_3**: Block chains are not a currency thing (though are used by some). see https://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.  
  > **username_0**: Thanks for that - I didn't know that! But nevertheless, in order to understand the technology of finance going forward, it seems like [Blockchain](https://www.bloomberg.com/news/articles/2016-12-21/who-owns-blockchain-goldman-bofa-amass-patents-for-coming-wars) is [becoming](http://economictimes.indiatimes.com/industry/banking/finance/banking/big-banks-plan-interbank-blockchain-platform/articleshow/56770736.cms) rather [foundational](http://www.pepperlaw.com/publications/your-next-ipo-could-be-on-the-blockchain-2016-05-19/). So it still has a place in a "Tech of Finance" course.  
  > **username_4**: are you teaching this at the university level? it does seem like a very interesting topic to teach!  
  > **username_0**: Technically, I'm teaching at a specialized HS, but the net result is that much of the material we teach is at a university level.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_2 on 2017-06-10. Score: 1
  
  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).
  
  
  ---
  
  