Skip to content

Pipeline giga static block processing#3495

Open
codchen wants to merge 3 commits into
mainfrom
codex/giga-static-pipeline
Open

Pipeline giga static block processing#3495
codchen wants to merge 3 commits into
mainfrom
codex/giga-static-pipeline

Conversation

@codchen
Copy link
Copy Markdown
Collaborator

@codchen codchen commented May 22, 2026

Summary

  • split giga static transaction preparation from stateful execution
  • add an async per-block static processing pipeline so later block stateless work can overlap earlier block stateful execution
  • wire giga synchronous and OCC execution paths to consume prepared EVM metadata, keeping Cosmos transactions as legacy fallbacks

Tests

  • go test ./app
  • make giga-integration-test
  • make giga-mixed-integration-test
  • make autobahn-integration-test
  • make parquet-integration-test

@cursor
Copy link
Copy Markdown

cursor Bot commented May 22, 2026

PR Summary

High Risk
Touches consensus-critical block/tx execution ordering and duplicate static-prep entry points; incorrect reuse or race on pipeline jobs could diverge from prior giga/V2 behavior.

Overview
This PR splits state-free EVM work from stateful giga execution so decode, EvmStatelessChecks, and sender recovery can run ahead of (and overlap with) block execution.

Async pipeline: StartGigaStaticBlockProcessing kicks off per-block jobs keyed by height/hash (with tx-byte fallback), stores decoded txs plus gigaStaticTxResult slices, and prunes old entries. Static prep now starts at ProcessProposal (alongside optimistic processing) and is waited on in ProcessBlock before ExecuteTxsConcurrently.

Execution paths: Giga synchronous and OCC flows take precomputed static metadata (by index or checksum), short-circuit on static failures, and call executeEVMTxWithGigaExecutor with gigaStaticEVMTx instead of redoing envelope/sender work inline. Cosmos txs still use legacy deliver paths.

Tests & minor fix: New giga_static_test.go covers concurrent static prep and multi-height pipeline retention; giga executor Signer.Equal is implemented instead of panicking.

Reviewed by Cursor Bugbot for commit 391db04. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 22, 2026

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

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedMay 27, 2026, 3:04 AM

@codecov
Copy link
Copy Markdown

codecov Bot commented May 22, 2026

Codecov Report

❌ Patch coverage is 38.94231% with 127 lines in your changes missing coverage. Please review.
✅ Project coverage is 59.09%. Comparing base (f408944) to head (391db04).
⚠️ Report is 7 commits behind head on main.

Files with missing lines Patch % Lines
app/app.go 39.51% 110 Missing and 14 partials ⚠️
giga/executor/internal/signer.go 0.00% 3 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #3495      +/-   ##
==========================================
- Coverage   59.10%   59.09%   -0.02%     
==========================================
  Files        2187     2187              
  Lines      182238   182431     +193     
==========================================
+ Hits       107712   107801      +89     
- Misses      64868    64961      +93     
- Partials     9658     9669      +11     
Flag Coverage Δ
sei-chain-pr 47.28% <38.94%> (?)
sei-db 70.41% <ø> (ø)

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

Files with missing lines Coverage Δ
giga/executor/internal/signer.go 18.18% <0.00%> (-1.82%) ⬇️
app/app.go 66.32% <39.51%> (-2.96%) ⬇️

... and 1 file 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.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 5d8b337. Configure here.

Comment thread app/app.go
@codchen codchen force-pushed the codex/giga-static-pipeline branch from 5d8b337 to 87a27a2 Compare May 26, 2026 04:23
Comment thread app/app.go
func (app *App) pruneGigaStaticPipelineLocked(height int64) {
for key := range app.gigaStaticPipeline {
if key.height+gigaStaticPipelineRetentionBlocks < height {
delete(app.gigaStaticPipeline, key)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This can still grow unbounded for the same height. Since the churn here is driven by proposers, we should cap this to some maximum. Otherwise OOM is a concern.

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.

2 participants