eth-seher


Nameeth-seher JSON
Version 1.0.5 PyPI version JSON
download
home_pagehttps://github.com/nerolation/eth-seher
SummarySeher - Ethereum Transaction Simulation and Analysis Tool
upload_time2025-08-25 06:54:50
maintainerNone
docs_urlNone
authorToni Wahrstätter
requires_python>=3.8
licenseMIT
keywords ethereum web3 transaction simulation analysis blockchain defi seher
VCS
bugtrack_url
requirements requests odfpy flask web3 eth-account eth-utils rlp
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # <img src="assets/logo.png" alt="Seher Logo" width="120" style="vertical-align: middle;"> - Ethereum Transaction Simultion 

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)

Advanced transaction simulation and analysis tool for Ethereum with comprehensive call trace visualization and state change tracking.


## Features

### Transaction Interception
- Intercept transactions from wallets (MetaMask, Rabby, etc.)
- Block and log all transaction submission methods
- Decode and display transaction details in JSON format
- Save raw transactions for later submission

### Transaction Simulation
- Trace existing transactions or simulate raw transactions
- Visual tree structure of all internal calls
- Method signature resolution via 4byte directory
- State change tracking (balances, storage, nonces)
- Gas usage analysis and efficiency metrics
- Support for all transaction types (transfers, tokens, DeFi, failed txs)
- Export traces to ODF spreadsheet format

## Installation

### Quick Install
```bash
pip install eth-seher
```

### From Source
```bash
git clone https://github.com/yourusername/eth-seher.git
cd eth-seher
pip install -e .
```

### Configuration

1. Copy the example configuration:
```bash
cp config/rpc.json.example rpc.json
```

2. Edit `rpc.json` with your RPC endpoints:
```json
{
  "1": "YOUR_MAINNET_RPC_URL",
  "11155111": "YOUR_SEPOLIA_RPC_URL"
}
```

**Note:** Your RPC endpoint must have debug_traceCall/debug_traceTransaction enabled

For detailed installation instructions, see [docs/INSTALLATION.md](docs/INSTALLATION.md)

## Quick Start

Run the complete interception and simulation pipeline:

```bash
eth-seher start
```

Or using the script directly:
```bash
./scripts/start.sh
```

This will:
1. Start the RPC interceptor on port 8545
2. Monitor for intercepted transactions
3. Automatically simulate each transaction
4. Prompt you to submit or discard each transaction

Configure your wallet:
1. Go to Settings → Networks
2. Add Custom RPC
3. Set RPC URL to: `http://localhost:8545`
4. Set Chain ID to: 1 (Mainnet)

## Advanced Usage

### Individual Components

#### Start Interceptor Only
```bash
python3 interceptor.py
```

#### Submit Latest Intercepted Transaction
```bash
python3 submit_tx.py --latest
```

#### Submit Specific Raw Transaction
```bash
python3 submit_tx.py intercepted_txs/tx_20231124_123456.raw
```

### Trace existing transaction
```bash
python3 trace.py 0x457091a405e99a6579cbef5c04d515f2498d90df7b809627a1cb08094d1f9529
```

### Trace with state changes
```bash
python3 trace.py 0x457091a405e99a6579cbef5c04d515f2498d90df7b809627a1cb08094d1f9529 --state
```

### Simulate raw transaction
```bash
python3 trace.py sim --raw "0x02f88e..." --block 23141310
```

### Load transaction from JSON
```bash
# Note: 'sim' is required to indicate simulation mode
python3 trace.py sim --raw-tx-json sample_tx.json
```

## Options

- `--chain`: Chain ID (default: 1 for mainnet)
- `--rpc`: Override RPC URL
- `--block`: Block number for simulation (default: latest)
- `--tracer`: Tracer type (default: callTracer)
- `--state`: Show state changes (balance, nonce, storage)
- `--odf`: Export trace to ODF spreadsheet file

### Show State Changes
```bash
# View balance and nonce changes
python3 trace.py sim --raw-tx-json sample_tx.json --state

# View storage changes for token transfers
python3 trace.py sim --raw-tx-json sample_token_tx.json --state
```

### Export to ODF
```bash
python3 trace.py sim --raw-tx-json sample_tx.json --odf output.ods
```

## Sample Transactions

The repository includes two sample transactions:

1. **sample_tx.json** - Simple ETH transfer (0.1 ETH)
2. **sample_token_tx.json** - USDC token transfer (1 USDC)

## Sample Output

Running a simple ETH transfer with `python3 trace.py sim --raw-tx-json sample_tx.json`:

```
════════════════════════════════════════════════════════════════════════════════
  ETHEREUM TRANSACTION TRACE
════════════════════════════════════════════════════════════════════════════════

  ◆ Network: Mainnet
  ◆ Tracer: callTracer

────────────────────────────────────────────────────────────────────────────────

📞 CALL
  From: 0xd8da6bf26964af9d7eed9e03e53415d37aa96045 → 0xbe0eb53f46cd790cd13851d5eff43d12404d33e8
  💰 Value: 100000000.00 Gwei
  ⛽ Gas: 21,000


⛽ GAS METRICS
  • Gas Used: 21,000
  • Gas Limit: 21,000
  • Efficiency: 100.0%
  • [████████████████████████████████████████]

────────────────────────────────────────────────────────────────────────────────

TRANSACTION SUMMARY

  ✅ SUCCESS
  • Total Internal Calls: 0
  • Total Gas Used: 21,000

════════════════════════════════════════════════════════════════════════════════
```

Running a USDC token transfer with `python3 trace.py sim --raw-tx-json sample_token_tx.json`:

```
════════════════════════════════════════════════════════════════════════════════
  ETHEREUM TRANSACTION TRACE
════════════════════════════════════════════════════════════════════════════════

  ◆ Network: Mainnet
  ◆ Tracer: callTracer

────────────────────────────────────────────────────────────────────────────────

📞 CALL
  From: 0xd8da6bf26964af9d7eed9e03e53415d37aa96045 → 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
  Method: transfer(address,uint256)
    └ To: 0xbe0eb53f46cd790cd13851d5eff43d12404d33e8
    └ Amount: 1,000,000
  ⛽ Gas: 45,148
  Output: 0x0000000000000000000000000000000000000000000000000000000000000001

└─🔀 DELEGATECALL
  From: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 → 0x43506849d7c04f9138d1a2050bbf3a0c054402dd
  Method: transfer(address,uint256)
    └ To: 0xbe0eb53f46cd790cd13851d5eff43d12404d33e8
    └ Amount: 1,000,000
  ⛽ Gas: 16,263
  Output: 0x0000000000000000000000000000000000000000000000000000000000000001


⛽ GAS METRICS
  • Gas Used: 45,148
  • Gas Limit: 90,000
  • Efficiency: 50.2%
  • [████████████████████░░░░░░░░░░░░░░░░░░░]

────────────────────────────────────────────────────────────────────────────────

TRANSACTION SUMMARY

  ✅ SUCCESS
  • Total Internal Calls: 1
  • Total Gas Used: 45,148

════════════════════════════════════════════════════════════════════════════════
```

### With State Changes

Running with `--state` flag shows balance, nonce, and storage changes:

```bash
python3 trace.py sim --raw-tx-json sample_token_tx.json --state
```

Output includes state changes section:

```
💾 STATE CHANGES

  ◆ Account: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
    💾 Storage:
      Slot 0x57ac49bd70712791ffcf0d97a6f825e3ed867a6f97d95a3364d8a7accb6a1ac3:
        0x00000000000000000000000000000000000000000000000000000000002dc6c0
        → 0x00000000000000000000000000000000000000000000000000000000003d0900
      Slot 0xbf4954ae1137d99a74d9587692d0c99fcc87859496c91311c267c25a44a35f95:
        0x00000000000000000000000000000000000000000000000000000004f53ee064
        → 0x00000000000000000000000000000000000000000000000000000004f52f9e24

  ◆ Account: 0xd8da6bf26964af9d7eed9e03e53415d37aa96045
    💰 Balance: 4.7887 ETH → 4.7878 ETH
    • Nonce: 1573 → 1574
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/nerolation/eth-seher",
    "name": "eth-seher",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "ethereum, web3, transaction, simulation, analysis, blockchain, defi, seher",
    "author": "Toni Wahrst\u00e4tter",
    "author_email": "Toni Wahrst\u00e4tter <info@toniwahrstaetter.com>",
    "download_url": "https://files.pythonhosted.org/packages/dd/4d/7f090a4936a60f34fbd7fe509dc222972a40c0575c61aa60a3ff4fa3a2f1/eth_seher-1.0.5.tar.gz",
    "platform": null,
    "description": "# <img src=\"assets/logo.png\" alt=\"Seher Logo\" width=\"120\" style=\"vertical-align: middle;\"> - Ethereum Transaction Simultion \n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n\nAdvanced transaction simulation and analysis tool for Ethereum with comprehensive call trace visualization and state change tracking.\n\n\n## Features\n\n### Transaction Interception\n- Intercept transactions from wallets (MetaMask, Rabby, etc.)\n- Block and log all transaction submission methods\n- Decode and display transaction details in JSON format\n- Save raw transactions for later submission\n\n### Transaction Simulation\n- Trace existing transactions or simulate raw transactions\n- Visual tree structure of all internal calls\n- Method signature resolution via 4byte directory\n- State change tracking (balances, storage, nonces)\n- Gas usage analysis and efficiency metrics\n- Support for all transaction types (transfers, tokens, DeFi, failed txs)\n- Export traces to ODF spreadsheet format\n\n## Installation\n\n### Quick Install\n```bash\npip install eth-seher\n```\n\n### From Source\n```bash\ngit clone https://github.com/yourusername/eth-seher.git\ncd eth-seher\npip install -e .\n```\n\n### Configuration\n\n1. Copy the example configuration:\n```bash\ncp config/rpc.json.example rpc.json\n```\n\n2. Edit `rpc.json` with your RPC endpoints:\n```json\n{\n  \"1\": \"YOUR_MAINNET_RPC_URL\",\n  \"11155111\": \"YOUR_SEPOLIA_RPC_URL\"\n}\n```\n\n**Note:** Your RPC endpoint must have debug_traceCall/debug_traceTransaction enabled\n\nFor detailed installation instructions, see [docs/INSTALLATION.md](docs/INSTALLATION.md)\n\n## Quick Start\n\nRun the complete interception and simulation pipeline:\n\n```bash\neth-seher start\n```\n\nOr using the script directly:\n```bash\n./scripts/start.sh\n```\n\nThis will:\n1. Start the RPC interceptor on port 8545\n2. Monitor for intercepted transactions\n3. Automatically simulate each transaction\n4. Prompt you to submit or discard each transaction\n\nConfigure your wallet:\n1. Go to Settings \u2192 Networks\n2. Add Custom RPC\n3. Set RPC URL to: `http://localhost:8545`\n4. Set Chain ID to: 1 (Mainnet)\n\n## Advanced Usage\n\n### Individual Components\n\n#### Start Interceptor Only\n```bash\npython3 interceptor.py\n```\n\n#### Submit Latest Intercepted Transaction\n```bash\npython3 submit_tx.py --latest\n```\n\n#### Submit Specific Raw Transaction\n```bash\npython3 submit_tx.py intercepted_txs/tx_20231124_123456.raw\n```\n\n### Trace existing transaction\n```bash\npython3 trace.py 0x457091a405e99a6579cbef5c04d515f2498d90df7b809627a1cb08094d1f9529\n```\n\n### Trace with state changes\n```bash\npython3 trace.py 0x457091a405e99a6579cbef5c04d515f2498d90df7b809627a1cb08094d1f9529 --state\n```\n\n### Simulate raw transaction\n```bash\npython3 trace.py sim --raw \"0x02f88e...\" --block 23141310\n```\n\n### Load transaction from JSON\n```bash\n# Note: 'sim' is required to indicate simulation mode\npython3 trace.py sim --raw-tx-json sample_tx.json\n```\n\n## Options\n\n- `--chain`: Chain ID (default: 1 for mainnet)\n- `--rpc`: Override RPC URL\n- `--block`: Block number for simulation (default: latest)\n- `--tracer`: Tracer type (default: callTracer)\n- `--state`: Show state changes (balance, nonce, storage)\n- `--odf`: Export trace to ODF spreadsheet file\n\n### Show State Changes\n```bash\n# View balance and nonce changes\npython3 trace.py sim --raw-tx-json sample_tx.json --state\n\n# View storage changes for token transfers\npython3 trace.py sim --raw-tx-json sample_token_tx.json --state\n```\n\n### Export to ODF\n```bash\npython3 trace.py sim --raw-tx-json sample_tx.json --odf output.ods\n```\n\n## Sample Transactions\n\nThe repository includes two sample transactions:\n\n1. **sample_tx.json** - Simple ETH transfer (0.1 ETH)\n2. **sample_token_tx.json** - USDC token transfer (1 USDC)\n\n## Sample Output\n\nRunning a simple ETH transfer with `python3 trace.py sim --raw-tx-json sample_tx.json`:\n\n```\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n  ETHEREUM TRANSACTION TRACE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n  \u25c6 Network: Mainnet\n  \u25c6 Tracer: callTracer\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n\ud83d\udcde CALL\n  From: 0xd8da6bf26964af9d7eed9e03e53415d37aa96045 \u2192 0xbe0eb53f46cd790cd13851d5eff43d12404d33e8\n  \ud83d\udcb0 Value: 100000000.00 Gwei\n  \u26fd Gas: 21,000\n\n\n\u26fd GAS METRICS\n  \u2022 Gas Used: 21,000\n  \u2022 Gas Limit: 21,000\n  \u2022 Efficiency: 100.0%\n  \u2022 [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588]\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nTRANSACTION SUMMARY\n\n  \u2705 SUCCESS\n  \u2022 Total Internal Calls: 0\n  \u2022 Total Gas Used: 21,000\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n```\n\nRunning a USDC token transfer with `python3 trace.py sim --raw-tx-json sample_token_tx.json`:\n\n```\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n  ETHEREUM TRANSACTION TRACE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n  \u25c6 Network: Mainnet\n  \u25c6 Tracer: callTracer\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n\ud83d\udcde CALL\n  From: 0xd8da6bf26964af9d7eed9e03e53415d37aa96045 \u2192 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\n  Method: transfer(address,uint256)\n    \u2514 To: 0xbe0eb53f46cd790cd13851d5eff43d12404d33e8\n    \u2514 Amount: 1,000,000\n  \u26fd Gas: 45,148\n  Output: 0x0000000000000000000000000000000000000000000000000000000000000001\n\n\u2514\u2500\ud83d\udd00 DELEGATECALL\n  From: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 \u2192 0x43506849d7c04f9138d1a2050bbf3a0c054402dd\n  Method: transfer(address,uint256)\n    \u2514 To: 0xbe0eb53f46cd790cd13851d5eff43d12404d33e8\n    \u2514 Amount: 1,000,000\n  \u26fd Gas: 16,263\n  Output: 0x0000000000000000000000000000000000000000000000000000000000000001\n\n\n\u26fd GAS METRICS\n  \u2022 Gas Used: 45,148\n  \u2022 Gas Limit: 90,000\n  \u2022 Efficiency: 50.2%\n  \u2022 [\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591]\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nTRANSACTION SUMMARY\n\n  \u2705 SUCCESS\n  \u2022 Total Internal Calls: 1\n  \u2022 Total Gas Used: 45,148\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n```\n\n### With State Changes\n\nRunning with `--state` flag shows balance, nonce, and storage changes:\n\n```bash\npython3 trace.py sim --raw-tx-json sample_token_tx.json --state\n```\n\nOutput includes state changes section:\n\n```\n\ud83d\udcbe STATE CHANGES\n\n  \u25c6 Account: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\n    \ud83d\udcbe Storage:\n      Slot 0x57ac49bd70712791ffcf0d97a6f825e3ed867a6f97d95a3364d8a7accb6a1ac3:\n        0x00000000000000000000000000000000000000000000000000000000002dc6c0\n        \u2192 0x00000000000000000000000000000000000000000000000000000000003d0900\n      Slot 0xbf4954ae1137d99a74d9587692d0c99fcc87859496c91311c267c25a44a35f95:\n        0x00000000000000000000000000000000000000000000000000000004f53ee064\n        \u2192 0x00000000000000000000000000000000000000000000000000000004f52f9e24\n\n  \u25c6 Account: 0xd8da6bf26964af9d7eed9e03e53415d37aa96045\n    \ud83d\udcb0 Balance: 4.7887 ETH \u2192 4.7878 ETH\n    \u2022 Nonce: 1573 \u2192 1574\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Seher - Ethereum Transaction Simulation and Analysis Tool",
    "version": "1.0.5",
    "project_urls": {
        "Bug Tracker": "https://github.com/nerolation/eth-seher/issues",
        "Documentation": "https://github.com/nerolation/eth-seher/tree/main/docs",
        "Homepage": "https://github.com/nerolation/eth-seher",
        "Repository": "https://github.com/nerolation/eth-seher"
    },
    "split_keywords": [
        "ethereum",
        " web3",
        " transaction",
        " simulation",
        " analysis",
        " blockchain",
        " defi",
        " seher"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6251ab26c24b62df25f35119155ba3af96af17e56c9bf33fb963d40d91cb6ef2",
                "md5": "35332497952a03acac2290dae46d8d09",
                "sha256": "c120ba56727b4f6f5a0f23098617ef2706a2d9001d135c6b604ab6fb24015487"
            },
            "downloads": -1,
            "filename": "eth_seher-1.0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "35332497952a03acac2290dae46d8d09",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 24799,
            "upload_time": "2025-08-25T06:54:49",
            "upload_time_iso_8601": "2025-08-25T06:54:49.161889Z",
            "url": "https://files.pythonhosted.org/packages/62/51/ab26c24b62df25f35119155ba3af96af17e56c9bf33fb963d40d91cb6ef2/eth_seher-1.0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "dd4d7f090a4936a60f34fbd7fe509dc222972a40c0575c61aa60a3ff4fa3a2f1",
                "md5": "4704c4b3e821d7890c6c980b53644123",
                "sha256": "23bd3baab9177963fac3d3ff89e1c51eac45a7caa6ed7faab3abbf5ee23ce1b5"
            },
            "downloads": -1,
            "filename": "eth_seher-1.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "4704c4b3e821d7890c6c980b53644123",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 29827,
            "upload_time": "2025-08-25T06:54:50",
            "upload_time_iso_8601": "2025-08-25T06:54:50.799749Z",
            "url": "https://files.pythonhosted.org/packages/dd/4d/7f090a4936a60f34fbd7fe509dc222972a40c0575c61aa60a3ff4fa3a2f1/eth_seher-1.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-25 06:54:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nerolation",
    "github_project": "eth-seher",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.31.0"
                ]
            ]
        },
        {
            "name": "odfpy",
            "specs": [
                [
                    ">=",
                    "1.4.1"
                ]
            ]
        },
        {
            "name": "flask",
            "specs": [
                [
                    ">=",
                    "2.3.0"
                ]
            ]
        },
        {
            "name": "web3",
            "specs": [
                [
                    ">=",
                    "6.0.0"
                ]
            ]
        },
        {
            "name": "eth-account",
            "specs": [
                [
                    ">=",
                    "0.10.0"
                ]
            ]
        },
        {
            "name": "eth-utils",
            "specs": [
                [
                    ">=",
                    "2.3.0"
                ]
            ]
        },
        {
            "name": "rlp",
            "specs": [
                [
                    ">=",
                    "3.0.0"
                ]
            ]
        }
    ],
    "lcname": "eth-seher"
}
        
Elapsed time: 0.78231s