{"id":29439955,"url":"https://github.com/vitwit/solana-pda-analyser","last_synced_at":"2026-05-17T18:12:21.425Z","repository":{"id":303976220,"uuid":"1017367088","full_name":"vitwit/solana-pda-analyser","owner":"vitwit","description":"Analyze Program Derived Addresses (PDAs), monitor transactions, and uncover patterns on Solana. Includes a CLI, REST API, and modern web UI for real-time insights.","archived":false,"fork":false,"pushed_at":"2025-07-10T13:28:39.000Z","size":102,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-10T19:53:08.028Z","etag":null,"topics":["pda","pda-analyser","solana"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vitwit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-10T12:29:19.000Z","updated_at":"2025-07-10T13:28:43.000Z","dependencies_parsed_at":"2025-07-10T19:53:13.374Z","dependency_job_id":"4e9e5b49-f5e1-4c1e-85aa-614690a87c44","html_url":"https://github.com/vitwit/solana-pda-analyser","commit_stats":null,"previous_names":["vitwit/solana-pda-analyser"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/vitwit/solana-pda-analyser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitwit%2Fsolana-pda-analyser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitwit%2Fsolana-pda-analyser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitwit%2Fsolana-pda-analyser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitwit%2Fsolana-pda-analyser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vitwit","download_url":"https://codeload.github.com/vitwit/solana-pda-analyser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitwit%2Fsolana-pda-analyser/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265122420,"owners_count":23714547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pda","pda-analyser","solana"],"created_at":"2025-07-13T10:01:38.008Z","updated_at":"2026-05-17T18:12:21.420Z","avatar_url":"https://github.com/vitwit.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Solana PDA Analyzer\n\nA comprehensive, production-ready tool for analyzing Solana Program Derived Addresses (PDAs), tracking transaction patterns, and understanding program behavior on the Solana blockchain. Features real-time analysis, pattern recognition, and beautiful visualization of PDA derivation patterns.\n\n## Features\n\n- **🔍 Advanced PDA Analysis**: Derive seeds and analyze PDA patterns for any Solana program\n- **🌐 REST API Server**: Full-featured HTTP API for real-time PDA analysis (see [API_EXAMPLES.md](API_EXAMPLES.md))\n- **📊 Real-World Examples**: Pre-loaded with examples from major protocols (SPL Token, Metaplex, Serum, Raydium)\n- **🎯 Pattern Recognition**: Automatically detect and classify common PDA seed patterns\n\n## 📊 Analysis Output Sample\n\n```\n════════════════════════════════════════════════════════════════════════════════\n🚀 SOLANA PDA ANALYZER - COMPREHENSIVE ANALYSIS REPORT\n════════════════════════════════════════════════════════════════════════════════\n📊 Analyzing Program Derived Addresses from Live Solana Programs\n🔍 Reverse Engineering Seed Patterns and Derivation Logic\n════════════════════════════════════════════════════════════════════════════════\n\n📋 DETAILED ANALYSIS RESULTS\n────────────────────────────────────────────────────────────────────────────────\n\n1. ✅ USDC Associated Token Account\n   🏷️  PDA Address: Gh9ZwEmd...hQKkx\n   🔧 Program: SPL Associated Token (ATokenGP...nL)\n   📝 Description: Stores USDC tokens for wallet 9WzDXwBbmkg8...\n   🎯 Pattern: WALLET_TOKEN_MINT (98% confidence)\n   ⏱️  Analysis Time: 12ms\n   🌱 Seed Breakdown:\n      1. 🔑 Pubkey (32 bytes): Wallet owner address\n      2. 🔑 Pubkey (32 bytes): SPL Token Program ID\n      3. 🔑 Pubkey (32 bytes): USDC mint address\n\n📊 PATTERN ANALYSIS \u0026 STATISTICS\n────────────────────────────────────────────────────────────────────────────────\n\n🏆 Pattern Distribution:\n   1. WALLET_TOKEN_MINT [█████████░░░░░░░░░░░] 45.0% (9 PDAs)\n   2. STRING_PROGRAM_MINT [████░░░░░░░░░░░░░░░░] 20.0% (4 PDAs)\n   3. STRING_AUTHORITY [███░░░░░░░░░░░░░░░░░░] 15.0% (3 PDAs)\n   4. PUBKEY_U64 [██░░░░░░░░░░░░░░░░░░] 10.0% (2 PDAs)\n   5. STRING_SINGLETON [██░░░░░░░░░░░░░░░░░░] 10.0% (2 PDAs)\n\n📈 EXECUTIVE SUMMARY\n────────────────────────────────────────────────────────────────────────────────\n🎯 Analysis Overview:\n   • Total PDAs Analyzed: 20\n   • Unique Patterns Detected: 8\n   • Overall Success Rate: 95.0%\n   • Total Processing Time: 234ms\n   • Average Time per PDA: 11.7ms\n```\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Rust 1.70+\n- PostgreSQL 12+\n- Docker (optional)\n\n### Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/your-username/solana-pda-analyzer.git\n   cd solana-pda-analyzer\n   ```\n\n2. **Set up the database**\n   ```bash\n   # Create PostgreSQL database\n   createdb solana_pda_analyzer\n   \n   # Copy environment file\n   cp .env.example .env\n   \n   # Edit .env with your database credentials\n   nano .env\n   ```\n\n3. **Build the project**\n   ```bash\n   make build\n   # or manually: cargo build --release\n   ```\n\n4. **Initialize the database**\n   ```bash\n   make db-init\n   # or manually: ./target/release/pda-analyzer database init\n   ```\n\n5. **Run the tests**\n   ```bash\n   make test-all\n   ```\n\n6. **Start the API server**\n   ```bash\n   make run\n   # or manually: ./target/release/pda-analyzer serve\n   ```\n\n7. **Test the API**\n   ```bash\n   # Health check\n   curl http://localhost:8080/health\n   \n   # Analyze a PDA\n   curl -X POST http://localhost:8080/api/v1/analyze/pda \\\n     -H \"Content-Type: application/json\" \\\n     -d '{\"address\": \"SysvarRent111111111111111111111111111111111\", \"program_id\": \"11111111111111111111111111111112\"}'\n   ```\n\n8. **Access the API documentation**\n   \n   Open your browser to `http://localhost:8080/docs`\n\n### 🐳 Docker Setup (Alternative)\n\n```bash\n# Start with Docker Compose\ndocker-compose up -d\n\n# Run tests in Docker\ndocker-compose exec app make test-all\n\n# View logs\ndocker-compose logs -f app\n```\n\n## 💻 Usage\n\n### Command Line Interface\n\n#### Analyze Individual PDAs\n```bash\n# Analyze a specific PDA\n./target/release/pda-analyzer analyze \\\n  --address \"Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr\" \\\n  --program-id \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n\n# Batch analyze multiple PDAs\n./target/release/pda-analyzer batch-analyze \\\n  --input pdas.json \\\n  --output results.json\n```\n\n#### Run Real-World Examples\n```bash\n# Run all example analyses\n./examples/run_examples.sh\n\n# Run specific category\n./examples/run_examples.sh spl-token\n./examples/run_examples.sh metaplex\n./examples/run_examples.sh real-world\n```\n\n#### Database Operations\n```bash\n# Initialize database with schema\n./target/release/pda-analyzer database init\n\n# Check database status and metrics\n./target/release/pda-analyzer database status\n\n# Reset database (caution!)\n./target/release/pda-analyzer database reset\n\n# Run pending migrations\n./target/release/pda-analyzer database migrate\n```\n\n#### Fetch and Analyze Transactions\n```bash\n# Fetch recent transactions for a program\n./target/release/pda-analyzer fetch \\\n  --program-id \"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\" \\\n  --limit 1000\n\n# Analyze transaction patterns\n./target/release/pda-analyzer analyze-transactions \\\n  --program-id \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"\n```\n\n#### Statistics and Reports\n```bash\n# Show comprehensive statistics\n./target/release/pda-analyzer stats\n\n# Generate detailed analysis report\n./target/release/pda-analyzer report \\\n  --output html \\\n  --file analysis_report.html\n```\n\n### 🔌 REST API\n\n#### Analyze PDAs\n```bash\n# Analyze a single PDA\ncurl -X POST http://localhost:8080/api/v1/analyze/pda \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"address\": \"Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr\",\n    \"program_id\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n  }'\n\n# Batch analyze multiple PDAs\ncurl -X POST http://localhost:8080/api/v1/analyze/pda/batch \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"pdas\": [\n      {\"address\": \"PDA1...\", \"program_id\": \"PROG1...\"},\n      {\"address\": \"PDA2...\", \"program_id\": \"PROG2...\"}\n    ]\n  }'\n```\n\n#### Programs and Patterns\n```bash\n# Get all analyzed programs\ncurl http://localhost:8080/api/v1/programs\n\n# Get program details and statistics\ncurl http://localhost:8080/api/v1/programs/{program_id}\n\n# Get PDA patterns for a program\ncurl http://localhost:8080/api/v1/programs/{program_id}/patterns\n```\n\n#### Analytics and Reports\n```bash\n# Get database metrics\ncurl http://localhost:8080/api/v1/analytics/database\n\n# Get pattern distribution\ncurl http://localhost:8080/api/v1/analytics/patterns\n\n# Get performance metrics\ncurl http://localhost:8080/api/v1/analytics/performance\n```\n\n## Real-World Examples\n\nThe tool includes comprehensive examples from major Solana protocols:\n\n### 📊 SPL Token Examples\n- **Associated Token Accounts**: Most common PDA pattern on Solana\n- **Mint Authorities**: Program-controlled token minting\n- **Vault Token Accounts**: DeFi protocol escrow patterns\n\n### 🎨 Metaplex NFT Examples\n- **NFT Metadata**: Standard NFT information storage\n- **Master Editions**: NFT printing and edition control\n- **Collection Metadata**: NFT collection organization\n- **Auction House**: NFT marketplace structures\n\n### 🌍 Protocol Examples\n- **Serum DEX**: Market authorities and trading structures\n- **Raydium AMM**: Liquidity pool management\n- **Marinade Finance**: Liquid staking protocol state\n- **Solana Name Service**: Domain name resolution\n- **Governance**: DAO proposal and voting systems\n\nEach example includes:\n- ✅ **Real PDA addresses** from mainnet/testnet\n- 🔍 **Expected seed patterns** with detailed breakdowns\n- 📝 **Comprehensive descriptions** of functionality\n- 🧪 **Automated tests** for validation\n\n## ⚙️ Configuration\n\n### Environment Variables\n\nCreate a `.env` file (copy from `.env.example`) and update as required\n\n## 🧪 Testing\n\n### Running Tests\n\n```bash\n# Run all tests\nmake test-all\n\n# Run specific test categories\nmake test-unit        # Unit tests only\nmake test-integration # Integration tests only\nmake test-api        # API endpoint tests\nmake test-performance # Performance benchmarks\n\n# Run tests with coverage\nmake test-coverage\n\n# Run example validation\nmake test-examples\n```\n\n### Performance Testing\n\n```bash\n# Run benchmark tests\ncargo bench\n\n# Load test the API\n./tests/load_test.py --concurrent 50 --requests 1000\n\n# Profile memory usage\n./tests/memory_profile.sh\n```\n\n## 📊 API Reference\n\n### Response Format\n\nAll API responses follow this format:\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"pda_info\": {\n      \"address\": \"Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr\",\n      \"program_id\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\",\n      \"seeds\": [\n        {\n          \"type\": \"Pubkey\",\n          \"value\": \"9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM\",\n          \"description\": \"Wallet owner address\"\n        }\n      ],\n      \"pattern\": \"WALLET_TOKEN_MINT\",\n      \"confidence\": 0.98,\n      \"analysis_time_ms\": 12\n    }\n  },\n  \"error\": null,\n  \"timestamp\": \"2024-01-01T00:00:00Z\",\n  \"request_id\": \"req_123456789\"\n}\n```\n\n### Complete Endpoint List\n\n#### PDA Analysis\n- `POST /api/v1/analyze/pda` - Analyze a single PDA\n- `POST /api/v1/analyze/pda/batch` - Batch analyze multiple PDAs\n- `GET /api/v1/pdas` - List analyzed PDAs with pagination\n- `GET /api/v1/pdas/{address}` - Get detailed PDA information\n\n#### Programs\n- `GET /api/v1/programs` - List all programs\n- `GET /api/v1/programs/{id}` - Get program details\n- `GET /api/v1/programs/{id}/stats` - Get program statistics\n- `GET /api/v1/programs/{id}/patterns` - Get program PDA patterns\n\n#### Transactions\n- `GET /api/v1/transactions` - List transactions with filters\n- `GET /api/v1/transactions/{signature}` - Get transaction details\n- `POST /api/v1/transactions/analyze` - Analyze transaction for PDAs\n\n#### Analytics\n- `GET /api/v1/analytics/database` - Database metrics and statistics\n- `GET /api/v1/analytics/patterns` - Pattern distribution and trends\n- `GET /api/v1/analytics/performance` - Performance metrics and timing\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.\n\n### Quick Contribution Steps\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\n3. Make your changes and add tests\n4. Run the test suite: `make test-all`\n5. Commit your changes: `git commit -m \"Add amazing feature\"`\n6. Push to the branch: `git push origin feature/amazing-feature`\n7. Submit a pull request\n\n### Development Setup\n\n```bash\n# Install development dependencies\nmake dev-setup\n\n# Run development server with hot reload\nmake dev\n\n# Run linting and formatting\nmake lint\nmake fmt\n\n# Generate documentation\nmake docs\n```\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 📞 Support\n\n- **🐛 Bug Reports**: [GitHub Issues](https://github.com/vitwit/solana-pda-analyzer/issues)\n- **💡 Feature Requests**: [GitHub Discussions](https://github.com/vitwit/solana-pda-analyzer/discussions)\n- **📖 Documentation**: [Project Wiki](https://github.com/vitwit/solana-pda-analyzer/wiki)\n- **💬 Community**: [Telegram Channel](https://t.co/69gF5Se6IW)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitwit%2Fsolana-pda-analyser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvitwit%2Fsolana-pda-analyser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitwit%2Fsolana-pda-analyser/lists"}