-
Notifications
You must be signed in to change notification settings - Fork 863
evmc VM and giga block processors (sequential and OCC)
#2654
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
Conversation
|
The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).
|
## Describe your changes and provide context - adds new config for process block - instruments scripts to use new executor if flag is passed - adds ## Testing performed to validate your change ``` # run giga with OCC GIGA_EXECUTOR=true GIGA_OCC=true ./scripts/benchmark.sh # run giga without OCC (direct sequential execution with no scheduler) GIGA_EXECUTOR=true GIGA_OCC=false ./scripts/benchmark.sh # run non-giga GIGA_EXECUTOR=false ./scripts/benchmark.sh ``` --------- Co-authored-by: pdrobnjak <drobnjakpavle95@gmail.com>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #2654 +/- ##
==========================================
- Coverage 43.82% 43.68% -0.14%
==========================================
Files 1908 1911 +3
Lines 158948 159439 +491
==========================================
- Hits 69654 69653 -1
- Misses 82893 83380 +487
- Partials 6401 6406 +5
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
evmc VMevmc VM and giga block processors (sequential and OCC)
evmc VM and giga block processors (sequential and OCC)evmc VM and giga block processors (sequential and OCC)
evmc VM and giga block processors (sequential and OCC)evmc VM and giga block processors (sequential and OCC)
## Describe your changes and provide context Refactor of the `evmc` and `geth` VM. First an improvement on the abstraction - we're working on transaction executor level, not on the VM level. Second, we can leverage the same executor implementation to cover both `evmone` and `geth` cases. Removing everything that's redundant since second point holds true. ## Testing performed to validate your change Ran `giga/tests`.
## Describe your changes and provide context - adds giga occ flag to initialize_local_chain ## Testing performed to validate your change - funds account after init local chain successfully
|
|
||
| func NewEvmoneExecutor(blockCtx vm.BlockContext, stateDB vm.StateDB, chainConfig *params.ChainConfig, config vm.Config, customPrecompiles map[common.Address]vm.PrecompiledContract) *Executor { | ||
| evm := vm.NewEVM(blockCtx, stateDB, chainConfig, config, customPrecompiles) | ||
| // TODO(pdrobnjak): populate evmc.VM and integrate evmone for direct bytecode execution |
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.
Are we planning on resolving this TODO before landing this PR, or in a future PR?
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.
Future PR.
Describe your changes and provide context
Has two big building blocks:
gigasequential andOCCblock processorevmcVMand other miscellaneous changes.
gigasequential andOCCblock processorsAdded
gigasequential andOCCblock processors along with config control flow for deciding whether to use them, block processing code has been mostly c/p'ed from existing block processor with minor changes.Sender recovery is done before transaction processing, in the future when we move to pipelined execution phases we can move to doing sender recovery in parallel for every transaction in block.
app/app.gocmd/seid/cmd/app_config.gocmd/seid/cmd/root.gogiga/executor/config/config.gox/evm/keeper/keeper.goscripts/initialize_local_chain.shevmcVMDecided on scaffolding
evmcusinggethas we feel it gives us enough flexibility (at least initially) to implement the highest-impact performance optimisations observed inv3while allowing us to move faster initially and with a significantly shorter debugging/testing tail.Needed
go-ethereummodifications:sei-protocol/go-ethereum#77
giga/executor/vm/evmc/host_context.gogiga/executor/vm/evmc/interpreter.gogiga/executor/vm/evmc/vm.goSigner recovery
Signer recovery logic and
AdjustVmoved tohelpersfromante.x/evm/ante/preprocess.goutils/helpers/address.goapp/ante/evm_checktx.goBug fix
sei-cosmos/tasks/scheduler.gogo-ethereumbumpIntroduces changes linked under the
evmcVM subsection.go.modgo.sumgo.work.sumsei-cosmos/go.modsei-cosmos/go.sumBenchmarking changes
app/benchmark.goscripts/benchmark.shTesting changes
giga/tests/giga_test.goutils/helpers/address_test.goapp/benchmark_test.goFormatting
x/evm/keeper/msg_server.gomisc
.gitignoreNext steps
evmone.Testing performed to validate your change
Tested locally - these changes should not affect production unless giga executor is enabled via config.