-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Block-stm initial commit #7812
base: main
Are you sure you want to change the base?
Block-stm initial commit #7812
Conversation
@@ -103,6 +111,253 @@ func New(stateReader StateReader) *IntraBlockState { | |||
accessList: newAccessList(), | |||
transientStorage: newTransientStorage(), | |||
balanceInc: map[libcommon.Address]*BalanceIncrease{}, | |||
readMap: make(map[blockstm.Key]blockstm.ReadDescriptor), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 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.