Problem
The current design has several points that do not implement the properties of a blockchain.
- Independent cross-shard transactions processing
Processing cross-shard transactions is independent of a state shard block. This prevents users from synchronizing the final state just by processing the state block history. Finalized cross-shard transactions should be included and processed in the state shard block for global serializability.
Proposal
Move the procedure of processing TpcResult to ProduceBlock that executes transactions
Step of processing TpcResult
- For a committed cross-shard transaction, append it to the state shard's transaction list using AddTx function.
- When executing transactions in ProduceBlock function, for cross-shard transactions, do the state transition.
- Commit state trie and get state root
Problem
The current design has several points that do not implement the properties of a blockchain.
Processing cross-shard transactions is independent of a state shard block. This prevents users from synchronizing the final state just by processing the state block history. Finalized cross-shard transactions should be included and processed in the state shard block for global serializability.
Proposal
Move the procedure of processing TpcResult to ProduceBlock that executes transactions
Step of processing TpcResult