[codex] add evm-only giga executor path#3583
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3583 +/- ##
==========================================
- Coverage 59.21% 58.30% -0.91%
==========================================
Files 2214 2145 -69
Lines 183389 175498 -7891
==========================================
- Hits 108593 102332 -6261
+ Misses 65002 64031 -971
+ Partials 9794 9135 -659
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
The latest Buf updates on your PR. Results from workflow Buf / buf (pull_request).
|
PR SummaryMedium Risk Overview The Custom precompiles are wired only as fail-closed placeholders ( Reviewed by Cursor Bugbot for commit ef04c0e. Bugbot is set up for automated code reviews on this repo. Configure here. |
| result.Receipts = append(result.Receipts, receipt) | ||
| result.GasUsed += txResult.GasUsed | ||
| } | ||
| stateDB.Finalise(true) |
There was a problem hiding this comment.
Missing per-transaction Finalise
High Severity
ExecuteBlock calls ApplyMessage for each transaction but only invokes stateDB.Finalise once after the whole block. Self-destructed accounts therefore keep code and storage until block end, so later transactions in the same block can execute against contracts that should already be destroyed.
Reviewed by Cursor Bugbot for commit 44a10bc. Configure here.
| s.AddSlotToAccessList(tuple.Address, key) | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
Transient storage leaks across txs
Medium Severity
Prepare rebuilds the access list for each transaction but leaves transientStates untouched. EIP-1153 transient slots written in an earlier transaction remain visible to later transactions in the same block, violating per-transaction transient semantics.
Reviewed by Cursor Bugbot for commit 44a10bc. Configure here.
44a10bc to
ef04c0e
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
There are 3 total unresolved issues (including 2 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ef04c0e. Configure here.
| func parseTx(raw []byte, signer ethtypes.Signer) (*ethtypes.Transaction, common.Address, error) { | ||
| var tx ethtypes.Transaction | ||
| if err := rlp.DecodeBytes(raw, &tx); err != nil { | ||
| return nil, common.Address{}, err |
There was a problem hiding this comment.
Typed transaction bytes not decoded
Medium Severity
parseTx decodes inputs with rlp.DecodeBytes only. Standard Ethereum raw bytes for access-list, EIP-1559, blob, and set-code transactions use a type prefix and are decoded with Transaction.UnmarshalBinary, so those txs fail parsing before execution.
Reviewed by Cursor Bugbot for commit ef04c0e. Configure here.


Summary
giga/evmonlyas the final-form EVM-only giga execution path boundarygiga/evmonly:vm.StateDBStateChangeSetoutputMemoryStatebackend for tests and early integrationNotes
Custom precompile behavior is intentionally still open. Registered custom precompile addresses return
ErrCustomPrecompilesOpen, including through geth's precompile map, so calls fail closed instead of silently executing as empty accounts.The current port is sequential. The state boundary and changeset shape are intended to be replaceable with the sei-v3 OCC scheduler/store once that layer is brought over.
Historical
BLOCKHASHlookups beyond the parent block are not wired yet;BlockHashis currently used for receipt/log metadata.Validation