trc20-monitor


Nametrc20-monitor JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/kun-g/trc20-monitor
SummaryProfessional TRC20 transaction monitoring for Tron blockchain
upload_time2025-08-18 05:34:09
maintainerNone
docs_urlNone
authorTRC20 Monitor Team
requires_python>=3.8.1
licenseMIT
keywords tron trc20 usdt blockchain monitoring cryptocurrency
VCS
bugtrack_url
requirements aiohttp aiofiles base58 aiosqlite pytest pytest-asyncio pytest-cov pytest-mock
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # TRC20 Monitor

Professional TRC20 transaction monitoring for Tron blockchain with pluggable adapters.

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

## ๐Ÿš€ Quick Start

### Installation

```bash
pip install trc20-monitor
```

### Basic Usage

```python
import asyncio
from trc20_monitor import (
    TRC20Monitor,
    MonitorConfig,
    MemoryDatabaseAdapter,
    ConsoleNotificationAdapter
)

async def main():
    # Configure monitoring
    config = MonitorConfig(
        monitor_addresses=["TYourTronAddress1", "TYourTronAddress2"],
        large_transaction_threshold=1000.0  # Alert for >= 1000 USDT
    )
    
    # Create adapters
    database = MemoryDatabaseAdapter()
    notifications = ConsoleNotificationAdapter()
    
    # Create monitor
    monitor = TRC20Monitor(
        config=config,
        database_adapter=database,
        notification_adapter=notifications
    )
    
    # Run once or continuously
    await monitor.start_monitoring(run_once=True)

asyncio.run(main())
```

### Environment Configuration

```bash
export MONITOR_ADDRESSES="TAddress1,TAddress2,TAddress3"
export TRON_API_KEY="your_trongrid_api_key"
export LARGE_TRANSACTION_THRESHOLD="5000.0"
export CHECK_INTERVAL_SECONDS="60"
```

```python
# Load from environment variables
config = MonitorConfig.from_env()
```

## ๐Ÿ—๏ธ Architecture

TRC20 Monitor uses a pluggable adapter architecture:

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   TRC20Monitor  โ”‚โ”€โ”€โ”€โ”€โ”‚ DatabaseAdapter  โ”‚โ”€โ”€โ”€โ”€โ”‚ NotificationAdapter โ”‚
โ”‚                 โ”‚    โ”‚                  โ”‚    โ”‚                     โ”‚
โ”‚ - Check API     โ”‚    โ”‚ - Track TXs      โ”‚    โ”‚ - Send Alerts       โ”‚
โ”‚ - Process TXs   โ”‚    โ”‚ - Prevent Dups   โ”‚    โ”‚ - Format Messages   โ”‚
โ”‚ - Handle Errors โ”‚    โ”‚ - Cleanup Old    โ”‚    โ”‚ - Multiple Channels โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚                       โ”‚                        โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                 โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚     Worker Process      โ”‚
                    โ”‚ - Continuous Running    โ”‚
                    โ”‚ - Graceful Shutdown     โ”‚
                    โ”‚ - Health Monitoring     โ”‚
                    โ”‚ - Statistics Tracking   โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

## ๐Ÿ“ฆ Available Adapters

### Database Adapters

- **MemoryDatabaseAdapter**: In-memory storage (development/testing)
- **SQLiteDatabaseAdapter**: SQLite database (single-node production)
- **SQLAlchemyDatabaseAdapter**: PostgreSQL/MySQL (enterprise)

### Notification Adapters

- **ConsoleNotificationAdapter**: Terminal output with colors
- **FileNotificationAdapter**: JSON/text file logging
- **WebhookNotificationAdapter**: HTTP POST notifications
- **MultiNotificationAdapter**: Multiple channels simultaneously

## ๐Ÿ”ง Advanced Configuration

### Custom Database

```python
from trc20_monitor.implementations import SQLiteDatabaseAdapter

# Persistent SQLite storage
database = SQLiteDatabaseAdapter("monitor.db")

# Or PostgreSQL via SQLAlchemy
from trc20_monitor.implementations import SQLAlchemyDatabaseAdapter
database = SQLAlchemyDatabaseAdapter("postgresql://user:pass@localhost/db")
```

### Multiple Notifications

```python
from trc20_monitor.implementations import (
    WebhookNotificationAdapter,
    FileNotificationAdapter,
    MultiNotificationAdapter
)

# Webhook notifications
webhook = WebhookNotificationAdapter([
    "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
    "https://discord.com/api/webhooks/YOUR/WEBHOOK"
])

# File logging
file_logger = FileNotificationAdapter("transactions.log", log_format="json")

# Combine multiple channels
notifications = MultiNotificationAdapter([webhook, file_logger])
```

### Worker Process

```python
from trc20_monitor.worker import TRC20Worker

# Background worker with health monitoring
worker = TRC20Worker(
    config=config,
    database_adapter=database,
    notification_adapter=notifications
)

# Start continuous monitoring
await worker.start()  # Runs until stopped
```

## ๐Ÿ–ฅ๏ธ Command Line Interface

```bash
# Initialize configuration file
trc20-monitor init

# Run once
trc20-monitor run-once --notification-type console

# Run continuously  
trc20-monitor --config-file config.json --db-type sqlite run

# Available options
trc20-monitor --help
```

## ๐Ÿ“Š Features

### โœ… Core Functionality

- **Multi-address monitoring**: Track multiple Tron addresses simultaneously
- **Duplicate prevention**: Automatically prevents reprocessing transactions
- **Large amount alerts**: Configurable threshold for high-value transaction alerts
- **Transaction age filtering**: Ignore old transactions to focus on recent activity
- **Robust error handling**: Graceful degradation and automatic retry mechanisms

### โœ… Production Ready

- **Async/await**: Full asyncio support for high performance
- **Pluggable architecture**: Swap database and notification backends easily
- **Health monitoring**: Built-in health checks for all components
- **Graceful shutdown**: Proper cleanup on termination signals
- **Statistics tracking**: Monitor processing rates and error counts

### โœ… Enterprise Features

- **PostgreSQL support**: Scale to high transaction volumes
- **Webhook notifications**: Integrate with Slack, Discord, PagerDuty, etc.
- **Structured logging**: JSON logs for centralized log management
- **Configuration management**: Environment variables, JSON files, or code-based
- **Test coverage**: Comprehensive test suite with async test support

## ๐Ÿงช Testing

```bash
# Install development dependencies
pip install trc20-monitor[dev]

# Run tests
pytest

# With coverage
pytest --cov=trc20_monitor

# Integration tests
pytest -m integration
```

## ๐Ÿ“ˆ Monitoring & Observability

### Health Checks

```python
# Component health status
health = await monitor.health_check()
print(health)
# {
#   "monitor": "ok",
#   "database": "ok", 
#   "notifications": "ok",
#   "api_connectivity": "ok"
# }
```

### Statistics

```python
# Worker statistics
stats = worker.get_stats()
print(f"Uptime: {stats['uptime_seconds']}s")
print(f"Successful checks: {stats['successful_checks']}")
print(f"Failed checks: {stats['failed_checks']}")
```

### Custom Metrics

```python
# Get transaction counts
total = await database.get_transaction_count()
recent = await database.get_recent_transactions(limit=10)

# Address-specific stats  
addr_summary = await database.get_addresses_summary()
```

## ๐Ÿ” Security Best Practices

### API Keys

```bash
# Use environment variables for sensitive data
export TRON_API_KEY="your_api_key_here"

# Or use a secrets management system
# Never commit API keys to version control
```

### Network Security

```python
# Configure timeouts and retries
config = MonitorConfig(
    api_timeout_seconds=30,
    api_retries=3,
    retry_delay_seconds=5
)
```

### Input Validation

```python
# All inputs are validated
from trc20_monitor.utils import validate_address

if validate_address("TYourAddress"):
    print("Valid Tron address")
```

## ๐Ÿšฆ Error Handling

The library provides comprehensive error handling:

```python
from trc20_monitor.core.exceptions import (
    TRC20MonitorError,      # Base exception
    ConfigurationError,     # Configuration issues
    ValidationError,        # Input validation errors
    APIError,              # Tron API errors
    DatabaseError,         # Database operation errors
    NotificationError      # Notification sending errors
)

try:
    await monitor.check_transactions()
except APIError as e:
    print(f"API error: {e.status_code} - {e}")
except DatabaseError as e:
    print(f"Database error: {e}")
```

## ๐Ÿ“š Examples

Check the `examples/` directory for complete working examples:

- `basic_usage.py`: Simple monitoring setup
- `with_database.py`: SQLite persistence 
- `webhook_example.py`: Webhook notifications
- `enterprise_setup.py`: Production configuration

## ๐Ÿค Contributing

1. Fork the repository
2. Create a 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

### Development Setup

```bash
git clone https://github.com/kun-g/trc20-monitor.git
cd trc20-monitor
pip install -e .[dev]
pre-commit install
```

## ๐Ÿ“œ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## ๐Ÿ™ Acknowledgments

- [Tron Network](https://tron.network/) for the blockchain infrastructure
- [TronGrid](https://www.trongrid.io/) for API services
- [aiogram](https://aiogram.dev/) for Telegram bot inspiration
- [FastAPI](https://fastapi.tiangolo.com/) for async patterns

## ๐Ÿ“ž Support

- ๐Ÿ“– [Documentation](https://trc20-monitor.readthedocs.io/)
- ๐Ÿ› [Issues](https://github.com/kun-g/trc20-monitor/issues)
- ๐Ÿ’ฌ [Discussions](https://github.com/kun-g/trc20-monitor/discussions)
- ๐Ÿ“ง Email: support@trc20monitor.com

---

**Made with โค๏ธ for the Tron ecosystem**
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/kun-g/trc20-monitor",
    "name": "trc20-monitor",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8.1",
    "maintainer_email": null,
    "keywords": "tron, trc20, usdt, blockchain, monitoring, cryptocurrency",
    "author": "TRC20 Monitor Team",
    "author_email": "support@trc20monitor.com",
    "download_url": "https://files.pythonhosted.org/packages/64/e3/6c89ddb8a04038a8d6f5863dcfdd95441ca3684b7eddecd2ad626e3f3b91/trc20_monitor-0.1.0.tar.gz",
    "platform": null,
    "description": "# TRC20 Monitor\n\nProfessional TRC20 transaction monitoring for Tron blockchain with pluggable adapters.\n\n[![Python Version](https://img.shields.io/badge/python-3.8+-blue.svg)](https://python.org)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install trc20-monitor\n```\n\n### Basic Usage\n\n```python\nimport asyncio\nfrom trc20_monitor import (\n    TRC20Monitor,\n    MonitorConfig,\n    MemoryDatabaseAdapter,\n    ConsoleNotificationAdapter\n)\n\nasync def main():\n    # Configure monitoring\n    config = MonitorConfig(\n        monitor_addresses=[\"TYourTronAddress1\", \"TYourTronAddress2\"],\n        large_transaction_threshold=1000.0  # Alert for >= 1000 USDT\n    )\n    \n    # Create adapters\n    database = MemoryDatabaseAdapter()\n    notifications = ConsoleNotificationAdapter()\n    \n    # Create monitor\n    monitor = TRC20Monitor(\n        config=config,\n        database_adapter=database,\n        notification_adapter=notifications\n    )\n    \n    # Run once or continuously\n    await monitor.start_monitoring(run_once=True)\n\nasyncio.run(main())\n```\n\n### Environment Configuration\n\n```bash\nexport MONITOR_ADDRESSES=\"TAddress1,TAddress2,TAddress3\"\nexport TRON_API_KEY=\"your_trongrid_api_key\"\nexport LARGE_TRANSACTION_THRESHOLD=\"5000.0\"\nexport CHECK_INTERVAL_SECONDS=\"60\"\n```\n\n```python\n# Load from environment variables\nconfig = MonitorConfig.from_env()\n```\n\n## \ud83c\udfd7\ufe0f Architecture\n\nTRC20 Monitor uses a pluggable adapter architecture:\n\n```\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502   TRC20Monitor  \u2502\u2500\u2500\u2500\u2500\u2502 DatabaseAdapter  \u2502\u2500\u2500\u2500\u2500\u2502 NotificationAdapter \u2502\n\u2502                 \u2502    \u2502                  \u2502    \u2502                     \u2502\n\u2502 - Check API     \u2502    \u2502 - Track TXs      \u2502    \u2502 - Send Alerts       \u2502\n\u2502 - Process TXs   \u2502    \u2502 - Prevent Dups   \u2502    \u2502 - Format Messages   \u2502\n\u2502 - Handle Errors \u2502    \u2502 - Cleanup Old    \u2502    \u2502 - Multiple Channels \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n         \u2502                       \u2502                        \u2502\n         \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                                 \u2502\n                    \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n                    \u2502     Worker Process      \u2502\n                    \u2502 - Continuous Running    \u2502\n                    \u2502 - Graceful Shutdown     \u2502\n                    \u2502 - Health Monitoring     \u2502\n                    \u2502 - Statistics Tracking   \u2502\n                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## \ud83d\udce6 Available Adapters\n\n### Database Adapters\n\n- **MemoryDatabaseAdapter**: In-memory storage (development/testing)\n- **SQLiteDatabaseAdapter**: SQLite database (single-node production)\n- **SQLAlchemyDatabaseAdapter**: PostgreSQL/MySQL (enterprise)\n\n### Notification Adapters\n\n- **ConsoleNotificationAdapter**: Terminal output with colors\n- **FileNotificationAdapter**: JSON/text file logging\n- **WebhookNotificationAdapter**: HTTP POST notifications\n- **MultiNotificationAdapter**: Multiple channels simultaneously\n\n## \ud83d\udd27 Advanced Configuration\n\n### Custom Database\n\n```python\nfrom trc20_monitor.implementations import SQLiteDatabaseAdapter\n\n# Persistent SQLite storage\ndatabase = SQLiteDatabaseAdapter(\"monitor.db\")\n\n# Or PostgreSQL via SQLAlchemy\nfrom trc20_monitor.implementations import SQLAlchemyDatabaseAdapter\ndatabase = SQLAlchemyDatabaseAdapter(\"postgresql://user:pass@localhost/db\")\n```\n\n### Multiple Notifications\n\n```python\nfrom trc20_monitor.implementations import (\n    WebhookNotificationAdapter,\n    FileNotificationAdapter,\n    MultiNotificationAdapter\n)\n\n# Webhook notifications\nwebhook = WebhookNotificationAdapter([\n    \"https://hooks.slack.com/services/YOUR/WEBHOOK/URL\",\n    \"https://discord.com/api/webhooks/YOUR/WEBHOOK\"\n])\n\n# File logging\nfile_logger = FileNotificationAdapter(\"transactions.log\", log_format=\"json\")\n\n# Combine multiple channels\nnotifications = MultiNotificationAdapter([webhook, file_logger])\n```\n\n### Worker Process\n\n```python\nfrom trc20_monitor.worker import TRC20Worker\n\n# Background worker with health monitoring\nworker = TRC20Worker(\n    config=config,\n    database_adapter=database,\n    notification_adapter=notifications\n)\n\n# Start continuous monitoring\nawait worker.start()  # Runs until stopped\n```\n\n## \ud83d\udda5\ufe0f Command Line Interface\n\n```bash\n# Initialize configuration file\ntrc20-monitor init\n\n# Run once\ntrc20-monitor run-once --notification-type console\n\n# Run continuously  \ntrc20-monitor --config-file config.json --db-type sqlite run\n\n# Available options\ntrc20-monitor --help\n```\n\n## \ud83d\udcca Features\n\n### \u2705 Core Functionality\n\n- **Multi-address monitoring**: Track multiple Tron addresses simultaneously\n- **Duplicate prevention**: Automatically prevents reprocessing transactions\n- **Large amount alerts**: Configurable threshold for high-value transaction alerts\n- **Transaction age filtering**: Ignore old transactions to focus on recent activity\n- **Robust error handling**: Graceful degradation and automatic retry mechanisms\n\n### \u2705 Production Ready\n\n- **Async/await**: Full asyncio support for high performance\n- **Pluggable architecture**: Swap database and notification backends easily\n- **Health monitoring**: Built-in health checks for all components\n- **Graceful shutdown**: Proper cleanup on termination signals\n- **Statistics tracking**: Monitor processing rates and error counts\n\n### \u2705 Enterprise Features\n\n- **PostgreSQL support**: Scale to high transaction volumes\n- **Webhook notifications**: Integrate with Slack, Discord, PagerDuty, etc.\n- **Structured logging**: JSON logs for centralized log management\n- **Configuration management**: Environment variables, JSON files, or code-based\n- **Test coverage**: Comprehensive test suite with async test support\n\n## \ud83e\uddea Testing\n\n```bash\n# Install development dependencies\npip install trc20-monitor[dev]\n\n# Run tests\npytest\n\n# With coverage\npytest --cov=trc20_monitor\n\n# Integration tests\npytest -m integration\n```\n\n## \ud83d\udcc8 Monitoring & Observability\n\n### Health Checks\n\n```python\n# Component health status\nhealth = await monitor.health_check()\nprint(health)\n# {\n#   \"monitor\": \"ok\",\n#   \"database\": \"ok\", \n#   \"notifications\": \"ok\",\n#   \"api_connectivity\": \"ok\"\n# }\n```\n\n### Statistics\n\n```python\n# Worker statistics\nstats = worker.get_stats()\nprint(f\"Uptime: {stats['uptime_seconds']}s\")\nprint(f\"Successful checks: {stats['successful_checks']}\")\nprint(f\"Failed checks: {stats['failed_checks']}\")\n```\n\n### Custom Metrics\n\n```python\n# Get transaction counts\ntotal = await database.get_transaction_count()\nrecent = await database.get_recent_transactions(limit=10)\n\n# Address-specific stats  \naddr_summary = await database.get_addresses_summary()\n```\n\n## \ud83d\udd10 Security Best Practices\n\n### API Keys\n\n```bash\n# Use environment variables for sensitive data\nexport TRON_API_KEY=\"your_api_key_here\"\n\n# Or use a secrets management system\n# Never commit API keys to version control\n```\n\n### Network Security\n\n```python\n# Configure timeouts and retries\nconfig = MonitorConfig(\n    api_timeout_seconds=30,\n    api_retries=3,\n    retry_delay_seconds=5\n)\n```\n\n### Input Validation\n\n```python\n# All inputs are validated\nfrom trc20_monitor.utils import validate_address\n\nif validate_address(\"TYourAddress\"):\n    print(\"Valid Tron address\")\n```\n\n## \ud83d\udea6 Error Handling\n\nThe library provides comprehensive error handling:\n\n```python\nfrom trc20_monitor.core.exceptions import (\n    TRC20MonitorError,      # Base exception\n    ConfigurationError,     # Configuration issues\n    ValidationError,        # Input validation errors\n    APIError,              # Tron API errors\n    DatabaseError,         # Database operation errors\n    NotificationError      # Notification sending errors\n)\n\ntry:\n    await monitor.check_transactions()\nexcept APIError as e:\n    print(f\"API error: {e.status_code} - {e}\")\nexcept DatabaseError as e:\n    print(f\"Database error: {e}\")\n```\n\n## \ud83d\udcda Examples\n\nCheck the `examples/` directory for complete working examples:\n\n- `basic_usage.py`: Simple monitoring setup\n- `with_database.py`: SQLite persistence \n- `webhook_example.py`: Webhook notifications\n- `enterprise_setup.py`: Production configuration\n\n## \ud83e\udd1d Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Setup\n\n```bash\ngit clone https://github.com/kun-g/trc20-monitor.git\ncd trc20-monitor\npip install -e .[dev]\npre-commit install\n```\n\n## \ud83d\udcdc License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- [Tron Network](https://tron.network/) for the blockchain infrastructure\n- [TronGrid](https://www.trongrid.io/) for API services\n- [aiogram](https://aiogram.dev/) for Telegram bot inspiration\n- [FastAPI](https://fastapi.tiangolo.com/) for async patterns\n\n## \ud83d\udcde Support\n\n- \ud83d\udcd6 [Documentation](https://trc20-monitor.readthedocs.io/)\n- \ud83d\udc1b [Issues](https://github.com/kun-g/trc20-monitor/issues)\n- \ud83d\udcac [Discussions](https://github.com/kun-g/trc20-monitor/discussions)\n- \ud83d\udce7 Email: support@trc20monitor.com\n\n---\n\n**Made with \u2764\ufe0f for the Tron ecosystem**",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Professional TRC20 transaction monitoring for Tron blockchain",
    "version": "0.1.0",
    "project_urls": {
        "Changelog": "https://github.com/kun-g/trc20-monitor/blob/main/CHANGELOG.md",
        "Documentation": "https://trc20-monitor.readthedocs.io/",
        "Homepage": "https://github.com/kun-g/trc20-monitor",
        "Issues": "https://github.com/kun-g/trc20-monitor/issues",
        "Repository": "https://github.com/kun-g/trc20-monitor.git"
    },
    "split_keywords": [
        "tron",
        " trc20",
        " usdt",
        " blockchain",
        " monitoring",
        " cryptocurrency"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c39dc1fc140d9e4529b19667755f7733b716b487ab7f83ea3e9017d068872277",
                "md5": "ab8521ce012dde81f79e38a58dfcc9de",
                "sha256": "caf54abb8e93bfe64b9f60d5fa0bbe9c1633aa0f1f7c98c85301f95d98f96459"
            },
            "downloads": -1,
            "filename": "trc20_monitor-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ab8521ce012dde81f79e38a58dfcc9de",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8.1",
            "size": 41462,
            "upload_time": "2025-08-18T05:34:07",
            "upload_time_iso_8601": "2025-08-18T05:34:07.401330Z",
            "url": "https://files.pythonhosted.org/packages/c3/9d/c1fc140d9e4529b19667755f7733b716b487ab7f83ea3e9017d068872277/trc20_monitor-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "64e36c89ddb8a04038a8d6f5863dcfdd95441ca3684b7eddecd2ad626e3f3b91",
                "md5": "30e6983fd0e632d721cab943df39ac6e",
                "sha256": "60f397d4856cc543d210370d2ed14eb0d7e786b7f75d742ec336a0a947eaf980"
            },
            "downloads": -1,
            "filename": "trc20_monitor-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "30e6983fd0e632d721cab943df39ac6e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8.1",
            "size": 43437,
            "upload_time": "2025-08-18T05:34:09",
            "upload_time_iso_8601": "2025-08-18T05:34:09.284731Z",
            "url": "https://files.pythonhosted.org/packages/64/e3/6c89ddb8a04038a8d6f5863dcfdd95441ca3684b7eddecd2ad626e3f3b91/trc20_monitor-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-18 05:34:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kun-g",
    "github_project": "trc20-monitor",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "aiohttp",
            "specs": [
                [
                    ">=",
                    "3.8.0"
                ]
            ]
        },
        {
            "name": "aiofiles",
            "specs": [
                [
                    ">=",
                    "23.0.0"
                ]
            ]
        },
        {
            "name": "base58",
            "specs": [
                [
                    ">=",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "aiosqlite",
            "specs": [
                [
                    ">=",
                    "0.19.0"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    ">=",
                    "7.0.0"
                ]
            ]
        },
        {
            "name": "pytest-asyncio",
            "specs": [
                [
                    ">=",
                    "0.21.0"
                ]
            ]
        },
        {
            "name": "pytest-cov",
            "specs": [
                [
                    ">=",
                    "4.0.0"
                ]
            ]
        },
        {
            "name": "pytest-mock",
            "specs": [
                [
                    ">=",
                    "3.10.0"
                ]
            ]
        }
    ],
    "lcname": "trc20-monitor"
}
        
Elapsed time: 1.29226s