Block-stm initial commit#7812
Conversation
| accessList: newAccessList(), | ||
| transientStorage: newTransientStorage(), | ||
| balanceInc: map[libcommon.Address]*BalanceIncrease{}, | ||
| readMap: make(map[blockstm.Key]blockstm.ReadDescriptor), |
There was a problem hiding this comment.
please take a look if you can use existing methods: ibs.SoftFinalise(), ibs.MakeWriteSet, txTask.ReadLists = rw.stateReader.ReadSet(), txTask.WriteLists = rw.bufferedWriter.WriteSet().
you can find them in:
cmd/state/exec3/state.go:RunTxTask
There was a problem hiding this comment.
Thanks for the pointers. Will look into them.
|
This is an interesting idea, and somewhat (or largely) overlaps with our own experiments on the parallel execution. And I am aware of block-stm ideas from the Polygon team.
|
Thanks @AlexeyAkhunov for the inputs. Agreed that it might be too early to plug this in. Do you think we should wait for both Erigon3 and EVM implementation replacement to complete before working on this PR, or just the completion of Erigon3? |
|
This PR is stale because it has been open for 40 days with no activity. |
|
This PR is stale because it has been open for 40 days with no activity. |
…lock-STM (#8037) This PR adds support to store the transaction dependency (generated by the block producer) in the block header for bor. This transaction dependency will then be used by the parallel processor ([Block-STM](#7812)). I have created another [PR](ledgerwatch/erigon-lib#1064) in the erigon-lib repo which adds the `IsParallelUniverse()` function.
|
This code has now been replaced by the full e3 STM implementation in this branch: https://github.com/erigontech/erigon/tree/async_tx |
This PR enables parallel execution of transactions when validating blocks. A similar PR has been merged to bor.
The major change of existing component that needs attention is in "intra_block_state.go", where a multi-version hashmap is added between EVM and database.