Skip to content

Add EVM stress workload tooling#3404

Open
codchen wants to merge 1 commit into
mainfrom
tony/evm-stress-tooling
Open

Add EVM stress workload tooling#3404
codchen wants to merge 1 commit into
mainfrom
tony/evm-stress-tooling

Conversation

@codchen
Copy link
Copy Markdown
Collaborator

@codchen codchen commented May 7, 2026

Summary

  • Adds ./scripts/evm_stress.sh, which initializes a local seid node, patches genesis with deterministic sender accounts, starts the node, and runs the transfer workload.
  • Adds scripts/evm_stress/main.go, which generates deterministic sender keys, optionally dumps their derived Sei addresses for genesis funding, and sends nonce-0 EVM transfers from unique senders to a shared recipient at the target rate.
  • Ignores the local evm_stress build artifact.

This is split out from #3376 so the investigation tooling can be reviewed independently from logging and execution optimizations.

Test Plan

  • go test ./scripts/evm_stress
  • go run github.com/securego/gosec/v2/cmd/gosec@v2.22.11 ./scripts/evm_stress/...

Note

Low Risk
Low risk: adds standalone local stress-test scripts and ignores a new build artifact, without modifying chain runtime logic.

Overview
Adds a local EVM stress-testing workload: scripts/evm_stress.sh initializes a local seid, bulk-patches genesis.json with many pre-funded deterministic sender accounts, starts the node, tails only a couple targeted log lines, waits for the EVM RPC, then runs the workload.

Introduces scripts/evm_stress/main.go, a Go load generator that can dump sender Sei bech32 addresses for genesis funding and then sends single nonce=0 EIP-1559 transfers from 50k unique senders to one recipient at a target rate (500 TPS) using a shared rate limiter across workers.

Updates .gitignore to exclude the evm_stress local build artifact.

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

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

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

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedMay 11, 2026, 3:20 AM

@codecov
Copy link
Copy Markdown

codecov Bot commented May 7, 2026

Codecov Report

❌ Patch coverage is 0% with 73 lines in your changes missing coverage. Please review.
✅ Project coverage is 59.22%. Comparing base (0543e0e) to head (66f51e7).

Files with missing lines Patch % Lines
scripts/evm_stress/main.go 0.00% 73 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #3404      +/-   ##
==========================================
- Coverage   59.24%   59.22%   -0.03%     
==========================================
  Files        2110     2111       +1     
  Lines      174149   174222      +73     
==========================================
  Hits       103175   103175              
- Misses      62041    62114      +73     
  Partials     8933     8933              
Flag Coverage Δ
sei-chain-pr 0.00% <0.00%> (?)
sei-db 70.41% <ø> (ø)

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

Files with missing lines Coverage Δ
scripts/evm_stress/main.go 0.00% <0.00%> (ø)
🚀 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.

@codchen codchen force-pushed the tony/evm-stress-tooling branch from 825b721 to 66f51e7 Compare May 11, 2026 03:19
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 and found 2 potential issues.

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 66f51e7. Configure here.

Comment thread .gitignore
.DS_Store
build/
cache/
evm_stress
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Gitignore pattern matches source directory too broadly

Medium Severity

The evm_stress gitignore pattern (without a leading /) matches any file or directory named evm_stress at any level in the tree, including scripts/evm_stress/. While already-tracked files like main.go remain tracked, any new files added under scripts/evm_stress/ (e.g. test files, additional Go sources) will be silently ignored by git. The pattern likely needs a leading slash (/evm_stress) to restrict the match to the root-level build artifact only.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 66f51e7. Configure here.

}
time.Sleep(300 * time.Millisecond)
}
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Infinite loop in waitForBalance lacks timeout

Low Severity

waitForBalance spins in an infinite for loop polling for a positive balance, with no timeout or context cancellation check. If the genesis patching fails or the node doesn't produce a block, this hangs forever with no diagnostic output. Since ctx is context.Background(), there's no external cancellation path either.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 66f51e7. Configure here.

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