Skip to content

feat(eoatx): support configurable receiver address list / CREATE2 target pools - #289

Open
LouisTsai-Csie wants to merge 1 commit into
ethpandaops:masterfrom
LouisTsai-Csie:eoatx-address-list
Open

LouisTsai-Csie wants to merge 1 commit into
ethpandaops:masterfrom
LouisTsai-Csie:eoatx-address-list

Conversation

@LouisTsai-Csie

@LouisTsai-Csie LouisTsai-Csie commented Sep 18, 2026 •

Copy link
Copy Markdown

Summary

Adds a configurable receiver target pool to the eoatx scenario, so transactions can be sent to a predefined set of addresses instead of only a single --to, a random address, or the sender itself.

A target pool can combine:

  • Explicit addresses (targets.addresses)
  • One or more deterministic CREATE2 ranges (targets.create2_patterns), each derived from a factory address, an initcode source, a start_salt and a count

Details

  • New config block targets (daemon / config-file use) and new flag --targets-file for direct CLI use.
  • Each CREATE2 pattern must set exactly one of initcode, initcode_file, or initcode_hash. Relative initcode_file paths resolve relative to the targets file. start_salt uses the same uint64 big-endian bytes32 encoding as the factorydeploytx scenario.
  • order is sequential (default) or shuffle; shuffling is deterministic for a given seed.
  • repeat: false limits the run to one transaction per target — an omitted total_count is capped at the pool size, and an explicit total_count larger than the pool is rejected. repeat: true wraps around in the selected order.
  • targets / --targets-file are mutually exclusive with --to, --random-target and --self-tx-only, and with each other; unknown YAML fields are rejected.
  • Logs the resolved pool size and per-source counts on startup.

Testing

  • Added scenarios/eoatx/targets_test.go covering pool building, CREATE2 address derivation, initcode source validation, ordering/shuffle determinism, and the repeat / total_count constraints.
  • gofmt -l . and go vet ./... are clean repo-wide; staticcheck ./... reports no findings for
    scenarios/eoatx (the 6 remaining SA1019 deprecation warnings are pre-existing, in the generated
    plugin/symbols files).

Docs

scenarios/eoatx/README.md documents the new flag, the targets block, and a full YAML example.

Related Issue: ethpandaops/gas-lighting-tracker#80, for P0 ETH transfers to on-chain receivers scenario.

@jochem-brouwer jochem-brouwer left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Two initial comments, questions, thanks @LouisTsai-Csie 😄 👍

Comment thread scenarios/eoatx/eoatx.go
LogTxs bool `yaml:"log_txs"`
TotalCount uint64 `yaml:"total_count"`
Throughput uint64 `yaml:"throughput"`
MaxPending uint64 `yaml:"max_pending"`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The style changes here, are these necessary (more whitespace)? It increases the diff of this PR which I do not think is necessary?

"0x3000000000000000000000000000000000000003",
"0x4000000000000000000000000000000000000004",
},
Order: "shuffle",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I am somewhat confused why we need the shuffle order. What is the use case for this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants