How do you guarantee liveness, correctness and consistency as the network changes state?
How are blockchain reorganizations addressed?
0. The consensus state is defined as a set of transactions / operations which have abstract meaning (expected behavior)
- the state can be derived at any time by replaying the operations in order and applying deterministic transformations.
1. The state is defined as a set of objects. Each object is assigned an ID that includes, type and instance information.
2. All modifications to the state go through a central API that enforces copy-on-write, saving the pre-modified state to an undo history.
3. Any errors that are encountered mid-validation cause automatic reversion to the prior state.
4. Validation snapshots are made for each block, and transaction.
5. The blockchain retains the ability to revert back to any state that has not been confirmed by 2/3's of all witnesses if/when a longer chain is discovered.
6. Perhaps to your point, the exact representation of the network state is not part of the consensus and is seen as an implementation detail. This means there is no global hash of the state that is included in consensus.
Being a trading system, what prevents front running?
Users are prepared to get what they asked for when they place an order, if they get anything better then they win. Front running can be performed by any computer between the user and the witness. Witnesses are prevented from front running because the value of their job is greater than money they could make by front running and consistent front running by witnesses is detectable (statistically). The combined nature of P2P broadcast and the unpredictability of which witness is next means that it is very difficult for anyone other than a witness to reliably front run.
What economic incentives do those promoting a correct state have for honest behavior?
They are public, earning a healthy income with high margins as a witness node operator. Dishonest behavior will cost them in the loss of future revenue and reputation.
There is a certainty of getting caught and there is amble redundancy such that it takes collusion of 2/3 of the witnesses to actually change something.
Are there incentives for data relay?
Witnesses are paid by the network and their job is to include transactions. Relay is part of that job along with running seed nodes.
What is an anticipated rate of growth for the Bitshares blockchain per day?
This depends upon transaction volume. In the first 10 days the blockchain has grown to be 42MB in size, 4.2 MB per day and generated transaction fees of $76 per MB of chain.
How do you address forks in the network? What level of byzantine fault tolerance does the network have given a Quorum set N?
The longest blockchain built off of the "last irreversible block" is considered the best chain.
The last irreversible block is the block that has been confirmed by 2/3 of all witnesses. Currently there are 31 unique and independent witnesses. I will define N to be 31
Witnesses produce blocks on a deterministically shuffled schedule that guarantees that a LONE witness can only grow their blockchain by 1 block every 93 seconds on average.
A corollary to the above point is that a minority of witnesses will never be able to produce a longer chain than the majority. Furthermore, a minority will be unable to advance the last irreversible block.
The witnesses maintain a maximum undo history of 10,000 blocks starting from the last irreversible block. In a 60/40 network split during which 2/3 consensus is unable to be reached the 60% network can operate 11 hours without manual checkpointing. This undo history can be expanded if necessary, but the witnesses are pro-active and can usually recover from any network issue in just a hour. As soon as 2/3 agree the undo history resets to about 20-30 blocks.