CounterpartyXCP/counterpartyd — pull request #286 by JahPowerBit (2014-09-13 23:30:32+00:00)
Title: Proposition to ensure consensus

[PR not ready to merge, only for review and discussion]

each block:
1) we concatenate all movements from credits and debits tables to get the `movement_string`
2) we use this `movement_string` and the `movement_hash` of the previous block to calculate the `movement_hash` of the current block: `movements_hash = dhash(previous_hash + movements_string)`
3) each N blocks (the checkpoints defined in config.py) we check if the `movements_hash` is correct, if not we raise a ConsensusError.

Because each `movement_hash` is calculate with the previous `movement_hash`, only one change in credits or debit tables changes all the next `movement_hash`.
We can add a checkpoint each protocol change. We can also remove old checkpoints if the checkpoints list become too big.

thoughts?