# 《BitHunter 比特猎手》全栈项目计划书 v2 ### (Full Architecture & Multi-Chain Plan — 修订版) > 本版在原架构基础上,补充了成本控制、安全加固、缓存策略与差异化定位,修订处均以 **【修订】** 标注。 --- ## 一、项目定位与三大商业闭环 (Core Flywheel & Revenue) - **产品定位**:多链轻量级"链上数据情报 + AI 风险诊断"平台。 - **终极原则**:数据清洗一次,三端协同变现(一鱼三吃)。 - **【修订】差异化定位**:赛道内已有 GMGN、Dexscreener、RugCheck、Debank 等成熟竞品,仅靠"多链架构"不足以形成壁垒。建议明确以下之一作为切入点: - **垂直深耕**:先把 Solana 一条链的巨鲸追踪 + AI 诊断做到比 GMGN 更细(例如加入"胜率归因分析"而非只给分数); - **价格错位**:TG VIP 定价低于 GMGN/RugCheck 同类订阅,靠低价+多链覆盖抢新手用户; - **场景错位**:主攻中文用户社群(小群/小鸡圈子),做本地化程度更高的中文播报与话术,而非直接对标英文产品。 - 该定位应在第一阶段就写入产品文档,避免开发到中期才发现"和谁都像"。 ``` ┌───────────────────────────────┐ │ 多链 Chain Adapter 数据层 │ │ (Solana / EVM 抽象接口清洗) │ └───────────────┬───────────────┘ │ ┌─────────────────────────────────────┼─────────────────────────────────────┐ ▼ ▼ ▼ ┌─────────────────────────┐ ┌─────────────────────────┐ ┌─────────────────────────┐ │ 1. 流量阵地 (Web 平台) │ │ 2. 交付阵地 (TG Bot) │ │ 3. API 变现 (RapidAPI) │ │ • 公开延迟/部分脱敏数据 │ │ • 0.1s 秒级新池/巨鲸推送 │ │ • 干净 JSON 接口授权 │ │ • 谷歌 SEO 捕获搜索流量 │ │ • 无限制 AI 钱包诊断报告│ │ • 卖给量化新手/开发者 │ │ • 诱导转化至 TG 社群 │ │ • 收取 USDT/SOL VIP 订阅│ │ • 每月固定 API 订阅费 │ └─────────────────────────┘ └─────────────────────────┘ └─────────────────────────┘ ``` --- ## 二、系统多链架构设计 (Multi-Chain Adapter Pattern) 采用适配器模式(Adapter Pattern)隔离不同链的底层逻辑差异(如 Solana 的账户模型与 EVM 的地址/合约模型): ``` ┌─────────────────────────────────────────┐ │ 业务逻辑层 (Web / TG Bot / API 暴露) │ └────────────────────┬────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ Chain Adapter 统一抽象接口 │ │ getTokenInfo() / getWalletTx() │ └────────────────────┬────────────────────┘ │ ┌──────────────────────────┼──────────────────────────┐ ▼ ▼ ▼ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ Solana Adapter │ │ Ethereum Adapter │ │ Base Adapter │ │ (Helius/Raydium) │ │ (Alchemy/Uniswap)│ │(QuickNode/Aerodrome)│ └──────────────────┘ └──────────────────┘ └──────────────────┘ ``` - **扩展优势**:主业务逻辑完全解耦。未来拓展 BSC、Arbitrum 或其他 EVM 链,只需新建对应的 Adapter 类,无需改动任何业务和数据库结构。 - **【修订】RPC 成本压测**:0.1s 级秒级推送意味着高频轮询或长连接订阅,Helius / Alchemy / QuickNode 的免费额度大概率无法支撑多链同时运行。第一阶段必须新增一项任务:**对每条计划接入的链,实测在目标推送频率下的月度 RPC 账单**,并据此决定: - 是否所有链都做到 0.1s 级,还是只有主推的 1-2 条链做"秒级",其余链降级为"分钟级"; - 是否需要自建轻量索引层(如订阅链上事件 + 本地队列)来减少直接调用第三方 RPC 的次数。 --- ## 三、数据库全量扩展设计 (Extensible DB Schema) 彻底规避单链硬编码,所有资产、合约与日志强制包含 `chain` 联合索引。 ### 1. tokens_cache(代币风控缓存表 - 跨链) ```sql CREATE TABLE `tokens_cache` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `chain` VARCHAR(20) NOT NULL COMMENT 'solana, ethereum, base, bsc, arbitrum', `contract_address` VARCHAR(128) NOT NULL COMMENT '合约/Token地址', `symbol` VARCHAR(32), `decimals` INT DEFAULT 18, `price_usd` DECIMAL(24, 12), `liquidity_usd` DECIMAL(15, 2), `security_score` INT DEFAULT 0 COMMENT '内部自定义安全得分 0-100,算法见 docs/security_score.md', `is_renounced` TINYINT(1) DEFAULT 0 COMMENT '是否放弃权限/丢弃 Mint', `is_mintable` TINYINT(1) DEFAULT 0 COMMENT '是否可增发', `raw_json` JSON COMMENT '保留原链返回的特有数据 JSON(含 GoPlus/RugCheck 原始细分字段)', `price_updated_at` DATETIME COMMENT '【修订】价格/流动性刷新时间,与安全信息刷新时间分离', `security_updated_at` DATETIME COMMENT '【修订】安全评分刷新时间(变动频率远低于价格)', `updated_at` DATETIME, UNIQUE KEY `uniq_chain_contract` (`chain`, `contract_address`), INDEX `idx_chain_score` (`chain`, `security_score`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` **【修订】关于 `security_score`**:GoPlus 与 RugCheck 对同一安全维度的打分权重、阈值并不统一,直接把第三方分数映射成统一的 0-100 会导致跨链/跨源对比失真。做法: 1. `raw_json` 中完整保留两个数据源的原始细分字段(不做任何加权前先落库); 2. 单独维护一份 `docs/security_score.md`,写清楚 BitHunter 自己的评分算法(例如:是否放弃权限 30 分 + 流动性锁定情况 30 分 + 持仓集中度 20 分 + 第三方风险标记 20 分),让 `security_score` 成为"BitHunter 自研分数"而不是第三方分数的搬运; 3. 前端展示时注明"该分数基于自研模型计算,非直接取自 GoPlus/RugCheck",避免误导用户或产生数据来源纠纷。 **【修订】关于缓存刷新策略**:`price_usd` / `liquidity_usd` 属于高频变动字段,而 `security_score` 类字段变动频率低得多,混用一个 `updated_at` 会导致刷新策略无法差异化。建议: - 拆分为 `price_updated_at`(价格/流动性)与 `security_updated_at`(安全评分)两个时间戳(已加入上表); - 用定时任务 + 队列做主动刷新:热门 Token(有用户订阅/近期高交易量)优先刷新,长尾 Token 按需(on-demand,用户查询时触发)刷新; - Web 端"3 分钟延迟"承诺,直接对应 `price_updated_at` 的刷新周期,避免承诺和实现脱节。 ### 2. users(TG 用户与账户表) ```sql CREATE TABLE `users` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `tg_user_id` VARCHAR(32) UNIQUE NOT NULL, `username` VARCHAR(64), `is_vip` TINYINT(1) DEFAULT 0, `vip_expire_at` DATETIME NULL, `daily_usage_count` INT DEFAULT 0, `last_query_date` DATE, `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` ### 3. user_watchlists(多链监控自选表) ```sql CREATE TABLE `user_watchlists` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `user_id` BIGINT NOT NULL COMMENT '关联 users.id', `chain` VARCHAR(20) NOT NULL COMMENT 'solana, ethereum 等', `target_type` ENUM('token', 'wallet') NOT NULL COMMENT '监控代币还是钱包', `target_address` VARCHAR(128) NOT NULL, `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX `idx_user_chain` (`user_id`, `chain`), UNIQUE KEY `uniq_user_target` (`user_id`, `chain`, `target_type`, `target_address`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` ### 4. push_logs(推送与交互日志流水表) ```sql CREATE TABLE `push_logs` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `user_id` BIGINT NOT NULL COMMENT '关联 users.id,0代表群发/广播', `chain` VARCHAR(20) DEFAULT 'solana', `type` VARCHAR(32) NOT NULL COMMENT 'check, wallet_ai, new_pool_alert, whale_alert', `content` TEXT NOT NULL COMMENT '实际发送的文本/JSON数据', `sent_time` DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX `idx_user_time` (`user_id`, `sent_time`), INDEX `idx_type_time` (`type`, `sent_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` **【修订】表膨胀问题**:高频推送场景(巨鲸预警、新池提醒)几个月内该表可能积累千万级行数,直接拖慢 TG Bot 的查询响应。建议: - 按月做 `RANGE` 分区(按 `sent_time`),便于归档/删除历史分区而不影响在线查询; - 或者设定保留策略(如只在线保留最近 30-90 天数据,更早的数据定时导出到对象存储/冷表后从主表清除); - 该项应在第二阶段"接入 push_logs 表"任务中一并规划,而不是等表变大了再补救。 ### 5. api_keys & api_logs(B 端开发者计费表) ```sql CREATE TABLE `api_keys` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `user_id` BIGINT NOT NULL, `api_key_hash` VARCHAR(128) UNIQUE NOT NULL COMMENT '【修订】存储 key 的哈希值(如 SHA-256),不存明文', `api_key_prefix` VARCHAR(12) NOT NULL COMMENT '【修订】key 前几位明文,供用户在后台识别自己的 key', `plan_type` VARCHAR(20) DEFAULT 'free' COMMENT 'free, pro, enterprise', `monthly_quota` INT DEFAULT 1000 COMMENT '每月额度', `used_count` INT DEFAULT 0, `status` TINYINT(1) DEFAULT 1, `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX `idx_key_hash` (`api_key_hash`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `api_logs` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `key_id` BIGINT NOT NULL, `endpoint` VARCHAR(64) NOT NULL COMMENT '调用路由如 /v1/token/check', `ip_address` VARCHAR(45), `request_time` DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX `idx_key_time` (`key_id`, `request_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` **【修订】明文 key 泄露风险**:原设计 `api_key` 明文存储,一旦数据库被拖库,所有 B 端开发者的 key 直接泄露且可被冒用。修改方案: - 生成 key 时(如 `bh_live_xxxxxxxxxxxx`)只在生成的那一刻把完整明文返回给用户展示一次,此后不再存储明文; - 数据库只存 `api_key_hash`(SHA-256 或更强哈希)用于请求鉴权时比对; - 额外存 `api_key_prefix`(如前 8-12 位)明文,方便用户在后台列表里识别是哪一把 key,而不暴露完整密钥; - 鉴权流程:请求携带完整 key → 服务端计算哈希 → 与 `api_key_hash` 比对,逻辑与原来一致,只是多了一次哈希计算,性能影响可忽略。 --- ## 四、核心功能模块划分 (Functional Modules) ### 🐕 新池猎犬与风控系统 (`/check`) 支持多链新池检测,调用 GoPlus / RugCheck 进行权限检查。Web 端延迟 3 分钟更新以作为引流诱饵;TG VIP 频道提供 0.1s 秒级推送(**【修订】实际推送频率以第二章"RPC 成本压测"结果为准,避免无法兑现的营销承诺**)。 ### 🕵️ 钱包侦探与 AI 诊断报告 (`/wallet`) 通过多链 RPC 抓取近 10-20 笔交易,喂给 OpenAI,生成个性化交易风格及胜率评价。 **【修订】"无限制"调用的成本控制**:VIP 若是固定月费但 AI 诊断"无限制",重度用户会迅速吃掉毛利(每次调用消耗的 token 成本是固定的,边际收入却是 0)。建议改为: - 名义上仍宣传"无限制",但设置**软性限流**:例如每日前 N 次即时生成,超过后进入排队/延迟队列(如 10-30 分钟后返回),既不违背"无限制"的营销话术,又能控制并发和成本峰值; - 对相同钱包地址的重复查询,直接返回缓存结果(如 1 小时内的诊断报告复用),减少重复调用 OpenAI 的开销; - 监控每个 VIP 用户的月度 AI 调用成本,超出预设阈值(如月费的 50%)时触发人工复核,防止个别用户异常刷量。 ### 🐳 Smart Money 巨鲸追踪 (`/whale`) 监控高胜率地址买卖行为,Web 端脱敏展示,TG VIP 可解锁完整地址并设定自动私信预警。 ### 📊 开发者 API 数据服务平台 将清洗后的标准 JSON 数据整理为统一 Endpoint(例如 `/v1/{chain}/token/{address}`),挂载到 RapidAPI 和官网售卖。 --- ## 五、【修订】链上收款与对账系统(原计划书中缺失的独立模块) USDT/SOL 直接收款做 VIP 订阅,本质上是自建"链上收款 + 账户系统",比接入第三方支付网关多出以下运营负担,原计划书仅在路线图里一句带过,工作量被严重低估: - **监听逻辑**:需要为每个待支付订单生成唯一收款地址(或 memo/tag 区分),并轮询/订阅链上转账事件; - **确认与对账**:需要处理链上重组(尤其是 EVM 侧的区块重组)、确认数不足、金额误差(用户多付/少付)等边界情况; - **汇率波动**:SOL 价格波动大,若订阅定价以美元计价、收款以 SOL 计价,需要明确"支付时刻汇率快照"规则,避免用户因链上确认延迟导致的汇率纠纷; - **退款/异常处理**:用户误转账、重复支付等情况需要人工介入流程,建议提前设计客服工单机制。 建议将此内容拆分为独立的开发任务,纳入第二阶段,并单独评估工时(预计不亚于 `/wallet` 模块本身的开发量)。 --- ## 六、实施路线与里程碑 (Roadmap) ### 🗓️ 第一阶段:多链 Adapter 抽象层与数据库建立 - [ ] **【修订】明确产品差异化定位**,写入产品文档(见第一章) - [ ] 部署 MySQL 表结构(引入 `chain` 和 `contract_address` 联合主键;`api_keys` 采用哈希存储) - [ ] 编写 `ChainAdapterInterface` 抽象类,率先实现 `SolanaAdapter` 调通 DexScreener 与 GoPlus - [ ] **【修订】各目标链的 RPC 成本压测**,确定各链实际可承受的推送频率 - [ ] **【修订】撰写 `security_score` 自研评分算法文档**,明确各维度权重 - [ ] 接入 OpenAI API,调试好 `/wallet` 诊断报告 Prompt,**【修订】同步设计缓存与限流策略** ### 🗓️ 第二阶段:TG Bot 交互与日志记录 - [ ] 配置 BotFather,在 PHP 中实现指令解析器 (`/check`, `/wallet`, `/vip`) - [ ] 接入 `push_logs` 表,**【修订】同步设计分区/归档策略**,记录每一次用户查询与推送数据 - [ ] **【修订】独立开发链上收款监听 + 对账系统**(见第五章),而非简单的"USDT/SOL 收款监听逻辑"一句带过 ### 🗓️ 第三阶段:Web 端流量阵地与 API 暴露 - [ ] 使用 Tailwind CSS 快速搭建暗黑风格 Dashboard 前端,提供免费延迟数据展示(**延迟周期与 `price_updated_at` 刷新策略保持一致**) - [ ] 部署静态 SEO 页面,增加引流到 TG 的 Call-To-Action 按钮 - [ ] 开放标准的 Restful API 路由,**【修订】API Key 鉴权采用哈希比对**,上架 RapidAPI 寻求二次变现 --- ## 七、完整数据库 ER 图 six 张表的关系如下(详见附件中已渲染的 ER 图): - `USERS ||--o{ USER_WATCHLISTS`:一个用户可创建多条监控(1 对多) - `USERS ||--o{ PUSH_LOGS`:一个用户可收到多条推送记录(1 对多,`user_id=0` 代表群发) - `USERS ||--o{ API_KEYS`:一个用户可拥有多把 API Key(1 对多) - `API_KEYS ||--o{ API_LOGS`:一把 Key 对应多条调用日志(1 对多) - `USER_WATCHLISTS }o--|| TOKENS_CACHE`:监控项通过 `(chain, target_address)` **逻辑关联**到代币缓存表,不是数据库外键约束(因为 `target_type` 也可能是 `wallet`,钱包地址不在 `tokens_cache` 里) **关于外键的实现建议**:`user_id`、`key_id` 建议在应用层强校验 + 数据库加外键约束(`ON DELETE CASCADE` 或 `ON DELETE RESTRICT` 视业务而定,例如用户注销账号时是否级联删除其 `push_logs` 历史)。`chain + contract_address` 与 `tokens_cache` 之间不建外键,因为跨表写入顺序和缓存过期语义会让强外键约束变得笨重,用应用层校验 + 定时任务保证最终一致性即可。 --- ## 八、PHP 项目目录结构 采用「按功能模块划分 + Adapter 隔离链差异」的目录组织方式,方便未来独立拆分 Web / Bot / API 为微服务: ``` bithunter/ ├── app/ │ ├── Adapters/ # 链适配器层(核心解耦点) │ │ ├── ChainAdapterInterface.php # 定义 getTokenInfo() / getWalletTx() 等抽象方法 │ │ ├── SolanaAdapter.php # 封装 Helius + Raydium/DexScreener │ │ ├── EthereumAdapter.php # 封装 Alchemy + Uniswap │ │ ├── BaseChainAdapter.php # 封装 QuickNode + Aerodrome │ │ └── AdapterFactory.php # 根据 chain 字符串返回对应 Adapter 实例 │ │ │ ├── Services/ # 业务逻辑层,不直接依赖具体链 │ │ ├── TokenCheckService.php # /check 新池检测 + GoPlus/RugCheck 风控 │ │ ├── WalletDiagnosisService.php # /wallet 抓取交易 + 调用 OpenAI 生成报告 │ │ ├── WhaleTrackingService.php # /whale 巨鲸地址监控与预警 │ │ ├── SecurityScoreService.php # 【修订】自研安全评分算法,聚合多源 raw_json │ │ ├── CacheRefreshService.php # 【修订】tokens_cache 价格/安全分离刷新调度 │ │ └── PaymentService.php # 【修订】USDT/SOL 链上收款监听与对账 │ │ │ ├── Models/ # 对应数据库表的 ORM 模型(如用 Eloquent 风格) │ │ ├── TokenCache.php │ │ ├── User.php │ │ ├── UserWatchlist.php │ │ ├── PushLog.php │ │ ├── ApiKey.php # 【修订】含 hashKey() / verifyKey() 静态方法 │ │ └── ApiLog.php │ │ │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── Web/ │ │ │ │ ├── DashboardController.php # Web 端延迟数据展示 │ │ │ │ └── SeoPageController.php # 静态 SEO 落地页 │ │ │ └── Api/ │ │ │ ├── TokenController.php # GET /v1/{chain}/token/{address} │ │ │ ├── WalletController.php # GET /v1/{chain}/wallet/{address} │ │ │ └── WhaleController.php │ │ ├── Middleware/ │ │ │ ├── ApiKeyAuth.php # 【修订】哈希比对鉴权,而非明文比对 │ │ │ ├── RateLimiter.php # 【修订】AI 诊断软性限流 + API 配额控制 │ │ │ └── VipAccessGuard.php # TG VIP 权限校验 │ │ └── Requests/ # 表单/参数校验 │ │ │ ├── Bot/ # Telegram Bot 相关 │ │ ├── BotKernel.php # 指令路由入口 │ │ ├── Commands/ │ │ │ ├── CheckCommand.php # /check │ │ │ ├── WalletCommand.php # /wallet │ │ │ ├── WhaleCommand.php # /whale │ │ │ └── VipCommand.php # /vip │ │ └── Pushers/ │ │ ├── NewPoolPusher.php # 新池秒级推送 │ │ └── WhaleAlertPusher.php # 巨鲸预警推送 │ │ │ ├── Jobs/ # 队列任务(异步处理,避免阻塞请求) │ │ ├── RefreshTokenPriceJob.php # 【修订】高频价格刷新 │ │ ├── RefreshSecurityScoreJob.php # 【修订】低频安全评分刷新 │ │ ├── GenerateWalletReportJob.php # OpenAI 调用异步化,配合限流排队 │ │ └── ArchivePushLogsJob.php # 【修订】push_logs 分区归档任务 │ │ │ └── External/ # 第三方 API 客户端封装 │ ├── GoPlusClient.php │ ├── RugCheckClient.php │ ├── OpenAIClient.php │ ├── HeliusClient.php │ ├── AlchemyClient.php │ └── QuickNodeClient.php │ ├── config/ │ ├── chains.php # 各链的 RPC endpoint、超时、限流配置 │ ├── security_score.php # 【修订】自研评分算法的权重配置 │ └── vip_plans.php # VIP 定价与限流阈值配置 │ ├── database/ │ ├── migrations/ # 对应第三章的建表 SQL,按表拆分文件 │ └── seeders/ │ ├── docs/ │ ├── security_score.md # 【修订】评分算法说明文档 │ └── payment_reconciliation.md # 【修订】链上收款对账流程文档 │ ├── public/ │ ├── index.php # Web 入口 │ └── assets/ # Tailwind 编译后的静态资源 │ ├── resources/ │ └── views/ # Dashboard 前端模板 │ ├── routes/ │ ├── web.php │ ├── api.php # RapidAPI 对外路由 │ └── bot.php # Telegram Webhook 路由 │ ├── tests/ │ ├── Unit/ │ │ ├── Adapters/ # 每个 Adapter 独立单测,mock RPC 响应 │ │ └── Services/SecurityScoreServiceTest.php │ └── Feature/ │ └── ApiKeyAuthTest.php # 【修订】重点测试哈希鉴权流程 │ ├── .env.example ├── composer.json └── README.md ``` **目录设计的几个关键考量**: 1. **`Adapters/` 与 `Services/` 严格分层**:`Services/` 里的代码永远不直接 new 一个 `SolanaAdapter`,而是通过 `AdapterFactory::make($chain)` 获取实例。这样新增一条链时,`Services/` 目录下的文件一行都不用改。 2. **`Jobs/` 目录承接第一版计划书里被低估的异步任务**:价格刷新、AI 报告生成、日志归档全部走队列(建议用 Laravel Queue + Redis,或轻量的 `php artisan schedule` + 数据库队列表),避免用户请求被高延迟的第三方调用(尤其是 OpenAI)直接阻塞。 3. **`Middleware/ApiKeyAuth.php` 对应第三章的哈希鉴权修订**:中间件里做的是"取请求 key → 计算哈希 → 查 `api_keys.api_key_hash`",不再有任何地方需要读取明文 key。 4. **`docs/` 目录不是可有可无的**:`security_score.md` 和 `payment_reconciliation.md` 这两份文档直接对应第三章和第五章提到的"必须写清楚算法/流程"的修订项,放代码库里而不是外部文档,方便和代码一起做版本管理。 --- ## 附:本次修订汇总 | 分类 | 问题 | 修订方案 | |---|---|---| | 成本 | RPC 高频调用成本未评估 | 第一阶段新增"RPC 成本压测"任务 | | 数据一致性 | 跨源 `security_score` 直接映射失真 | 自研评分算法 + 保留原始 raw_json | | 缓存 | 价格与安全评分刷新频率混用 | 拆分为两个独立时间戳字段 | | 安全 | `api_key` 明文存储 | 改为哈希存储 + prefix 展示 | | 性能 | `push_logs` 表长期膨胀 | 分区/归档策略 | | 差异化 | 赛道拥挤,定位不清 | 第一阶段明确切入点 | | 成本 | AI 诊断"无限制"成本失控 | 软性限流 + 缓存复用 | | 工作量低估 | 链上收款系统被一句带过 | 独立成章,单独评估工时 | ======================== 缺点与坑点(必须提前避开) 1. 节点 API 调用频率限制(Rate Limit)与成本 虽然链上数据公开,但如果你想做到“秒级/实时”监控,调用第三方 API 节点的频率会很高。免费节点的请求次数(RPC Limit)很快会用完。 破解法:刚开始做小范围测试时,只监控几十个“精选地址”,用免费节点额度;等有了付费用户后,拿一部分利润去买专业节点的付费套餐(如 Alchemy / QuickNode),成本完全能覆盖。 2. 数据的“噪音”太大,算法需要提炼 链上每天有几百万笔转账,绝大多数是垃圾交易、机器人洗盘、或者无意义的转移。如果你的机器人动不动就群发推送,用户会被烦死然后退订。 破解法:核心竞争力在于筛选算法(过滤小额交易、只监控特定交易所标签地址、只追踪连续买入的“聪明钱”)。 3. 初期需要去社交圈子“找第一批种子用户” 东西做好了,你得去 Twitter(X 平台)、Telegram 的各种语种交流群、暗号群里发你的监控截图,证明你的机器人“成功预测”或“提前发现了某波行情”。