Simple python blockchain
- Use more interesting proof-of-work
- Add transaction verification
- Wallets
- Write basic client
- Block broadcasting
- Transaction broadcasting - think about consistency and commiting of transactions
- Peer announcement and discovery
- Have a new node announce itself to the node from which is pulls the blockchain before it starts mining
- Have nodes broadcast new nodes to its peers
- Think about concurrency issues. Maybe want to rewrite in C++ with threading, mutex on blockchain, etc.
- Separate logic from networking protocol so we can replace http if we want to later
- Have a play with attacks on the chain. E.g., try to create a very long, seemingly valid, chain which could supersede the real chain
- Think about generalising to have multiple PoWs on the same chain