# <img src="assets/logo.png" alt="Seher Logo" width="120" style="vertical-align: middle;"> - Ethereum Transaction Simultion
[](https://opensource.org/licenses/MIT)
[](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[](https://opensource.org/licenses/MIT)\n[](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"
}