Since I believe that in order to understand how a protocol/algorithm works you need to get your hands dirty and code, I have built my own simplistic (yet compliant with the core principles) shared-ledger (blockchain) implementation in Java, here I explain all the assumptions and compromises made:
shared-ledger-simulator.htmlComplete source code is available in
GitHubFeel free to have a look and let me know in case I missed anything or any of my assumptions or compromises made are not accurate nor properly explained.