8000 GitHub - ethpandaops/spamoor
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

ethpandaops/spamoor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Spamoor the Transaction Spammer

A powerful Ethereum transaction generator for testnets πŸš€

Go Report Card License Docker

Spamoor is a robust transaction spamming tool designed for stress testing, network validation, and continuous transaction testing on Ethereum testnets. With 13+ different transaction scenarios and a powerful web-based daemon mode, it's the ultimate tool for Ethereum network testing.

πŸš€ Quick Start

CLI Output Example

CLI Running

# 🐳 Using Docker
docker run ethpandaops/spamoor

# πŸ”§ Building from source
git clone https://github.com/ethpandaops/spamoor.git
cd spamoor
make
./bin/spamoor

πŸ“˜ Usage

Basic Command Structure

# Run a single scenario
spamoor <scenario> [flags]

# Run multiple scenarios from YAML configuration
spamoor run <yaml-file> [flags]

πŸ”‘ Required Parameters

Parameter Description
--privkey Private key for the root wallet (funds child wallets)
--rpchost RPC endpoint(s) to send transactions to

πŸ”§ Advanced Configuration

# Basic usage
spamoor eoatx --privkey="0x..." --rpchost="http://localhost:8545"

# Multiple RPC endpoints
spamoor eoatx --privkey="0x..." \
  --rpchost="http://node1:8545" \
  --rpchost="http://node2:8545"

# With authentication
spamoor eoatx --privkey="0x..." \
  --rpchost="headers(Authorization:Bearer token)http://node:8545"

πŸ’‘ See the App User Guide for advanced RPC configuration options

🎯 Transaction Scenarios

Spamoor provides a comprehensive suite of transaction scenarios for different testing needs:

Scenario Description
eoatx EOA Transactions - Send standard ETH transfers with configurable amounts
erctx ERC20 Transactions - Deploy ERC20 tokens and perform transfers
calltx Contract Calls - Deploy contracts and repeatedly call functions
deploytx Contract Deployments - Deploy contracts with custom bytecode
deploy-destruct Self-Destruct Deployments - Deploy self-destructing contracts
setcodetx Set Code Transactions - EIP-7702 setcode transactions
uniswap-swaps Uniswap Swaps - Deploy and test Uniswap V2 token swaps
blobs Blob Transactions - Send blob transactions with random data
blob-replacements Blob Replacements - Test blob transaction replacement
blob-conflicting Conflicting Blobs - Test conflicting blob/normal transactions
blob-combined Combined Blob Testing - Randomized blob scenario combinations
gasburnertx Gas Burner - Burn specific amounts of gas
storagespam Storage Spam - Stress test EVM storage
geastx Geas Transactions - Execute custom geas bytecode
xentoken XEN Sybil Attack - Simulate XEN token sybil attacks
taskrunner Task Runner - Execute configurable task sequences with init and execution phases

πŸš„ Run Command - Execute Multiple Scenarios

The spamoor run command allows you to execute multiple scenarios concurrently from a YAML configuration file, without needing the full daemon infrastructure.

Usage

spamoor run <yaml-file> [flags]

Flags

Flag Short Description
--spammers -s Indexes of spammers to run (e.g., -s 0,2). If not specified, runs all
--privkey -p Private key for the root wallet
--rpchost -h RPC endpoints (multiple allowed)
--rpchost-file - File containing RPC endpoints
--verbose -v Enable verbose logging
--trace - Enable trace logging

Example Configuration

# example-run-config.yaml
- scenario: eoatx
  name: "High Volume ETH Transfers"
  description: "Basic ETH transfers with 400 tx/slot throughput"
  config:
    seed: eoatx-demo
    refill_amount: 1000000000000000000  # 1 ETH in wei
    refill_balance: 500000000000000000  # 0.5 ETH in wei
    refill_interval: 600  # 10 minutes
    throughput: 400
    max_pending: 800
    max_wallets: 200
    base_fee: 20  # gwei
    tip_fee: 2    # gwei
    amount: 100   # 100 wei per transfer
    random_amount: true
    random_target: true

- scenario: erctx
  name: "ERC20 Token Spammer"
  description: "Deploy and transfer ERC20 tokens"
  config:
    seed: erctx-demo
    refill_amount: 2000000000000000000  # 2 ETH
    refill_balance: 1000000000000000000 # 1 ETH
    throughput: 100
    max_pending: 200
    max_wallets: 100
    amount: 50
    random_amount: true
    
# Include other configuration files
- include: ./high-load-configs.yaml

Examples

# Run all spammers from configuration
spamoor run config.yaml -h http://localhost:8545 -p 0x...

# Run only specific spammers (0-based indexes)
spamoor run config.yaml -h http://localhost:8545 -p 0x... -s 0,2

# With multiple RPC endpoints
spamoor run config.yaml -p 0x... \
  -h http://node1:8545 \
  -h http://node2:8545

πŸ–₯️ Daemon Mode

Run Spamoor as a daemon with a powerful web interface for managing multiple concurrent spammers.

Spamoor Dashboard

πŸš€ Starting the Daemon

spamoor-daemon [flags]

βš™οΈ Configuration Flags

Flag Short Description Default
--db -d Database file location spamoor.db
--rpchost -h RPC endpoints (multiple allowed) -
--rpchost-file - File containing RPC endpoints -
--privkey -p Root wallet private key -
--port -P Web UI port 8080
--startup-spammer - YAML file or URL with startup spammers -
--fulu-activation - Unix timestamp of Fulu activation 0
--without-batcher - Disable transaction batching false
--disable-tx-metrics - Disable transaction metrics collection false
--verbose -v Enable verbose logging false
--debug - Enable debug mode false
--trace - Enable trace logging false

🌐 Web Interface Features

Access the web UI at http://localhost:8080 for:

πŸ“Š Dashboard - Real-time Spammer Management

Dashboard with Spammers

  • View all spammers at a glance with their status, scenario type, and actions
  • Mass actions for bulk operations on multiple spammers
  • Quick access to start, stop, edit, and delete spammers
  • Expandable live logs for each spammer

πŸ’° Wallets Overview

Wallets Page

  • Monitor wallet balances and transaction counts
  • Track child wallets spawned from the root wallet
  • Real-time balance updates

πŸ”§ Client Management

Clients Configuration

  • View and manage RPC client connections
  • Group clients for load balancing
  • Enable/disable clients dynamically
  • Monitor client status and block height

πŸ“ˆ Performance Graphs

Performance Metrics

  • Visual monitoring of transaction throughput
  • Success/failure rates per spammer
  • Network performance metrics

πŸ”Œ REST API

The daemon exposes a comprehensive REST API for automation:

Key Endpoints

  • πŸ“‘ Client Management

    • GET /api/clients - List all RPC clients
    • PUT /api/client/{index}/groups - Update client groups
    • PUT /api/client/{index}/name - Set custom display name
  • πŸ€– Spammer Control

    • GET /api/spammers - List all spammers
    • POST /api/spammer - Create new spammer
    • PUT /api/spammer/{id}/start - Start spammer
    • PUT /api/spammer/{id}/pause - Pause spammer
  • πŸ’Ύ Import/Export

    • GET /api/export - Export configurations
    • POST /api/import - Import configurations

πŸ“š Full API documentation available at /docs when daemon is running

πŸ“¦ Import/Export System

🎯 Create New Spammer Dialog

Create Spammer Dialog

  • Select from 13+ pre-configured scenarios
  • Customize configuration with YAML editor
  • Real-time YAML validation
  • Access to pre-built configuration library

Export Configurations

# Export all spammers to YAML
curl http://localhost:8080/api/export > my-spammers.yaml

Import Configurations

Import Spammer Dialog Import dialog showing YAML validation and configuration options

Spammer Library Pre-built configuration library for common test scenarios

# Import on startup
spamoor-daemon --startup-spammer="spammer-configs.yaml"

# Import via API
curl -X POST http://localhost:8080/api/import \
  -H "Content-Type: application/yaml" \
  --data-binary @spammer-configs.yaml

YAML Configuration Format

# Direct spammer definition
- scenario: "eoatx"
  name: "Basic ETH Transfers"
  config:
    wallet_count: 10
    transaction_count: 1000

# Include other files
- include: "common-spammers.yaml"
- include: "https://example.com/stress-tests.yaml"

πŸ“Š Prometheus Metrics

Access metrics at /metrics for monitoring with Prometheus/Grafana:

  • πŸ”’ Transaction Metrics: Success rates, gas usage, confirmation times
  • πŸ“ˆ Performance Metrics: TPS, latency, queue sizes
  • 🎯 Scenario Metrics: Custom metrics per scenario type

πŸ“š Documentation

Comprehensive documentation is available for different user types:

Complete guide for CLI usage, daemon mode, configuration, and troubleshooting. Covers:

  • Installation and setup options
  • Detailed CLI usage with examples
  • Web interface walkthrough
  • Configuration management
  • Troubleshooting common issues

REST API documentation with bash/curl examples for all endpoints. Includes:

  • Complete API reference with examples
  • Spammer management endpoints
  • Client configuration and monitoring
  • Real-time data streaming
  • Import/export functionality

Comprehensive guide for implementing custom transaction scenarios. Covers:

  • Scenario architecture and lifecycle
  • Critical development rules and best practices
  • Wallet management and transaction building
  • Contract interaction patterns
  • Testing and debugging scenarios

✨ Key Features

  • 🎯 13+ Transaction Scenarios: From basic EOA transfers to complex DeFi interactions
  • πŸ–₯️ Web-Based Daemon Mode: Manage multiple spammers through an intuitive UI
  • πŸ”Œ REST API: Full programmatic control for automation
  • πŸ“Š Prometheus Metrics: Built-in monitoring and observability
  • 🐳 Docker Support: Easy deployment with official images
  • πŸ”§ Highly Configurable: YAML configs, CLI flags, and runtime adjustments
  • πŸš€ High Performance: Optimized for maximum transaction throughput
  • πŸ›‘οΈ Production Ready: Battle-tested on Ethereum testnets

πŸ—οΈ Development

Prerequisites

  • Go 1.24+
  • CGO enabled (required for SQLite and cryptographic operations)
  • Build tags: with_blob_v1,ckzg for blob transaction support

Quick Development Setup

# Clone the repository
git clone https://github.com/ethpandaops/spamoor.git
cd spamoor

# Run tests
make test

# Build binaries
make build

# Run development environment with local testnet
make devnet-run

Project Structure

spamoor/
β”œβ”€β”€ .cursor/rules/          # Development standards and guidelines
β”œβ”€β”€ cmd/                    # CLI applications (spamoor & spamoor-daemon)
β”œβ”€β”€ daemon/                 # Daemon implementation
β”œβ”€β”€ docs/                   # User documentation
β”œβ”€β”€ scenario/               # Core scenario framework
β”œβ”€β”€ scenarios/              # Transaction scenario implementations
β”œβ”€β”€ scripts/                # Build and utility scripts
β”œβ”€β”€ spammer-configs/        # Pre-built spammer configuration library
β”œβ”€β”€ spamoor/                # Core spamoor logic
β”œβ”€β”€ txbuilder/              # Transaction building utilities
β”œβ”€β”€ utils/                  # Shared utilities
└── webui/                  # Web interface frontend

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. πŸ› Report Issues: Found a bug? Open an issue
  2. πŸ’‘ Suggest Features: Have an idea? Share it in the discussions
  3. πŸ“ Improve Documentation: Help us make the docs better
  4. πŸ§‘β€πŸ’» Submit Code: Check our development guidelines

Development Process

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Code Standards

  • Follow the code standards
  • Add tests for new features
  • Update documentation as needed
  • Ensure all tests pass

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

Built with ❀️ by the Ethpandaops team.

Special thanks to all contributors who have helped make Spamoor better!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 10

0