@intentsolutionsio/token-launch-tracker 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +22 -0
- package/LICENSE +21 -0
- package/README.md +162 -0
- package/agents/launch-tracker-agent.md +338 -0
- package/package.json +43 -0
- package/skills/skill-adapter/assets/README.md +5 -0
- package/skills/skill-adapter/assets/config-template.json +32 -0
- package/skills/skill-adapter/assets/skill-schema.json +28 -0
- package/skills/skill-adapter/assets/test-data.json +27 -0
- package/skills/skill-adapter/references/README.md +4 -0
- package/skills/skill-adapter/references/best-practices.md +69 -0
- package/skills/skill-adapter/references/examples.md +73 -0
- package/skills/skill-adapter/scripts/README.md +8 -0
- package/skills/skill-adapter/scripts/helper-template.sh +42 -0
- package/skills/skill-adapter/scripts/validation.sh +32 -0
- package/skills/tracking-token-launches/ARD.md +183 -0
- package/skills/tracking-token-launches/PRD.md +66 -0
- package/skills/tracking-token-launches/SKILL.md +161 -0
- package/skills/tracking-token-launches/config/settings.yaml +166 -0
- package/skills/tracking-token-launches/references/errors.md +167 -0
- package/skills/tracking-token-launches/references/examples.md +292 -0
- package/skills/tracking-token-launches/references/implementation.md +36 -0
- package/skills/tracking-token-launches/scripts/dex_sources.py +270 -0
- package/skills/tracking-token-launches/scripts/event_monitor.py +345 -0
- package/skills/tracking-token-launches/scripts/formatters.py +279 -0
- package/skills/tracking-token-launches/scripts/launch_tracker.py +572 -0
- package/skills/tracking-token-launches/scripts/token_analyzer.py +417 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Token Launch Tracker Configuration
|
|
2
|
+
# Author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
3
|
+
# Version: 1.0.0
|
|
4
|
+
|
|
5
|
+
# Default settings
|
|
6
|
+
defaults:
|
|
7
|
+
chain: ethereum
|
|
8
|
+
hours: 24
|
|
9
|
+
limit: 50
|
|
10
|
+
format: text
|
|
11
|
+
analyze: false
|
|
12
|
+
|
|
13
|
+
# Chain configurations
|
|
14
|
+
chains:
|
|
15
|
+
ethereum:
|
|
16
|
+
rpc_url: https://eth.llamarpc.com
|
|
17
|
+
block_time: 12.0
|
|
18
|
+
explorer_url: https://etherscan.io
|
|
19
|
+
native_symbol: ETH
|
|
20
|
+
wrapped_native: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
|
|
21
|
+
|
|
22
|
+
bsc:
|
|
23
|
+
rpc_url: https://bsc-dataseed1.binance.org
|
|
24
|
+
block_time: 3.0
|
|
25
|
+
explorer_url: https://bscscan.com
|
|
26
|
+
native_symbol: BNB
|
|
27
|
+
wrapped_native: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"
|
|
28
|
+
|
|
29
|
+
arbitrum:
|
|
30
|
+
rpc_url: https://arb1.arbitrum.io/rpc
|
|
31
|
+
block_time: 0.25
|
|
32
|
+
explorer_url: https://arbiscan.io
|
|
33
|
+
native_symbol: ETH
|
|
34
|
+
wrapped_native: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"
|
|
35
|
+
|
|
36
|
+
base:
|
|
37
|
+
rpc_url: https://mainnet.base.org
|
|
38
|
+
block_time: 2.0
|
|
39
|
+
explorer_url: https://basescan.org
|
|
40
|
+
native_symbol: ETH
|
|
41
|
+
wrapped_native: "0x4200000000000000000000000000000000000006"
|
|
42
|
+
|
|
43
|
+
polygon:
|
|
44
|
+
rpc_url: https://polygon-rpc.com
|
|
45
|
+
block_time: 2.0
|
|
46
|
+
explorer_url: https://polygonscan.com
|
|
47
|
+
native_symbol: MATIC
|
|
48
|
+
wrapped_native: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"
|
|
49
|
+
|
|
50
|
+
# Risk analysis settings
|
|
51
|
+
risk_analysis:
|
|
52
|
+
# Risk score thresholds
|
|
53
|
+
thresholds:
|
|
54
|
+
high: 70
|
|
55
|
+
medium: 40
|
|
56
|
+
low: 20
|
|
57
|
+
|
|
58
|
+
# Function signatures to detect (high risk)
|
|
59
|
+
# Note: 0xa9059cbb is the standard ERC20 transfer function, not blacklist
|
|
60
|
+
risky_functions:
|
|
61
|
+
mint: "0x40c10f19"
|
|
62
|
+
blacklist: "0x44337ea1" # addToBlacklist(address)
|
|
63
|
+
burn: "0x42966c68"
|
|
64
|
+
transferOwnership: "0xf2fde38b"
|
|
65
|
+
|
|
66
|
+
# Risk weights by indicator
|
|
67
|
+
weights:
|
|
68
|
+
mint_function: 30
|
|
69
|
+
proxy_contract: 20
|
|
70
|
+
not_verified: 15
|
|
71
|
+
has_owner: 10
|
|
72
|
+
has_blacklist: 15
|
|
73
|
+
transferable_ownership: 5
|
|
74
|
+
|
|
75
|
+
# Proxy detection patterns
|
|
76
|
+
proxy_patterns:
|
|
77
|
+
- "363d3d373d3d3d363d73" # Minimal proxy
|
|
78
|
+
- "5155f3" # DELEGATECALL
|
|
79
|
+
- "363d3d373d3d3d363d" # EIP-1167
|
|
80
|
+
|
|
81
|
+
# DEX configurations
|
|
82
|
+
dex:
|
|
83
|
+
# Uniswap V2-style PairCreated event
|
|
84
|
+
pair_created_topic_v2: "0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9"
|
|
85
|
+
|
|
86
|
+
# Uniswap V3 PoolCreated event
|
|
87
|
+
pool_created_topic_v3: "0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118"
|
|
88
|
+
|
|
89
|
+
# Factory addresses by chain
|
|
90
|
+
factories:
|
|
91
|
+
ethereum:
|
|
92
|
+
uniswap_v2: "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f"
|
|
93
|
+
uniswap_v3: "0x1F98431c8aD98523631AE4a59f267346ea31F984"
|
|
94
|
+
sushiswap: "0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac"
|
|
95
|
+
|
|
96
|
+
bsc:
|
|
97
|
+
pancakeswap_v2: "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"
|
|
98
|
+
pancakeswap_v3: "0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865"
|
|
99
|
+
|
|
100
|
+
arbitrum:
|
|
101
|
+
uniswap_v3: "0x1F98431c8aD98523631AE4a59f267346ea31F984"
|
|
102
|
+
camelot: "0x6EcCab422D763aC031210895C81787E87B43A652"
|
|
103
|
+
sushiswap: "0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
|
104
|
+
|
|
105
|
+
base:
|
|
106
|
+
uniswap_v3: "0x33128a8fC17869897dcE68Ed026d694621f6FDfD"
|
|
107
|
+
aerodrome: "0x420DD381b31aEf6683db6B902084cB0FFECe40Da"
|
|
108
|
+
|
|
109
|
+
polygon:
|
|
110
|
+
uniswap_v3: "0x1F98431c8aD98523631AE4a59f267346ea31F984"
|
|
111
|
+
quickswap: "0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32"
|
|
112
|
+
sushiswap: "0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
|
113
|
+
|
|
114
|
+
# Stablecoins for base token detection
|
|
115
|
+
stablecoins:
|
|
116
|
+
ethereum:
|
|
117
|
+
- "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" # USDC
|
|
118
|
+
- "0xdAC17F958D2ee523a2206206994597C13D831ec7" # USDT
|
|
119
|
+
- "0x6B175474E89094C44Da98b954E2deC563975aA61" # DAI
|
|
120
|
+
|
|
121
|
+
bsc:
|
|
122
|
+
- "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d" # USDC
|
|
123
|
+
- "0x55d398326f99059fF775485246999027B3197955" # USDT
|
|
124
|
+
- "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56" # BUSD
|
|
125
|
+
|
|
126
|
+
arbitrum:
|
|
127
|
+
- "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8" # USDC.e
|
|
128
|
+
- "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" # USDC
|
|
129
|
+
- "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" # USDT
|
|
130
|
+
|
|
131
|
+
base:
|
|
132
|
+
- "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" # USDC
|
|
133
|
+
- "0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA" # USDbC
|
|
134
|
+
|
|
135
|
+
polygon:
|
|
136
|
+
- "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" # USDC
|
|
137
|
+
- "0xc2132D05D31c914a87C6611C10748AEb04B58e8F" # USDT
|
|
138
|
+
- "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063" # DAI
|
|
139
|
+
|
|
140
|
+
# Explorer API configuration
|
|
141
|
+
explorer_apis:
|
|
142
|
+
ethereum: https://api.etherscan.io/api
|
|
143
|
+
bsc: https://api.bscscan.com/api
|
|
144
|
+
arbitrum: https://api.arbiscan.io/api
|
|
145
|
+
base: https://api.basescan.org/api
|
|
146
|
+
polygon: https://api.polygonscan.com/api
|
|
147
|
+
|
|
148
|
+
# Cache settings
|
|
149
|
+
cache:
|
|
150
|
+
enabled: true
|
|
151
|
+
token_info_ttl: 3600 # 1 hour
|
|
152
|
+
analysis_ttl: 1800 # 30 minutes
|
|
153
|
+
block_ttl: 60 # 1 minute
|
|
154
|
+
|
|
155
|
+
# Rate limiting
|
|
156
|
+
rate_limits:
|
|
157
|
+
rpc_requests_per_second: 10
|
|
158
|
+
explorer_requests_per_second: 5
|
|
159
|
+
backoff_multiplier: 2
|
|
160
|
+
max_retries: 3
|
|
161
|
+
|
|
162
|
+
# Output settings
|
|
163
|
+
output:
|
|
164
|
+
table_width: 90
|
|
165
|
+
address_length: 10
|
|
166
|
+
max_indicators: 10
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Error Handling Reference
|
|
2
|
+
|
|
3
|
+
## RPC Connection Errors
|
|
4
|
+
|
|
5
|
+
### Connection Timeout
|
|
6
|
+
```
|
|
7
|
+
Error: RPC connection timeout after 30s
|
|
8
|
+
```
|
|
9
|
+
**Cause:** RPC endpoint is overloaded or unreachable.
|
|
10
|
+
**Solution:**
|
|
11
|
+
1. Try a different RPC URL with `--rpc-url`
|
|
12
|
+
2. Use a backup RPC provider (Alchemy, Chainstack, Infura, or QuickNode)
|
|
13
|
+
3. Reduce request frequency
|
|
14
|
+
|
|
15
|
+
### RPC Rate Limited
|
|
16
|
+
```
|
|
17
|
+
Error: 429 Too Many Requests
|
|
18
|
+
```
|
|
19
|
+
**Cause:** Exceeded RPC provider rate limits.
|
|
20
|
+
**Solution:**
|
|
21
|
+
1. Add delay between requests
|
|
22
|
+
2. Upgrade to paid RPC tier
|
|
23
|
+
3. Use multiple RPC endpoints with round-robin
|
|
24
|
+
|
|
25
|
+
### Invalid Chain
|
|
26
|
+
```
|
|
27
|
+
Error: Unsupported chain: xyz
|
|
28
|
+
```
|
|
29
|
+
**Cause:** Chain not in supported list.
|
|
30
|
+
**Solution:**
|
|
31
|
+
1. Use `python launch_tracker.py chains` to see supported chains
|
|
32
|
+
2. Check spelling (lowercase required)
|
|
33
|
+
3. Add custom chain config if needed
|
|
34
|
+
|
|
35
|
+
## Event Parsing Errors
|
|
36
|
+
|
|
37
|
+
### No Pairs Found
|
|
38
|
+
```
|
|
39
|
+
No new pairs found in the specified timeframe.
|
|
40
|
+
```
|
|
41
|
+
**Cause:** No PairCreated events in time window.
|
|
42
|
+
**Solution:**
|
|
43
|
+
1. Extend the time window with `--hours`
|
|
44
|
+
2. Check if correct chain is selected
|
|
45
|
+
3. Verify DEX is active on that chain
|
|
46
|
+
|
|
47
|
+
### Log Parsing Failed
|
|
48
|
+
```
|
|
49
|
+
Error parsing log: list index out of range
|
|
50
|
+
```
|
|
51
|
+
**Cause:** Unexpected event format (V3 vs V2).
|
|
52
|
+
**Solution:**
|
|
53
|
+
1. Check DEX version compatibility
|
|
54
|
+
2. Verify factory address is correct
|
|
55
|
+
3. Enable `--verbose` for debugging
|
|
56
|
+
|
|
57
|
+
## Contract Analysis Errors
|
|
58
|
+
|
|
59
|
+
### Bytecode Not Found
|
|
60
|
+
```
|
|
61
|
+
Error: Contract has no bytecode
|
|
62
|
+
```
|
|
63
|
+
**Cause:** Address is not a contract (EOA) or wrong network.
|
|
64
|
+
**Solution:**
|
|
65
|
+
1. Verify address is a contract
|
|
66
|
+
2. Check correct chain is selected
|
|
67
|
+
3. Confirm address checksum
|
|
68
|
+
|
|
69
|
+
### ABI Decoding Failed
|
|
70
|
+
```
|
|
71
|
+
Error decoding string: Unknown
|
|
72
|
+
```
|
|
73
|
+
**Cause:** Non-standard ERC20 implementation.
|
|
74
|
+
**Solution:**
|
|
75
|
+
1. Use `--verbose` to see raw data
|
|
76
|
+
2. Token may use bytes32 for name/symbol
|
|
77
|
+
3. Some tokens have non-standard decimals
|
|
78
|
+
|
|
79
|
+
### Verification Check Failed
|
|
80
|
+
```
|
|
81
|
+
Verification check error: API key invalid
|
|
82
|
+
```
|
|
83
|
+
**Cause:** Etherscan API key issues.
|
|
84
|
+
**Solution:**
|
|
85
|
+
1. Set `ETHERSCAN_API_KEY` environment variable
|
|
86
|
+
2. Use `--etherscan-key` flag
|
|
87
|
+
3. Check API key is valid for that chain
|
|
88
|
+
|
|
89
|
+
## Token Analysis Errors
|
|
90
|
+
|
|
91
|
+
### Risk Analysis Incomplete
|
|
92
|
+
```
|
|
93
|
+
Warning: Some risk indicators could not be checked
|
|
94
|
+
```
|
|
95
|
+
**Cause:** Limited bytecode or API access.
|
|
96
|
+
**Solution:**
|
|
97
|
+
1. Check if contract is verified
|
|
98
|
+
2. Provide Etherscan API key
|
|
99
|
+
3. Some indicators require source code
|
|
100
|
+
|
|
101
|
+
### Proxy Detection Failed
|
|
102
|
+
```
|
|
103
|
+
Warning: Could not determine if contract is proxy
|
|
104
|
+
```
|
|
105
|
+
**Cause:** Storage slot access issue.
|
|
106
|
+
**Solution:**
|
|
107
|
+
1. Some RPCs don't support eth_getStorageAt
|
|
108
|
+
2. Use a full node RPC
|
|
109
|
+
3. Proxy detection is best-effort
|
|
110
|
+
|
|
111
|
+
## Environment Errors
|
|
112
|
+
|
|
113
|
+
### Missing Dependencies
|
|
114
|
+
```
|
|
115
|
+
ImportError: requests library required
|
|
116
|
+
```
|
|
117
|
+
**Cause:** Python requests not installed.
|
|
118
|
+
**Solution:**
|
|
119
|
+
```bash
|
|
120
|
+
pip install requests
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Environment Variable Missing
|
|
124
|
+
```
|
|
125
|
+
Error: No RPC URL configured
|
|
126
|
+
```
|
|
127
|
+
**Cause:** Chain RPC URL not found.
|
|
128
|
+
**Solution:**
|
|
129
|
+
1. Set `{CHAIN}_RPC_URL` environment variable
|
|
130
|
+
2. Use `--rpc-url` flag
|
|
131
|
+
3. Check config/settings.yaml
|
|
132
|
+
|
|
133
|
+
## Common Error Patterns
|
|
134
|
+
|
|
135
|
+
| Error | Likely Cause | Quick Fix |
|
|
136
|
+
|-------|--------------|-----------|
|
|
137
|
+
| Connection timeout | RPC overloaded | Use backup RPC |
|
|
138
|
+
| 429 Too Many Requests | Rate limited | Add delay |
|
|
139
|
+
| No pairs found | Wrong timeframe | Increase --hours |
|
|
140
|
+
| Bytecode not found | Wrong address/chain | Verify address |
|
|
141
|
+
| Unknown token | Non-standard ERC20 | Use --verbose |
|
|
142
|
+
| API key invalid | Wrong chain API | Match key to chain |
|
|
143
|
+
|
|
144
|
+
## Fallback Chain
|
|
145
|
+
|
|
146
|
+
The system uses this fallback chain for RPC failures:
|
|
147
|
+
|
|
148
|
+
1. **Primary RPC** - Configured URL
|
|
149
|
+
2. **Environment Variable** - `{CHAIN}_RPC_URL`
|
|
150
|
+
3. **Default Public RPC** - From settings.yaml
|
|
151
|
+
4. **Error** - If all fail
|
|
152
|
+
|
|
153
|
+
## Debug Mode
|
|
154
|
+
|
|
155
|
+
Enable verbose output for troubleshooting:
|
|
156
|
+
```bash
|
|
157
|
+
python launch_tracker.py --verbose recent --chain ethereum
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
This shows:
|
|
161
|
+
- RPC requests being made
|
|
162
|
+
- Raw response data
|
|
163
|
+
- Parsing steps
|
|
164
|
+
- Analysis progress
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
*[Tons of Skills](https://tonsofskills.com) by [Intent Solutions](https://intentsolutions.io) | [jeremylongshore.com](https://jeremylongshore.com)*
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# Usage Examples
|
|
2
|
+
|
|
3
|
+
## Recent Token Launches
|
|
4
|
+
|
|
5
|
+
### Basic Usage
|
|
6
|
+
```bash
|
|
7
|
+
# Show launches from last 24 hours on Ethereum
|
|
8
|
+
python launch_tracker.py recent --chain ethereum
|
|
9
|
+
|
|
10
|
+
# Output:
|
|
11
|
+
# NEW TOKEN LAUNCHES
|
|
12
|
+
# ==========================================================================================
|
|
13
|
+
# Time Token DEX Chain Risk Pair
|
|
14
|
+
# ------------------------------------------------------------------------------------------
|
|
15
|
+
# 2m ago PEPE2.0 Uniswap V2 ethereum [HIGH RISK: 75] 0x1234...5678
|
|
16
|
+
# 15m ago DOGE420 Uniswap V2 ethereum [MEDIUM: 45] 0xabcd...efgh
|
|
17
|
+
# 1h ago SAFE SushiSwap ethereum [OK: 15] 0x9876...5432
|
|
18
|
+
# ==========================================================================================
|
|
19
|
+
# Total: 47 new pairs
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### With Risk Analysis
|
|
23
|
+
```bash
|
|
24
|
+
# Include token and contract analysis
|
|
25
|
+
python launch_tracker.py recent --chain base --analyze --hours 12
|
|
26
|
+
|
|
27
|
+
# Output includes enriched token data with risk scores
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Filter by DEX
|
|
31
|
+
```bash
|
|
32
|
+
# Only show Uniswap V2 launches
|
|
33
|
+
python launch_tracker.py recent --chain ethereum --dex "Uniswap V2"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### JSON Output
|
|
37
|
+
```bash
|
|
38
|
+
# Get JSON for programmatic use
|
|
39
|
+
python launch_tracker.py -f json recent --chain bsc --hours 6 --limit 10
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Token Details
|
|
43
|
+
|
|
44
|
+
### Get Full Token Information
|
|
45
|
+
```bash
|
|
46
|
+
python launch_tracker.py detail \
|
|
47
|
+
--address 0x6982508145454ce325ddbe47a25d4ec3d2311933 \
|
|
48
|
+
--chain ethereum
|
|
49
|
+
|
|
50
|
+
# Output:
|
|
51
|
+
# TOKEN LAUNCH: PEPE
|
|
52
|
+
# ============================================================
|
|
53
|
+
# Name: Pepe
|
|
54
|
+
# Symbol: PEPE
|
|
55
|
+
# Address: 0x6982508145454ce325ddbe47a25d4ec3d2311933
|
|
56
|
+
# Pair: Unknown
|
|
57
|
+
#
|
|
58
|
+
# LAUNCH INFO
|
|
59
|
+
# ------------------------------------------------------------
|
|
60
|
+
# DEX: Unknown
|
|
61
|
+
# Chain: ETHEREUM
|
|
62
|
+
# Block: 0
|
|
63
|
+
# Time: 2024-01-20 15:30 (5m ago)
|
|
64
|
+
# Tx:
|
|
65
|
+
#
|
|
66
|
+
# TOKEN INFO
|
|
67
|
+
# ------------------------------------------------------------
|
|
68
|
+
# Decimals: 18
|
|
69
|
+
# Total Supply: 420.69T
|
|
70
|
+
# Owner: None
|
|
71
|
+
# Verified: Yes
|
|
72
|
+
#
|
|
73
|
+
# RISK ANALYSIS
|
|
74
|
+
# ------------------------------------------------------------
|
|
75
|
+
# Risk Score: 25/100 [LOW: 25]
|
|
76
|
+
# Is Proxy: No
|
|
77
|
+
# Ownership: Renounced
|
|
78
|
+
#
|
|
79
|
+
# Indicators:
|
|
80
|
+
# . Has burn: Contract has burn function
|
|
81
|
+
# Ownership Renounced: Ownership has been renounced
|
|
82
|
+
#
|
|
83
|
+
# LINKS
|
|
84
|
+
# ------------------------------------------------------------
|
|
85
|
+
# Explorer: https://etherscan.io/address/0x698250...
|
|
86
|
+
# DEXScreener: https://dexscreener.com/ethereum/Unknown
|
|
87
|
+
# ============================================================
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Risk Analysis
|
|
91
|
+
|
|
92
|
+
### Analyze Token Contract
|
|
93
|
+
```bash
|
|
94
|
+
python launch_tracker.py risk \
|
|
95
|
+
--address 0x1234567890abcdef1234567890abcdef12345678 \
|
|
96
|
+
--chain ethereum
|
|
97
|
+
|
|
98
|
+
# Output:
|
|
99
|
+
# RISK ANALYSIS
|
|
100
|
+
# ============================================================
|
|
101
|
+
# Address: 0x1234567890abcdef1234567890abcdef12345678
|
|
102
|
+
# Chain: ETHEREUM
|
|
103
|
+
#
|
|
104
|
+
# Risk Score: 75/100 [HIGH RISK: 75]
|
|
105
|
+
# Risk Level: HIGH RISK
|
|
106
|
+
#
|
|
107
|
+
# CONTRACT INFO
|
|
108
|
+
# ------------------------------------------------------------
|
|
109
|
+
# Bytecode: 8,456 bytes
|
|
110
|
+
# Is Proxy: Yes
|
|
111
|
+
# Ownership: Active
|
|
112
|
+
#
|
|
113
|
+
# RISK INDICATORS
|
|
114
|
+
# ------------------------------------------------------------
|
|
115
|
+
# !! [HIGH ] Has mint
|
|
116
|
+
# Contract has mint function
|
|
117
|
+
# ! [MEDIUM] Proxy Contract
|
|
118
|
+
# Contract is a proxy - implementation can be changed
|
|
119
|
+
# ! [MEDIUM] Not Verified
|
|
120
|
+
# Contract source code not verified
|
|
121
|
+
# . [LOW ] Has Owner
|
|
122
|
+
# Contract has active owner: 0x9876543210ab...
|
|
123
|
+
#
|
|
124
|
+
# ============================================================
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### With Etherscan Verification
|
|
128
|
+
```bash
|
|
129
|
+
# Include contract verification check
|
|
130
|
+
python launch_tracker.py risk \
|
|
131
|
+
--address 0x... \
|
|
132
|
+
--chain ethereum \
|
|
133
|
+
--etherscan-key YOUR_API_KEY
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Launch Summary
|
|
137
|
+
|
|
138
|
+
### Cross-Chain Summary
|
|
139
|
+
```bash
|
|
140
|
+
python launch_tracker.py summary --hours 24
|
|
141
|
+
|
|
142
|
+
# Output:
|
|
143
|
+
# LAUNCHES BY CHAIN
|
|
144
|
+
# ========================================
|
|
145
|
+
# BSC 156
|
|
146
|
+
# ETHEREUM 89
|
|
147
|
+
# BASE 67
|
|
148
|
+
# ARBITRUM 45
|
|
149
|
+
# POLYGON 34
|
|
150
|
+
# ----------------------------------------
|
|
151
|
+
# TOTAL 391
|
|
152
|
+
# ========================================
|
|
153
|
+
#
|
|
154
|
+
# LAUNCHES BY DEX
|
|
155
|
+
# ========================================
|
|
156
|
+
# bsc:PancakeSwap V2 134
|
|
157
|
+
# ethereum:Uniswap V2 72
|
|
158
|
+
# base:Aerodrome 52
|
|
159
|
+
# arbitrum:Camelot 38
|
|
160
|
+
# bsc:PancakeSwap V3 22
|
|
161
|
+
# ========================================
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Specific Chains Only
|
|
165
|
+
```bash
|
|
166
|
+
# Only Ethereum and Base
|
|
167
|
+
python launch_tracker.py summary --chains ethereum,base --hours 12
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## List DEXes and Chains
|
|
171
|
+
|
|
172
|
+
### Show Supported Chains
|
|
173
|
+
```bash
|
|
174
|
+
python launch_tracker.py chains
|
|
175
|
+
|
|
176
|
+
# Output:
|
|
177
|
+
# SUPPORTED CHAINS
|
|
178
|
+
# ======================================================================
|
|
179
|
+
# Chain Name ID Symbol Block
|
|
180
|
+
# ----------------------------------------------------------------------
|
|
181
|
+
# ethereum Ethereum 1 ETH 12.0s
|
|
182
|
+
# bsc BNB Chain 56 BNB 3.0s
|
|
183
|
+
# arbitrum Arbitrum One 42161 ETH 0.25s
|
|
184
|
+
# base Base 8453 ETH 2.0s
|
|
185
|
+
# polygon Polygon 137 MATIC 2.0s
|
|
186
|
+
# ======================================================================
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Show DEXes for Chain
|
|
190
|
+
```bash
|
|
191
|
+
python launch_tracker.py dexes --chain bsc
|
|
192
|
+
|
|
193
|
+
# Output:
|
|
194
|
+
# SUPPORTED DEXES ON BSC
|
|
195
|
+
# ============================================================
|
|
196
|
+
# PancakeSwap V2 (v2)
|
|
197
|
+
# Factory: 0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73
|
|
198
|
+
# PancakeSwap V3 (v3)
|
|
199
|
+
# Factory: 0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865
|
|
200
|
+
# ============================================================
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### All DEXes (JSON)
|
|
204
|
+
```bash
|
|
205
|
+
python launch_tracker.py -f json dexes
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Custom RPC Usage
|
|
209
|
+
|
|
210
|
+
### Use Custom RPC Endpoint
|
|
211
|
+
```bash
|
|
212
|
+
python launch_tracker.py recent \
|
|
213
|
+
--chain ethereum \
|
|
214
|
+
--rpc-url https://mainnet.infura.io/v3/YOUR_PROJECT_ID
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Via Environment Variable
|
|
218
|
+
```bash
|
|
219
|
+
export ETHEREUM_RPC_URL=https://mainnet.infura.io/v3/YOUR_PROJECT_ID
|
|
220
|
+
python launch_tracker.py recent --chain ethereum
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Verbose Output
|
|
224
|
+
|
|
225
|
+
### Debug Mode
|
|
226
|
+
```bash
|
|
227
|
+
python launch_tracker.py --verbose recent --chain base --hours 1
|
|
228
|
+
|
|
229
|
+
# Shows:
|
|
230
|
+
# RPC: eth_blockNumber
|
|
231
|
+
# RPC: eth_getLogs
|
|
232
|
+
# RPC: eth_getBlockByNumber
|
|
233
|
+
# [1/12] MEME
|
|
234
|
+
# [2/12] WAGMI
|
|
235
|
+
# ...
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## Common Workflows
|
|
239
|
+
|
|
240
|
+
### Find High-Risk New Tokens
|
|
241
|
+
```bash
|
|
242
|
+
# Get recent launches with analysis, output as JSON
|
|
243
|
+
python launch_tracker.py -f json recent \
|
|
244
|
+
--chain ethereum \
|
|
245
|
+
--hours 6 \
|
|
246
|
+
--analyze \
|
|
247
|
+
--limit 100 > launches.json
|
|
248
|
+
|
|
249
|
+
# Filter for high risk (in Python/jq)
|
|
250
|
+
jq '.[] | select(.analysis.risk_score >= 70)' launches.json
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Monitor Multiple Chains
|
|
254
|
+
```bash
|
|
255
|
+
#!/bin/bash
|
|
256
|
+
for chain in ethereum bsc base arbitrum; do
|
|
257
|
+
echo "=== $chain ==="
|
|
258
|
+
python launch_tracker.py recent --chain $chain --hours 1 --limit 5
|
|
259
|
+
done
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Export to CSV (via jq)
|
|
263
|
+
```bash
|
|
264
|
+
python launch_tracker.py -f json recent --chain ethereum --hours 24 | \
|
|
265
|
+
jq -r '.[] | [.pair.timestamp, .pair.dex, .token_info.symbol // "???", .analysis.risk_score // 0] | @csv'
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## Integration Examples
|
|
269
|
+
|
|
270
|
+
### Python Import
|
|
271
|
+
```python
|
|
272
|
+
from event_monitor import EventMonitor
|
|
273
|
+
from token_analyzer import TokenAnalyzer
|
|
274
|
+
|
|
275
|
+
# Monitor new pairs
|
|
276
|
+
monitor = EventMonitor(chain="ethereum")
|
|
277
|
+
pairs = monitor.get_recent_pairs(hours=1)
|
|
278
|
+
|
|
279
|
+
for pair in pairs:
|
|
280
|
+
new_token = monitor.identify_new_token(pair)
|
|
281
|
+
print(f"New token: {new_token} on {pair.dex}")
|
|
282
|
+
|
|
283
|
+
# Analyze risk
|
|
284
|
+
analyzer = TokenAnalyzer(chain="ethereum")
|
|
285
|
+
for pair in pairs[:5]:
|
|
286
|
+
new_token = monitor.identify_new_token(pair)
|
|
287
|
+
analysis = analyzer.analyze_contract(new_token)
|
|
288
|
+
print(f" Risk: {analysis.risk_score}/100")
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
*[Tons of Skills](https://tonsofskills.com) by [Intent Solutions](https://intentsolutions.io) | [jeremylongshore.com](https://jeremylongshore.com)*
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Implementation Guide
|
|
2
|
+
|
|
3
|
+
### Step 1: Configure Data Sources
|
|
4
|
+
Set up connections to crypto data providers:
|
|
5
|
+
1. Use Read tool to load API credentials from ${CLAUDE_SKILL_DIR}/config/crypto-apis.env
|
|
6
|
+
2. Configure blockchain RPC endpoints for target networks
|
|
7
|
+
3. Set up exchange API connections if required
|
|
8
|
+
4. Verify rate limits and subscription tiers
|
|
9
|
+
5. Test connectivity and authentication
|
|
10
|
+
|
|
11
|
+
### Step 2: Query Crypto Data
|
|
12
|
+
Retrieve relevant blockchain and market data:
|
|
13
|
+
1. Use Bash(crypto:launch-*) to execute crypto data queries
|
|
14
|
+
2. Fetch real-time prices, volumes, and market cap data
|
|
15
|
+
3. Query blockchain for on-chain metrics and transactions
|
|
16
|
+
4. Retrieve exchange order book and trade history
|
|
17
|
+
5. Aggregate data from multiple sources for accuracy
|
|
18
|
+
|
|
19
|
+
### Step 3: Analyze and Process
|
|
20
|
+
Process crypto data to generate insights:
|
|
21
|
+
- Calculate key metrics (returns, volatility, correlation)
|
|
22
|
+
- Identify patterns and anomalies in data
|
|
23
|
+
- Apply technical indicators or on-chain signals
|
|
24
|
+
- Compare across timeframes and assets
|
|
25
|
+
- Generate actionable insights and alerts
|
|
26
|
+
|
|
27
|
+
### Step 4: Generate Reports
|
|
28
|
+
Document findings in ${CLAUDE_SKILL_DIR}/crypto-reports/:
|
|
29
|
+
- Market summary with key price movements
|
|
30
|
+
- Detailed analysis with charts and metrics
|
|
31
|
+
- Trading signals or opportunity recommendations
|
|
32
|
+
- Risk assessment and position sizing guidance
|
|
33
|
+
- Historical context and trend analysis
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
*[Tons of Skills](https://tonsofskills.com) by [Intent Solutions](https://intentsolutions.io) | [jeremylongshore.com](https://jeremylongshore.com)*
|