I wrote this over the weekend after doing quite a bit of research into how blockchain ledgers work. I know there is some grumbling about what a blockchain is and is not, which is why the following statement is made in the project:
"This implementation focuses only on the hashed ledger concept. It specifically does not include any concept of mining or any other form of distributed consensus. It also abstracts the concept of a transaction to that of a message in general. The concept of a header and payload in messages and blocks is adapted from Bitcoin."
The focus here is on understanding how the ledger itself works. Distributed consensus is out of scope, though I would be interested in exploring a mechanism for distributed consensus of a shared blockchain. But for now it is out of scope.
Includes a few unit tests. Any feedback appreciated.