Protocol Documentation
The protocol is nearing a final state, and the consensus documentation now reflects that. I tried to make Consensus.md comprehensive (and proper markdown), but there are 4 things left to document:
- The specification for encoding structs into strings (that get hashed)
- The specification for deriving block id + merkle root, miner output id, siacoin output id, contract id, storage proof output id, siafund output id, siafund claim output id.
- Specify which crypto is in use (hash algo, signature algo)
- Pick a timestamp for the genesis block.
Everything else should be specified, although not perfectly followed by the codebase yet. The codebase does not follow rules for:
- siacoins having 128bits
- siafunds are not followed at all
- outputs that can't be spent for 100 blocks
- limitations on storage proof transactions
Other than that, we're pretty much done with the protocol, and it's fairly polished.