Closed sdbondi closed 4 months ago
541 tests +9 541 :white_check_mark: +9 1h 36m 13s :stopwatch: - 20m 0s 63 suites ±0 0 :zzz: ±0 2 files ±0 0 :x: ±0
Results for commit 766f8a0e. ± Comparison against base commit 198e6ec6.
:recycle: This comment has been updated with latest results.
Description
Local-Only-Rules
)Motivation and Context
This PR improves locking, substate management and allows local-only transaction concurrency.
It adds the following concepts:
BlockDiff
- contains the substate changes (UP or DOWN) for a block. Is used to commit state in a commit blockPendingSubstateStore
- tracks and validates changes to the substate store and decouples state from execution. It is used to generate a BlockDiff, track locks in the current block context, and to generate the state tree diff.ProposedBlockChangeSet
- contains all the pending changes to be committed when deciding to ACCEPT a new blockTransactionExecution
- decouples execution results from a transaction record. These represent an execution within the context of a block. Once a transaction is finalized, the execution result is added to the final result in the transaction.Possible issues: Currently to fetch the correct transaction executions and locks for a block we need to limit the results to those that match the chain. This query will grow slower as the chain progresses. Bugs may still occur in the unhappy/malicious path.
How Has This Been Tested?
New deferred transaction consensus test, new unit tests, existing tests, removed ignore attribute from several consensus tests.
What process can a PR reviewer use to test or verify this change?
Submit transactions without specifying the version of the input. Submit local-only transactions concurrently that spend previous outputs from other local only transactions.
Breaking Changes
BREAKING CHANGE: database structure changed