evmc VM and giga block processors (sequential and OCC)#2654
Merged
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
arajasek
approved these changes
Jan 14, 2026
|
|
||
| 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 |
Contributor
There was a problem hiding this comment.
Are we planning on resolving this TODO before landing this PR, or in a future PR?
stevenlanders
approved these changes
Jan 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.