Skip to content

Conversation

@pdrobnjak
Copy link
Contributor

@pdrobnjak pdrobnjak commented Jan 2, 2026

Describe your changes and provide context

Has two big building blocks:

  • giga sequential and OCC block processor
  • evmc VM

and other miscellaneous changes.

giga sequential and OCC block processors

Added giga sequential and OCC block 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.

evmc VM

Decided on scaffolding evmc using geth as we feel it gives us enough flexibility (at least initially) to implement the highest-impact performance optimisations observed in v3 while allowing us to move faster initially and with a significantly shorter debugging/testing tail.

Needed go-ethereum modifications:
sei-protocol/go-ethereum#77

Signer recovery

Signer recovery logic and AdjustV moved to helpers from ante.

Bug fix

go-ethereum bump

Introduces changes linked under the evmc VM subsection.

Benchmarking changes

Testing changes

Formatting

misc

Next steps

  • Bootstrap evmone.
  • Elevate VM interface to be transaction level (or introduce an executor as concept that will handle transaction level execution) - interaction between block processor and VM feels clunky right now.

Testing performed to validate your change

Tested locally - these changes should not affect production unless giga executor is enabled via config.

@pdrobnjak pdrobnjak self-assigned this Jan 2, 2026
@github-actions
Copy link

github-actions bot commented Jan 2, 2026

The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedJan 15, 2026, 8:47 AM

## 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>
@pdrobnjak pdrobnjak marked this pull request as ready for review January 13, 2026 15:53
@pdrobnjak pdrobnjak changed the title [WIP] evmc VM evmc VM Jan 13, 2026
@codecov
Copy link

codecov bot commented Jan 13, 2026

Codecov Report

❌ Patch coverage is 3.44168% with 505 lines in your changes missing coverage. Please review.
✅ Project coverage is 43.68%. Comparing base (ad3dac7) to head (0ea1516).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
app/app.go 2.00% 241 Missing and 3 partials ⚠️
giga/executor/internal/host_context.go 0.00% 174 Missing ⚠️
giga/executor/internal/interpreter.go 0.00% 37 Missing ⚠️
giga/executor/executor.go 0.00% 18 Missing ⚠️
giga/executor/config/config.go 0.00% 10 Missing ⚠️
giga/executor/internal/signer.go 0.00% 10 Missing ⚠️
x/evm/ante/preprocess.go 9.09% 10 Missing ⚠️
app/ante/evm_checktx.go 0.00% 1 Missing ⚠️
cmd/seid/cmd/root.go 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            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     
Flag Coverage Δ
sei-chain 45.61% <3.25%> (-0.30%) ⬇️
sei-cosmos 38.20% <100.00%> (ø)
sei-db 69.43% <ø> (ø)
sei-tendermint 47.26% <ø> (-0.03%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
app/benchmark.go 85.13% <ø> (-0.40%) ⬇️
cmd/seid/cmd/app_config.go 100.00% <100.00%> (ø)
sei-cosmos/tasks/scheduler.go 92.90% <100.00%> (ø)
utils/helpers/address.go 100.00% <100.00%> (ø)
x/evm/keeper/keeper.go 48.95% <ø> (ø)
x/evm/keeper/msg_server.go 74.68% <ø> (ø)
app/ante/evm_checktx.go 0.00% <0.00%> (ø)
cmd/seid/cmd/root.go 0.00% <0.00%> (ø)
giga/executor/config/config.go 0.00% <0.00%> (ø)
giga/executor/internal/signer.go 0.00% <0.00%> (ø)
... and 5 more

... and 14 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pdrobnjak pdrobnjak changed the title evmc VM evmc VM and giga block processors (sequential and OCC) Jan 14, 2026
@pdrobnjak pdrobnjak changed the title evmc VM and giga block processors (sequential and OCC) evmc VM and giga block processors (sequential and OCC) Jan 14, 2026
@pdrobnjak pdrobnjak changed the title evmc VM and giga block processors (sequential and OCC) evmc VM and giga block processors (sequential and OCC) Jan 14, 2026
@pdrobnjak pdrobnjak enabled auto-merge (squash) January 14, 2026 14:06
@pdrobnjak pdrobnjak requested a review from arajasek January 14, 2026 15:01
pdrobnjak and others added 2 commits January 14, 2026 16:12
## 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
Copy link
Contributor

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Future PR.

@pdrobnjak pdrobnjak merged commit 23d36e2 into main Jan 15, 2026
38 of 39 checks passed
@pdrobnjak pdrobnjak deleted the pd/evmc-vm branch January 15, 2026 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants