Spamoor is a powerful tool for generating various types of random transactions on Ethereum testnets. Perfect for stress testing, network validation, or continuous transaction testing.
# Using Docker
docker run ethpandaops/spamoor
# Building from source
git clone https://github.com/ethpandaops/spamoor.git
cd spamoor
make
./bin/spamoor
spamoor <scenario> [flags]
All scenarios require:
--privkey
- Private key for the sending wallet--rpchost
- RPC endpoint(s) to send transactions to
Spamoor provides multiple scenarios for different transaction types:
Scenario | Description |
---|---|
eoatx |
EOA Transactions Send standard EOA transactions with configurable amounts and targets |
erctx |
ERC20 Transactions Deploy a ERC20 contract and transfer tokens |
calltx |
Contract Calls Deploy a contract and repeatedly call a function on it |
deploytx |
Contract Deployments Deploy contracts with custom bytecode |
deploy-destruct |
Self-Destruct Deployments Deploy contracts that self-destruct |
setcodetx |
Set Code Transactions Send EIP-7702 setcode-transactions with various settings |
uniswap-swaps |
Uniswap Swaps Deploy and perform token swaps on Uniswap V2 pools |
blobs |
Blob Transactions Send blob transactions with random data |
blob-replacements |
Blob Replacements Send and replace blob transactions |
blob-conflicting |
Conflicting Blobs Send conflicting blob and normal transactions |
blob-combined |
Combined Blob Testing Randomized combination of all blob scenarios |
gasburnertx |
Gas Burner Send transactions that burn specific amounts of gas |
geastx |
Geas Transactions Send transactions that execute custom geas bytecode |
storagespam |
Storage Spam Send transactions that spam the persistent EVM storage |
Spamoor also includes a daemon mode with web UI for managing multiple spammers. It allows you to create, monitor, and control spammers through a user interface or programmatically via HTTP endpoints.
spamoor-daemon [flags]
-d, --db string The file to store the database in (default "spamoor.db")
--debug Run the tool in debug mode
-h, --rpchost strings The RPC host to send transactions to
--rpchost-file File with a list of RPC hosts to send transactions to
-p, --privkey string The private key of the wallet to send funds from
-P, --port int The port to run the webui on (default 8080)
-v, --verbose Run the tool with verbose output
--trace Run the tool with tracing output
The web interface runs on http://localhost:8080
by default and provides:
- Dashboard for managing spammers
- Real-time log streaming
- Configuration management
- Start/pause/delete functionality
The daemon exposes a REST API for programmatic control. See the API Documentation in the spamoor web interface for details.
Spamoor supports exporting and importing spammer configurations as YAML files:
- Export: Save existing spammers to YAML format for backup or sharing
- Import: Load spammers from YAML files, URLs, or raw YAML data
- Includes: YAML files can include other files or URLs for modular configurations
- Startup Integration: Import spammers automatically on daemon startup
# Import from file
spamoor-daemon --startup-spammer="spammer-configs.yaml"
# Example YAML with includes
- scenario: "eoatx"
name: "Main Test"
config:
wallet_count: 10
- include: "common-spammers.yaml"
- include: "https://example.com/stress-tests.yaml"
The daemon exposes Prometheus metrics at the /metrics
endpoint, providing real-time monitoring capabilities for running spammer scenarios. These metrics include:
- Transaction counts and success/failure rates
- Scenario-specific metrics
- System performance indicators
Contributions are welcome! Please feel free to submit a Pull Request.