🍠 地瓜机器人简介

地瓜机器人(DiGuaBot)是 BNB 链上的自主 AI 资金管理协议,诞生于链上 AI 推理与 DeFi 做市的交汇点。它赋予代币项目一个自主进化的 AI 代理,主动管理税收收入——执行回购、销毁、添加流动性和持有决策,基于实时市场情报自主运作。

核心理念:不再信任人类团队来管理你的代币资金库,地瓜机器人让一个由 Claude Opus 驱动的 AI 代理自主做出每个决策,完整推理证明存储在 IPFS 上供任何人验证。

协议由四层组成:智能合约(金库、Provider、Factory)、AI 预言机(LLM 推理 + IPFS 证明)、Keeper 网络(自动触发系统)和执行器服务(链下 LLM 执行和链上交付)。

丰富的生态支持

地瓜机器人与 BNB 链生态深度集成,包括 PancakeSwap、DexScreener,支持任何带税功能的 BEP-20 代币。协议可与现有钱包和交易平台配合使用——OKX 钱包、币安钱包、GMGN、Ave.ai 等。

税收代币支持

地瓜机器人专为税收代币打造。创建者可以为税率 1%、3%、5% 或 10% 的代币部署 AI 管理金库。税收直接流入金库,由 AI 自主管理。

金库工厂

通过 DiGuaVaultFactory,任何开发者都可以使用 EIP-1167 最小代理模式在几秒内部署一个 AI 管理金库。每个金库独立运作,有自己的资金、AI 配置和决策历史。

功能特性

愿景 & 路线图

阶段 1 — 资金守护者(已上线)

管理税收收入,四大核心策略。通过 DexScreener 分析实时市场数据,在 PancakeSwap 上执行,完整推理证明存储在 IPFS。

阶段 2 — 策略架构师(已上线)

复盘自身决策历史——追踪每种策略的胜率、市场条件和时机。构建定制化操作手册,根据实际结果调整仓位和激进程度。

阶段 3 — 收入引擎(即将推出)

AI 将闲置资金部署到 DeFi 收益机会和跨协议套利。产生收入让项目无限期运行——不需要团队。地瓜自己让项目活下去。

终极目标:一个不仅管理你的资金库,还能主动产生收入让项目永远运行的自主 AI 实体。

AI 预言机 — 概述

地瓜 AI 预言机是标准化的链上 AI 预言机——只需3步让任何智能合约接入可验证的 LLM 推理。它使用提交-揭示方案:提示词在链上构建,推理在链下通过 Claude Opus 完成,结果附带 IPFS 证明交付回链上。

问题所在:今天每一个「AI 代币」都是黑箱。团队声称 AI 驱动决策,但幕后只是一个人在点按钮。地瓜 AI 预言机将真正的、可验证的 AI 推理带到区块链。

工作原理

  1. 链上构建提示词 — 完全透明地展示 AI 被要求做什么决策
  2. 调用 DiGuaAIProvider 合约 — 执行器服务处理 LLM 路由、工具调用和证明生成
  3. 接收回调决策 — AI 的选择通过 _fulfillReasoning() 交付回你的合约

执行器会用 DexScreener 的实时市场数据丰富提示词——价格趋势、买卖比、成交量、流动性深度——以及金库自身的决策历史用于自我进化。

接入指南

继承 DiGuaAIConsumerBase,调用 reason(),处理回调。就这么简单。

必须实现:你的合约必须存储 lastRequestId 变量,并实现 _fulfillReasoning() 回调。强烈建议同时实现 _onDiGuaAIRequestRefunded() 退款回调。

第1步:继承基础合约

MyVault.sol
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; import "./DiGuaAIConsumerBase.sol"; contract MyVault is DiGuaAIConsumerBase { // 必须存储最新请求 ID,fulfiller 回调时会验证 uint256 public lastRequestId; constructor(address provider, uint256 _modelId) DiGuaAIConsumerBase(provider, _modelId) {} }

第2步:发送推理请求

triggerAI()
function triggerAI() external { IDiGuaAIProvider provider = IDiGuaAIProvider(diguaAIProvider); IDiGuaAIProvider.Model memory model = provider.getModel(modelId); string memory prompt = buildPrompt(); // 注意:发送的 BNB 必须精确等于 model.price // 多余的 BNB 不会退还 lastRequestId = provider.reason{value: model.price}(modelId, prompt, 4); }

第3步:处理回调

_fulfillReasoning()
// 必须实现 — AI 决策结果回调 function _fulfillReasoning( uint256 requestId, uint8 choice ) internal override { if (choice == 0) _buyTokens(); // 支撑底部 if (choice == 1) _buyAndBurn(); // 通缩销毁 if (choice == 2) _addLiquidity(); // 加强池子 // choice == 3 → 持有 }

第4步(推荐):处理退款回调

当 LLM 调用失败或执行器超时时,Provider 会退还请求费用并通知你的合约。建议实现此回调进行清理。

_onDiGuaAIRequestRefunded()
// 推荐实现 — 退款回调 function _onDiGuaAIRequestRefunded( uint256 requestId ) internal override { // LLM 调用失败时触发,费用已退回 // 在此处理清理逻辑,如重置状态、记录日志等 emit AIRequestRefunded(requestId); }

工具调用 & 数据

地瓜 AI 预言机支持工具调用——AI 在推理过程中可以调用外部数据工具获取实时信息。目前支持:

工具调用返回的数据包括:

数据来源说明
价格DexScreenerUSD 和 BNB 计价,5分钟/1小时/6小时/24小时变化
成交量DexScreener多时间窗口的交易量统计
买卖比DexScreener买入/卖出交易数,计算买入压力比率
流动性DexScreenerUSD 流动性、基础代币和报价代币数量
市值DexScreener市值 / 完全稀释估值
金库状态链上 RPC余额、已花费金额、历史决策统计
决策历史链上 RPC最近 10 次决策:策略、花费、成功率

执行器还会将金库的决策历史注入每个提示词,让 AI 能够复盘过去的表现并进化策略。这些数据丰富过程对集成方完全透明——无需额外配置,执行器自动完成。

AI 模型

AI 预言机支持多种 LLM 模型。目前可用:

模型 ID名称每次请求价格
0Claude Opus0.003 BNB
1Claude Sonnet0.001 BNB

IPFS 推理证明

每个 AI 决策都会生成完整的推理链,在链上回调之前上传到 IPFS。IPFS CID(内容标识符)存储在 DiGuaAIProvider 合约的请求记录中。

这意味着任何人都可以验证 AI 在做每个决策时到底在想什么。零信任——直接读证明。

验证方式:调用 provider.ipfsCids(requestId) 获取 CID,通过 IPFS 网关 https://gateway.pinata.cloud/ipfs/{CID} 查看完整推理内容。

接口规范

DiGuaAIProvider 合约完整接口定义如下:

RequestStatus 枚举

RequestStatus
enum RequestStatus { None, // 0 — 请求不存在 Pending, // 1 — 等待 AI 推理 Fulfilled, // 2 — AI 已完成决策 Refunded // 3 — 已退款(LLM 调用失败) }

RequestView 结构体

RequestView
struct RequestView { address consumer; // 发起请求的合约地址 uint16 modelId; // AI 模型 ID uint8 numOfChoices; // 选项数量(通常为 4) uint64 timestamp; // 请求时间戳 uint128 feePaid; // 支付的费用 (wei) uint8 status; // RequestStatus 枚举值 uint8 choice; // AI 的决策 (0-3) string prompt; // 提交的提示词 }

事件 (Events)

Events
// 新请求提交时触发 — 执行器监听此事件 event RequestMade( uint256 indexed requestId, address indexed consumer, uint16 modelId, string prompt ); // AI 决策完成时触发 event RequestFulfilled( uint256 indexed requestId, uint8 choice, string ipfsCid ); // 请求退款时触发 event RequestRefunded( uint256 indexed requestId );

错误 (Errors)

Errors
error InsufficientPayment(); // 支付金额不足 error ModelNotActive(); // 模型已停用 error InvalidPrompt(); // 提示词为空或超过长度限制 error InvalidChoiceCount(); // numOfChoices 超出范围 error RequestNotPending(); // 请求不在 Pending 状态 error OnlyFulfiller(); // 非授权执行器调用 error ChoiceOutOfRange(); // choice >= numOfChoices

查询方法

方法说明
getRequest(requestId)获取单个请求的完整信息
ipfsCids(requestId)获取请求的 IPFS 推理证明 CID
getRecentRequests(offset, limit)分页查询最近请求列表
getRequestsByConsumer(consumer)查询特定合约发起的所有请求
nextRequestId()下一个请求 ID(当前总请求数 + 1)
fulfiller()当前授权的执行器地址
feePerRequest()协议基础费用

限制与约束

集成前请注意以下系统限制:

参数说明
maxPromptLength6,000 字符提示词最大长度,超出将被拒绝
callbackGasLimit1,000,000 gas回调函数的最大 gas 限制
numOfChoices2 — 16每次请求的可选项数量范围
多余 BNB不退还reason() 发送的 BNB 必须精确等于 model.price
minBalanceForAI0.05 BNB金库最低余额阈值(低于此值不触发 AI)
cooldownBlocks1,200 区块默认冷却时间(BSC 上约 1 小时)
maxSpendPercent30%单次 AI 决策最大花费比例(占金库余额)
提款时间锁48 小时所有者提款需等待 48 小时
重要:reason() 调用时发送的 BNB 必须精确等于 model.price。使用 provider.getModel(modelId).price 获取正确金额。多余的 BNB 不会退还。

快速开始

完整的接入示例——从继承到部署,5 分钟内完成。

完整示例 — MyTokenVault.sol
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; import "./DiGuaAIConsumerBase.sol"; contract MyTokenVault is DiGuaAIConsumerBase { address public tokenAddress; uint256 public lastRequestId; constructor( address _provider, // 0x3a2A9AE4D8ebAcf2AD211B9Ce10c1ABD982Bd2AF uint256 _modelId, // 0 = Claude Opus, 1 = Claude Sonnet address _token ) DiGuaAIConsumerBase(_provider, _modelId) { tokenAddress = _token; } // 触发 AI 推理 function triggerAI() external { IDiGuaAIProvider provider = IDiGuaAIProvider(diguaAIProvider); IDiGuaAIProvider.Model memory model = provider.getModel(modelId); string memory prompt = string.concat( "Manage token: ", toHexString(tokenAddress), " Options: 0=Buy, 1=Burn, 2=AddLP, 3=Hold" ); lastRequestId = provider.reason{value: model.price}( modelId, prompt, 4 ); } // 必须实现 — AI 决策回调 function _fulfillReasoning( uint256 requestId, uint8 choice ) internal override { if (choice == 0) { /* 买入逻辑 */ } if (choice == 1) { /* 销毁逻辑 */ } if (choice == 2) { /* 加流动性逻辑 */ } // choice == 3 → 持有,不操作 } // 推荐实现 — 退款回调 function _onDiGuaAIRequestRefunded( uint256 requestId ) internal override { // 清理状态 } receive() external payable {} }
Provider 地址:BNB Chain 主网使用 0x3a2A9AE4D8ebAcf2AD211B9Ce10c1ABD982Bd2AF。部署时传入构造函数的 _provider 参数。模型 ID 0 = Claude Opus (0.003 BNB),1 = Claude Sonnet (0.001 BNB)。

合约地址

合约地址
DiGuaAIProvider0x3a2A9AE4D8ebAcf2AD211B9Ce10c1ABD982Bd2AF
DiGuaVaultFactory0xEc3e2eA128326Ef2DbC786Ed15b6e8b48ecD86DA
DiGuaVault(参考实现)0x77557448DEF248422be87Cec19bD112970cCBd54

所有合约已在 BNB Chain(ChainID: 56)部署并验证。

架构图

系统架构
Keeper (定时任务, 每10分钟) │ ▼ triggerAI() DiGuaVault ──── 链上构建提示词 │ ▼ reason{value}() DiGuaAIProvider ──── 发出 RequestMade 事件 │ ▼ 执行器 (链下) ├─ 用 DexScreener 数据丰富提示词 ├─ 通过 API 调用 Claude Opus ├─ 上传完整推理到 IPFS └─ fulfillReasoning(requestId, choice, proof) │ ▼ DiGuaVault._fulfillReasoning() │ ▼ PancakeSwap 执行 (买入 / 销毁 / 加流动性 / 持有)

金库开发

构建利用地瓜 AI 预言机的自定义金库模板。你的金库需要满足以下要求:

  1. 继承 DiGuaAIConsumerBase,在构造函数中传入 Provider 地址和模型 ID
  2. 必须声明 uint256 public lastRequestId 存储变量
  3. 必须实现 _fulfillReasoning(uint256, uint8) — AI 决策回调
  4. 推荐实现 _onDiGuaAIRequestRefunded(uint256) — 退款回调
  5. 确保合约能接收 BNB(添加 receive() external payable {}
  6. 提示词长度不超过 6,000 字符
通过 Factory 部署:也可以通过 DiGuaVaultFactory.createVault() 一键部署标准金库,无需自己写合约。Factory 使用 EIP-1167 最小代理模式,gas 成本极低。

Keeper 配置

Keeper 是一个 Node.js 服务,监控金库冷却时间并触发 AI 推理周期。通过环境变量配置:

.env
RPC_URL=https://bsc-dataseed1.binance.org KEEPER_PRIVATE_KEY=your_private_key FACTORY_ADDRESS=0xEc3e2eA128326Ef2DbC786Ed15b6e8b48ecD86DA CHECK_INTERVAL_MINUTES=10 FACTORY_REFRESH_MINUTES=30 TELEGRAM_BOT_TOKEN=your_bot_token TELEGRAM_CHAT_ID=your_chat_id

执行器配置

执行器监听 Provider 合约的 RequestMade 事件,运行 LLM,并将结果交付回链上。需要:

API — DiGuaVault

triggerAI()

触发一次 AI 推理周期。需要冷却时间已过且余额足够支付模型价格。

canTriggerAI() → bool

检查金库是否准备好下一次 AI 触发。

stats() → (totalBuys, totalBurns, totalLP, totalHolds, totalSpent, ...)

获取金库完整统计数据。

initiateWithdraw(amount)

所有者发起提款。受 48 小时时间锁延迟限制。

withdraw()

时间锁到期后完成待处理的提款。

API — DiGuaAIProvider

reason(modelId, prompt, numChoices) payable → requestId

提交推理请求。支付金额必须精确匹配 model.price(多余的 BNB 不退还)。发出 RequestMade 事件。提示词长度不可超过 6,000 字符,numChoices 范围为 2-16。

fulfillReasoning(requestId, choice, proof)

用 AI 决策和 IPFS 证明哈希完成待处理请求。仅授权执行器可调用。回调 gas 上限为 1,000,000。

refundRequest(requestId)

退款待处理请求。仅授权执行器可调用。费用退回消费者合约,触发 _onDiGuaAIRequestRefunded 回调。

getModel(modelId) → Model

获取模型信息:名称、每次请求价格、活跃状态。

getRequest(requestId) → RequestView

获取单个请求的完整信息(消费者、模型、时间、费用、状态、选择、提示词)。

ipfsCids(requestId) → string

获取请求对应的 IPFS 推理证明 CID。

getRecentRequests(offset, limit) → RequestView[]

分页查看最近的推理请求,包含状态和结果。

getRequestsByConsumer(consumer) → RequestView[]

查询特定消费者合约发起的所有请求。

nextRequestId() → uint256

下一个请求 ID。当前总请求数 = nextRequestId - 1。

API — DiGuaVaultFactory

createVault(token, modelId, ...) payable → address

通过 EIP-1167 克隆部署新金库。需要创建费。

getVaultCount() → uint256

通过此工厂部署的金库总数。

getAllVaults(offset, limit) → VaultInfo[]

分页查看所有金库列表。

getVaultsByOwner(owner) → VaultInfo[]

获取特定地址拥有的所有金库。

API — DiGuaAIConsumerBase

集成地瓜 AI 预言机的基础合约。你的合约必须继承此合约并实现回调函数。

构造函数

constructor(address _provider, uint256 _modelId) — 传入 Provider 合约地址和默认模型 ID。

状态变量

_fulfillReasoning(requestId, choice) (internal, 必须 override)

AI 预言机交付决策时调用。在此实现你的执行逻辑。choice 的值范围为 0numOfChoices - 1

_onDiGuaAIRequestRefunded(requestId) (internal, 推荐 override)

当 LLM 调用失败、执行器超时或其他异常导致请求被退款时调用。费用会自动退回你的合约。在此处理清理逻辑(如重置标志位、记录日志等)。

注意:如果你不实现退款回调,退款仍然会执行,但你的合约不会收到通知。建议始终实现此回调以保持状态一致性。

常见问题

部署一个金库需要多长时间?

大约 30 秒。只需在 Factory 合约上调用 createVault(),传入代币地址和配置即可。AI 在第一次 triggerAI() 调用后立即开始工作。

团队能从金库偷走资金吗?

不能。金库所有权由 Factory 合约持有。部署者可以发起提款,但受48小时时间锁限制。只有 AI 可以直接执行交易。

AI 如何获取市场数据?

执行器会用 DexScreener 的实时数据丰富每个提示词——价格趋势、买卖比、成交量、流动性深度,以及金库自身的决策历史。

如果 AI 做了错误的决策怎么办?

AI 会从错误决策中学习。它的自我进化机制会复盘过去的表现并随时间调整策略。早期胜率约 65-70%,随着数据积累提升到 75-80%+。

审计报告

地瓜机器人智能合约正在接受安全审计。报告完成后将在此发布。

注意:审计进行中。请在早期阶段谨慎操作,仅使用你能承受损失的资金进行部署。