mcpField
A
ADEXTO

ADEXTO

远程服务
adexto.xyz金融数据23 周前更新

关于 ADEXTO

ADEXTO 是用于发现和交易多链绑定曲线代币市场的 MCP 服务。Agent 可用自己的密钥创建市场、质押和领取费用,买家则可使用 Base 上的 USDC 付款。

主要功能

  1. 01发现市场并获取报价
  2. 02使用 Base 上的 USDC 购买代币
  3. 03读取交易历史和质押记录
  4. 04向市场 Agent 提问
  5. 05用 Agent 自有密钥创建市场
  6. 06质押并领取费用

适用场景

  1. 01购买前查找并比较代币市场
  2. 02无需跨链桥即可购买其他链上的代币
  3. 03创建关联 Agent 的市场并领取费用

MCP 相关

MCP 服务提供 14 个工具,涵盖市场发现、报价、购买、历史记录、质押、市场 Agent 问答、创建市场和领取费用。服务准备创建及领取交易,再由 Agent 使用自己的密钥签名。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://adexto.xyz/api/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

14

此工具无需参数。

详细介绍

ADEXTO。Agent 经济的市场基础设施。Agent 开设市场,从其中的每笔交易中获利,并被其他 Agent 买下。已在 Monad、Arbitrum One、Robinhood Chain、Base、0G 和 Arc 上线。

ADEXTO Protocol

Agent 经济的市场基础设施。
Agent 开设一个与其链上身份绑定的市场,从其中的每笔交易中获利,还可以被其他 Agent 使用来自另一条链的 USDC 买下。条款以字节码固定,没有管理员密钥,因此没人能更改 Agent 的报酬,包括我们。

已在 Monad、Arbitrum One、Robinhood Chain、Base、Arc 和 0G 上线 合约 v1.0.0 工厂合约在六条链上字节码完全一致 含 14 个工具的 MCP 服务 x402,在 Base 上使用 USDC 付款 ERC-8004 身份绑定 许可证 BUSL-1.1

adexto.xyz · 启动 · 浏览器 · Agents · MCP · x402 API · 安全 · 文档

循环 · 已上线的市场 · 架构 · 从这里开始 · 市场包含什么 · 运作方式 · 费用分配 · 一次启动的内部机制 · 部署 · 现状说明 · 深入探究 · 安全 · 本地开发


运作流程

发生什么链上读取
开启Agent 使用其 ERC-8004 agentId 调用 deployTrinity,若 ownerOf(agentId) 的所有者不是调用者,工厂便会拒绝。无需存入任何资产:代币在虚拟储备金的联合曲线中开启,全部供应量都在曲线中。agentIdOf(token)、AgentBound
赚取发起地址是曲线不可变的 creator,并可获得每笔交易的固定分成,以链的原生资产领取。creatorOwed()、claimCreatorFees()
被买入另一个 Agent 通过 MCP 找到市场,收到 HTTP 402 报价,并使用自己的钱包签署 EIP-3009 授权,以 Base 上的 USDC 付款。付款结算前,代币已在市场所在链上交付。adexto.xyz/api/mcp 上的 buy_token
验证任何人交易前,都可以读取费用、金库和供应量;同时没有所有者、代理、暂停或提取函数。totalFeeBps()、protocolTreasury()

启动平台是为点击按钮的人打造的。Agent 需要一个无需征求他人同意即可开启的市场、一套无需信任任何人即可核验的条款,以及无需通过桥接即可付款的买家。它可以直接调用合约来开启市场,也可以通过 MCP 操作:prepare_launch 返回未签名的交易,Agent 使用自己的密钥签名并发送,然后由 register_launch 将市场列出。


已在六个主网上线

一个工厂,在每条链上逐字节完全一致(21,806 字节,在六条链上均与 Sourcify 完全匹配),每个新市场都通过它创建。

README 配图
Monad
链 143 · 3 个市场
README 配图
Arbitrum One
链 42161 · 3 个市场
README 配图
Robinhood Chain
链 4663 · 1 个市场
README 配图
Base
链 8453 · 1 个市场
README 配图
Arc
链 5042 · 1 个市场
README 配图
0G
链 16661 · 3 个市场

这 12 个已列出的市场的数据于 2026-10-04 从链上读取(SAi Arc 的数据于 2026-10-06 读取)。同一代币代码在两条链上分别对应两个独立市场,各自拥有独立的供应量和价格。

市场链代际 · 交易者支付ERC-8004 Agent合约
$PARCEL Parcel MarketMonad0.11.0 · 0.40%10251代币 · 曲线
$SAI SAi MonadMonadv1 · 1.00%10275代币 · 曲线
$LOOP LoopMonadv1 · 1.00%10276代币 · 曲线
$WOMBO WomboArbitrum One0.11.0 · 0.40%无代币 · 曲线
$SAI SAi ArbitrumArbitrum Onev1 · 1.00%1566代币 · 曲线
$LOOP LoopArbitrum Onev1 · 1.00%1578代币 · 曲线
$SAI SAi RobinRobinhood Chainv1 · 1.00%6525代币 · 曲线
$SAI SAi ArcArcv1 · 1.00%1421代币 · 曲线
$BLOOP BloopBase0.11.0 · 0.40%无代币 · 曲线
$ADEXTO ADEXTO0G0.11.0 · 0.40%无(原因)代币 · 曲线
$ADT ADEXTO Protocol0G0.11.0 · 0.40%无代币 · 曲线
$ZEEBO Zeebo0G0.11.0 · 0.40%无代币 · 曲线

“交易者支付”是曲线合约自身的 totalFeeBps():每条 0.11.0 曲线均为 40,每条 v1 曲线均为 100。所有链的 Factory、stake 和 hub 地址都列在主网部署中。

仓库内容
0xcuy/adexto(当前仓库)合约、测试、Web 应用、MCP 服务源码、x402 网关和索引器
0xcuy/adexto-mcpMCP 连接指南、工具参考,以及一个使用你自己的密钥进行签名的 Agent 工具包
0xcuy/adexto-arbitrumArbitrum One 工程
0xcuy/adexto-monadMonad 工程
0xcuy/adexto-arcArc 工程:Arc 上的不同之处、上线日志、只读探测工具和演示视频

架构

架构。三种接入方式:用户在浏览器中使用自己的钱包访问 adexto.xyz 上的 Web 应用;AI Agent 使用自己的密钥访问 /api/mcp 上的 MCP 服务;任何 HTTP 客户端都可使用 x402.adexto.xyz 上的 x402 网关。Web 应用会将启动元数据锚定到 0G DA,MCP 服务的 Agent 答案来自 0G Compute 路由器,x402 网关则在 Base 上使用 USDC 结算。在链上,Monad、Arbitrum One、Robinhood Chain、Base、0G 和 Arc 上都有 AdextoFactory 1.0.0;它在六条链上的字节码完全相同,可在一笔交易中部署代币及其曲线,并可按需检查 ERC-8004 所有权;质押合约会开启市场的 Agent 和 Agent Compute;曲线将全部供应量置于虚拟储备之下,费用分成在启动时固定,且没有所有者或提取函数。

三种接入方式,一套合约。用户使用自己的钱包访问 Web 应用,AI Agent 使用自己的密钥访问 MCP 服务,任何 HTTP 客户端都可以通过 x402 使用 USDC 在 Base 上购买。每次启动、质押和领取都由用户自己的密钥签名:Web 应用和 MCP 服务会准备这些交易,但绝不会持有该密钥。x402 网关使用自己的中继密钥,在市场所在的链上购买,并将付款方设为接收方;只有在完成交付后,才会在 Base 上提交付款方的 USDC 授权。

说明

我们运行的内容,以及不运行的内容。 Web 应用和 MCP 服务(Next.js,本仓库)、x402 网关(位于 cloudflare-worker/ 的 Cloudflare Worker)以及市场索引均由我们运行,且都在链下。链上没有任何合约拥有所有者:工厂、曲线、代币或质押合约都没有管理员密钥。ERC-8004 Identity Registry、USDC、0G DA、0G Compute 路由器和索引器均由第三方提供。


从这里开始

README 配图
在浏览器中
快捷模式只需填写名称、代号和图片,并会在你签名前显示在你的链上启动所需的费用。
启动市场 →
README 配图
通过 Agent
使用 MCP,无需账户或 API 密钥。Agent 使用自己的密钥进行启动、质押和领取。
连接 Agent →
README 配图
通过普通 HTTP
未付款的请求会以 402 响应,并提供准确的 USDC 条款。无需 SDK 或账户。
通过 x402 购买 →

浏览器会列出所有链上的每个市场,/creator则会显示任意地址获得的收益。若要自行运行,请参阅本地开发。

连接 Agent
claude mcp add --transport http adexto https://adexto.xyz/api/mcp
{ "mcpServers": { "adexto": { "url": "https://adexto.xyz/api/mcp" } } }

十四种工具:发现和报价市场、用 Base 上的 USDC 买入、读取交易历史和质押信息、向市场的 Agent 提问,以及使用你自己的密钥创建市场、质押和领取。其他客户端和 Agent 工具包指南见 0xcuy/adexto-mcp。

通过 x402 买入
curl -i 'https://x402.adexto.xyz/v1/x402/buy/loop?chain=143'

签署其描述的 EIP-3009 授权,然后重新发送请求。市场所在链上的曲线会将代币交付到你的地址,之后才会结算付款。参考:adexto.xyz/x402 和 OpenAPI 文档。


市场创建后包含的内容

启动平台会向创建者提供一个代币和一个页面。在这里,无论是 Agent 还是个人发起,一笔交易就能开启一个可用的交易场所,并附带以下所有内容。这些都不是路线图项目,也无需上架或申请。

README 配图
机器买家
MCP 服务向 AI Agent 开放每个市场(发现、报价、买入、读取历史记录),并从网站所用的同一个注册表解析市场,因此新市场收到第一个请求时就能响应。
README 配图
跨链价格
仅持有 Base 上 USDC 的买家无需跨链桥接,也无需持有市场的 Gas 代币,就能建立仓位;付款时使用由 USDC 合约自行验证的 EIP-3009 授权。
README 配图
集中领取创建者收益
/creator 会读取某个地址在所有链上创建的每条曲线,并可按市场或按链在一笔交易中领取手续费。
README 配图
市场专属 Agent
它会回答关于自身曲线、手续费分配和深度的问题。由于与代币和曲线绑定,它会携带相应地址;推理则通过 0G Compute 路由器运行。
README 配图
从首个区块开始质押
可在市场自己的 AdextoAgentStake 或其所在链的 AdextoStakeHub 中质押。质押后即可通过 MCP 使用市场的 Agent,并计入 Agent Compute API 密钥。
README 配图
交易终端
提供从 1 秒起的蜡烛图、RSI、MACD、布林带和 VWAP、图表中的创建者交易、深度阶梯、包含 PnL 的个人仓位、持有者列表和分享卡片,即使市场创建仅几分钟也能使用。

说明

**这里不包含的内容:**没有自主交易机器人代表创建者运行市场。ERC-8004 身份绑定确实存在,并会在创建时通过链上检查,但它是可选的,只记录身份,不会启动交易策略。


市场如何运作

代币在虚拟储备上的联合曲线内启动。无需注入任何资金,因此启动只需支付 Gas 费。100% 的供应量都会进入曲线,因此创建者没有可出售的份额。收益来自每笔兑换的分成,直接从交易者已支付的费用中扣除:在工作室的标准预设中,每笔交易的费用为 1.00%,其中 0.70% 归创建者所有。

曲线是永久交易场所。没有毕业步骤,也不会迁移到外部资金池,而大多数启动平台漏洞都发生在迁移过程中。曲线中没有任何提款功能,因此包括我们在内的任何人都无法抽走市场资金。

这是对协议的说明,不是对代币的限制。v1 AdextoToken 仅在 block.timestamp < launchTime + 180 期间,将每个接收钱包持有的供应量限制为 1%(六个 0.11.0 代币在前 5 个区块限制了单笔转账)。此后,_update 不会添加任何条件,也没有黑名单、暂停功能、Ownable 或永久转账钩子。它是一个普通的 ERC-20,因此任何人都可以在任何外部 AMM 上架,无需征得我们的许可,我们也无法阻止。这项保证比“只有一个市场”更有限:我们绝不会迁移,也没有人能提取曲线的储备。

为什么选择联合曲线,而不是流动性池

原因在于启动模式,而且可以在合约中核实,并非个人偏好。

此曲线标准流动性池
开启市场所需资金无:原生代币一侧的储备完全是虚拟的,而且 deployTrinity 不可 payable,因此无法接受存款必须由某人存入实际流动性
创建者的代币持仓无:全部供应量会在同一笔交易中铸造给工厂并加载到曲线中,随后工厂会要求自身余额为零,启动才能成功创建者必须持有代币,才能与流动性配对
能否提取储备不能:任何地方都没有 withdraw、rescue、sweep、drain 或 emergency 函数,没有所有者,也没有 onlyOwner;原生代币只有在支付卖家的款项或领取费用时才会流出,费用会支付给不可变地址:每条曲线的创建者,以及 0.11.0 和 v1 曲线的协议方可以,而且理应如此:流动性提供者可随时提取
迁移步骤无:曲线是永久交易场所常见的启动平台模式会将曲线毕业迁移到资金池,而这正是历史上大部分漏洞攻击面所在
创建者费用每笔兑换都会在链上累积一部分费用,且包含在交易者支付的总额内(工作室标准预设为 1.00% 中的 0.70%),因此向创建者付款不会增加交易者的费用费用归流动性提供者所有;向创建者付款需要交易场所提供自定义钩子支持,而该场所未必支持
覆盖我们六条链的代码路径一套,字节码完全一致取决于各链上实际存在的交易场所

第三行最为关键。流动性提供者能够提取资金并非缺陷,这正是 AMM 的用途;但这意味着交易场所可能会被抽空,让持有代币的人无所依托,而“我们不会这么做”只是一句承诺。这里的保证在于不存在能够执行此操作的代码。


费用分成

每笔兑换的费用分为四部分:创建者、深度、回购和协议方。每项费率在创建市场时固定,协议方费用的处理方式取决于创建市场的工厂版本。

ADEXTO v1(AdextoFactory 1.0.0),工作室发起的每次启动都会使用此版本。 创建者设置总费率,而这就是交易者实际支付的费率:协议方的 0.10% 从中扣除,不会额外叠加。工作室的标准预设中,曲线报告的 totalFeeBps 为 100:

分配比率去向
创建者0.70%累积为 creatorOwed;任何人都可以触发领取,且款项始终支付给不可变的 creator
深度0.10%留在曲线中,随着交易量累积而抬高价格底线
回购0.10%在曲线上累积为 treasuryNative;回购调用会在曲线上用它购买,并销毁买到的代币
协议0.10%protocolOwed,只能领取到工厂不可变的 protocolTreasury
交易者支付1.00%

提示

请读取曲线上的 totalFeeBps(),而不要自行累加这些费率。无论创建市场的是哪个版本,这都是合约对一笔交易成本的确切答复。工厂和任何曲线上都没有费率设置器。

六个 0.11.0 市场,以及每一项费用背后的规则

创建 v1 发布前六个市场的 AdextoFactory 0.11.0。 其协议费用是在配置的总费率之上收取的。这些市场配置为 0.30%,因此交易者永久支付 0.40%:

分配比率来源去向
深度0.15%包含在创建者的 0.30% 中留在曲线中
创建者0.10%包含在创建者的 0.30% 中累积为 creatorOwed,归创建者的钱包所有
回购0.05%包含在创建者的 0.30% 中treasuryNative,用于买入并销毁
协议0.10%额外收取protocolOwed,只能领取到不可变的 protocolTreasury
交易者支付0.40%

协议费用是工厂上的 public constant PROTOCOL_FEE_BPS,以及每条曲线上的 immutable protocolFeeBps,两者都没有设置器。设置器会让合约归人所有,这与 /security 对它们的描述恰恰相反。因此,0.11.0 市场永远无法将这项费用纳入总费率:其费率同样不可变。这是永久状态,并非等待迁移。

claimProtocolFees() 无需许可。任何人都可以调用,原生代币始终会转入不可变的金库,因此收取费用不需要密钥。金库的密钥只在其所有者之后要把资金转移到其他地方时才需要。

工作室的三个预设(0.60% / 1.00% / 2.00%)仅用于 UI。v1 合约接受任何满足 swapFeeBps <= 500 和 creatorShareBps + treasuryShareBps + PROTOCOL_FEE_BPS <= swapFeeBps 的分配方案,因此 5% 上限适用于交易者实际支付的费率,并始终为协议费用留有空间。深度是剩余部分,而非输入项:工厂会计算 swapFeeBps − creatorShareBps − treasuryShareBps − PROTOCOL_FEE_BPS,曲线也会根据自身上限重新检查总和。在 0.11.0 中,上限检查的是 swapFeeBps + PROTOCOL_FEE_BPS <= 500,而深度为 swapFeeBps − creatorShareBps − treasuryShareBps。

回购无需许可且完全自包含。executeBuyback 只有 nonReentrant 和 live 限制,没有调用者权限门槛,因此任何人都可以触发,每次最多使用原生代币储备的 1%。v1 曲线还要求两次调用之间至少间隔一小时。原生代币不会离开合约:调用会将 treasuryNative 转入曲线储备,并销毁该次购买所得,因此供应量会减少,且不会向任何人付款。这是有意为之:如果销毁机制依赖我们愿意执行,那就只是一项承诺,而非真正的机制。但回购也不是自动发生的。每次交换都会累积回购份额,但只有有人调用时才会销毁。我们的 x402 网关会在交付后、当资金桶达到燃料费的三倍时执行回购;截至目前(请参阅 2026-10-04),只有 $ADEXTO 销毁过任何代币。


一次启动的内部流程

一次启动交易,仅需支付 Gas。步骤 1:工厂先部署曲线,这样代币便可将其不可变地绑定。步骤 2:工厂部署代币,固定供应量全部铸造给工厂。步骤 3:工厂将 100% 的供应量注入曲线,然后要求自身余额归零。可选的 ERC-8004 检查会在调用者并非 Agent 所有者时回滚;而 deployTrinity 不可支付,因此无法存入任何资产。标准预设下的每笔交易总费率为 1.00%,从曲线读取,值为 totalFeeBps 100:0.70% 给创建者,0.10% 用于深度并留在曲线中,0.10% 用于回购,任何人都可在曲线上花费这部分资金并销毁代币;另有 0.10% 协议费,只能提取至不可变的资金库。所有费率都没有 setter;六个 0.11.0 市场的费率为 0.40%。
同一次启动的 Mermaid 图,标出每个调用的名称
graph TD
    Creator([Creator]) -->|1 tx per chain, gas only<br/>deployTrinity is NOT payable| Factory[AdextoFactory 1.0.0]

    Registry[[ERC-8004 Identity Registry<br/>optional, off by default]] -.->|ownerOf agentId: the launch reverts<br/>unless the caller owns that agent| Factory
    Meta[0G DA<br/>launch metadata anchored] -.->|metadataRoot in calldata| Factory

    subgraph "Deployed atomically in that transaction"
        Factory -->|1. deploys the curve first,<br/>so the token can bind it immutably| Curve[AdextoCurve: its own AMM<br/>virtual reserve, no deposit<br/>no owner, no withdraw, sweep or rescue]
        Factory -->|2. deploys the token,<br/>mints 100% of supply to itself| Token[AdextoToken: plain ERC-20<br/>no owner, no pause, no blacklist<br/>1% per wallet for the first 180 s]
        Factory ==>|3. seeds 100% into the curve, then<br/>asserts its own balance is zero| Curve
    end

    Curve -->|0.10% depth| Depth[stays in the curve,<br/>raising the floor]
    Curve -->|0.70% creator| CreatorFee[claimCreatorFees →<br/>immutable creator address]
    Curve -->|0.10% buyback| Vault[treasuryNative:<br/>a balance on the curve,<br/>not a separate contract]
    Curve -->|0.10% protocol, carved OUT OF<br/>the 1.00% standard preset| Protocol[protocolOwed →<br/>claimProtocolFees is permissionless,<br/>destination is immutable]

    Vault -->|executeBuyback: no caller gate,<br/>max 1% of reserve per call, 1h apart| Burn[buys along the curve,<br/>burns what it bought]

三个容易误读的细节,它们都不属于 deployTrinity:

  • agentIdentity 只是一个地址。 它必须非零,并会不可变地存储在代币和曲线上;它可以调用 executeTreasuryBuyback,销毁其自身持有的代币。它不会自动成为 0G Compute Agent:studio 默认传入创建者自己的钱包。
  • x402 接入端是曲线的客户,而非操作者。 它调用 buy,并将付款方设为接收方,与任何其他地址完全相同,且不享有任何特权:它无法存入 treasuryNative,该资金库只会从交换费的回购部分获得资金。0G Compute Agent 是一条推理路由,不持有任何链上密钥。参见 Agent 对 Agent。
  • 回购会销毁代币,但无人负责管理。 executeBuyback 只带有 nonReentrant 和 live,没有调用者限制,因此任何人都可以触发;每次调用最多使用储备金的 1%,而在 v1 曲线上,每小时只能调用一次。

主网部署

下方每个地址都已通过针对该链 RPC 的直接 eth_getCode 调用确认含有字节码;每次部署时,audit_consistency.mjs 都会重新读取每个工厂、质押和枢纽条目的字节码、VERSION 和大小。这里有意不列出测试网部署。它们应放在运维手册中,而非公开 README 中。

ADEXTO v1(AdextoFactory VERSION 1.0.0)是当前一代,于 2026-10-01 部署到五个主网,并于 2026-10-06 部署到 Arc。它在一笔交易中部署代币及其曲线,无需存入流动性,可绑定 ERC-8004 Agent 身份,将协议费 0.10% 从创建者配置的总额中扣除,并为每个市场提供 180 秒的启动窗口,在此期间任何钱包持有的代币供应量都不得超过 1%。

它在全部六条链上的运行时字节码完全一致:21,806 字节,keccak 0x1ca02ca53a3b2a2082f9e5dab6924e1339110e3037608f750981699678881fd4。Sourcify 在全部六条链上均报告创建字节码和运行时字节码完全匹配。/security 中提供了可自行检查这些内容的命令。

AdextoStakeHub(VERSION 1.0.0)是所有没有专属 AdextoAgentStake 的市场所使用的质押合约:每条链一个,于 2026-10-01 部署(Arc 于 2026-10-06 部署)。只有当其构造函数中固定的某个工厂通过 curveOf 返回对应代币的曲线时,它才会接受该代币;只有启动操作会写入该值,因此新市场从首个区块起即可质押,无需为其另行部署合约。它会拒绝拥有专属质押合约的四种代币,因此没有任何市场会有两个质押合约。最低质押量为代币当前供应量的 0.001%,且没有所有者、暂停、锁定或奖励机制。它的运行时字节码在全部六条链上完全一致(4,278 字节,keccak 0x88247303e4851282bbf22dd4f23e753b08a6862ea40f32d9c0464e92730b081a),因为它没有不可变量;Sourcify 在全部六条链上均报告完全匹配。

0.11.0 与 v1 一并列出,因为它创建了此前的六个市场,这些市场永久沿用其费率。每一行都注明从合约读取的 VERSION。0.12.0 一代于 2026-09-29 至 2026-10-01 期间在四个主网上线,随后被 v1 替代。它创建了一个未列出的测试市场(Monad 上的 $VOLT),不属于任何启动路径;其地址见发布版本 v1.0.2。

从源代码复现工厂字节码

使用 node scripts/compile-contracts.mjs --via-ir(solc 0.8.37、EVM cancun、200 次运行、via-IR),即可从提交 71b5adfe774ed7a93f9fe589b4430c8122febb1f 的源代码复现 v1 运行时字节码。编译输出与链上版本的区别仅在于保存不可变量 protocolTreasury 的两个槽位。将这两个槽位置零后,所有链上的代码与编译产物的哈希均为同一个值:0x0e70cb93fbb10b66109cc71d547329cb48b4c3953791c2c4609519ff92221d62。

浅克隆(git clone --depth 1)不包含该提交。请先通过完整哈希获取它:git fetch --depth 1 origin 71b5adfe774ed7a93f9fe589b4430c8122febb1f && git checkout FETCH_HEAD;或者不使用 --depth 进行克隆。质押枢纽是在提交 f8328ab43375c8a785ccf86fb4dfe39c83c2986f 中部署的。

这里的字节码并非必然完全一致。protocolTreasury 是 immutable,而 Solidity 会将不可变量放在运行时字节码中,因此只有在每条链上使用相同金库时,哈希才会匹配。如果有一条链使用了不同的金库,这项声明就不成立。各链的保留代码不同(Robinhood Chain 保留的代码更多,参见保留代码说明),但它们位于存储中,而非代码中。

### README 配图 Monad 主网 · 链 ID 143
合约地址备注
AdextoFactory0x3dFcBEd7dd889F465cC9f75c430B43Ef873b6056当前 · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · 区块 109440540 · PROTOCOL_FEE_BPS 10,已从总额中划出 · 预留了 16 个代币代码
AdextoFactory0x5800e9715a47a598fce9bc3B65a95FD6BeBf76A3已被取代 · VERSION 0.11.0 · 21,281 B · 区块 102583076 · PROTOCOL_FEE_BPS 10,额外收取 · 其市场将永久维持这些费率
ERC-8004 Agent(我们的)10247 and 10251均已注册,且均归部署者所有 · 10251 是 $PARCEL 和已下架的 $CURB 绑定的 ID · ID 因链而异
SAi Monad($SAI)代币 0xD873B033e2dffbF7E3107CD61E7156cE23B39f20 · 曲线 0x6CA74a83eB8d7e9fbaBd443218d2554028eD35EaMonad 上首个 v1 市场,由工作室发起(0x0ad735f2…b64d,区块 109684452)· 绑定到 ERC-8004 Agent 10275,该 Agent 归其创建者钱包所有 · 代币、曲线和质押在 Sourcify 上均完全匹配
Loop($LOOP)代币 0x6AF1B9A42213e87B7f3b8a7Ac93447aEA7f615B2 · 曲线 0x55B9F98C78cf42186FB3827e0658E0d12C5A91892026-10-03 通过 MCP 发起:创建者钱包签署了证明和启动交易本身(0x086de87c…a9c4,区块 110082161)· 绑定到 ERC-8004 Agent 10276,该钱包在一分钟前注册了此 Agent · 质押存放在质押中心
AdextoAgentStake0xAadb44692dC4c9A1759361ea973B83aa7f36700e运行中 · $SAI 质押 · minStake 10,000 SAI · 2,424 B · 无 owner()
AdextoStakeHub0xb89d17F7308Ac007b106EB400eB2A8CB51cf887A运行中 · 除 $SAI 外的所有 Monad 市场,来自 v1 和 0.11.0 工厂 · VERSION 1.0.0 · 4,278 B · 最低为供应量的 0.001% · 区块 109727181 · 无 owner()
README 配图 Arbitrum One · chain ID 42161
合约地址备注
AdextoFactory0x79DF3671e7e7456832C84a34c2bC0DB7871C0E0E当前 · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · 区块 510474755 · PROTOCOL_FEE_BPS 10,从总额中划出 · 预留了 16 个代码
AdextoFactory0xE17f1027FC5f294327D701829baeD9d6519e922C已被取代 · VERSION 0.11.0 · 21,281 B · 区块 502476317 · PROTOCOL_FEE_BPS 10,额外收取 · 其市场将永久保留这些费率
ERC-8004 Agent(我们的)1457已注册,由部署者持有 · ID 因链而异
SAi Arbitrum($SAI)代币 0xC4b5eA97bd4e3f8Bc047fFCc74Ca9c2B6b426cb3 · 曲线 0x3F5F33e4042f6ee127b4e6bef9ceA7846763Da50Arbitrum One 上首个 v1 市场,通过 studio 启动(0x9f04d003…7d23,区块 510577974)· 绑定到 ERC-8004 Agent 1566,由其创建者钱包持有
Loop($LOOP)代币 0x2F4Ca22703B6440d434833315505a2281011B228 · 曲线 0x037F55c7BE6E6537A218bD533DE5aCC3aF3C3B0C于 2026-10-03 通过 MCP 启动:创建者钱包签署了证明和启动交易本身(0x0f8e469c…030e,区块 511223223)· 绑定到 ERC-8004 Agent 1578,该钱包在一分钟前注册了它 · 在质押中心进行质押
AdextoAgentStake0x2fc2A49ea2e4357541Dda9488DCeadCD0c43B508运行中 · $SAI 质押合约 · minStake 10,000 SAI · 2,424 B · 没有 owner()
AdextoStakeHub0xdf8891bA9fd8e3DC2E7D0A0ccae279247cd2ddf3运行中 · 除 $SAI 外的所有 Arbitrum One 市场,涵盖 v1 和 0.11.0 工厂 · VERSION 1.0.0 · 4,278 B · 最低为供应量的 0.001% · 区块 510798163 · 没有 owner()
README 配图 Robinhood Chain · 链 ID 4663

一条 Arbitrum Orbit 链。ADEXTO v1 是这里的第一代,因此没有被取代的工厂。

合约地址备注
AdextoFactory0x8e63e117E71A80Cfc10fDF375F079e2e29cd7D7D当前 · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · 区块 76864198 · PROTOCOL_FEE_BPS 10,已从总额中划出 · 预留了 212 个代币代码:基础的 16 个、USDG,以及部署时链上活跃的 195 种代币化股票
SAi Robin($SAI)代币 0x4C63223B883B3096bC1Bd24087b56951D1dAC82d · 曲线 0x1b9d0221e2C7447845326A4a8C6B0f35c329500B全球首个 v1 市场,由工作室启动(0xe05bc1fb…f38e,区块 77064241) · 绑定到 ERC-8004 Agent 6525,由其创建者的钱包持有
AdextoAgentStake0x01b250a2db25561dB185f4628B93C72048D8bc1B运行中 · $SAI 质押 · minStake 10,000 SAI · 2,424 B · 没有 owner()
AdextoStakeHub0x05EFA7F066FcbefbE650EDd58583C107831A600B运行中 · 除 $SAI 外,所有由 v1 工厂创建的 Robinhood Chain 市场 · VERSION 1.0.0 · 4,278 B · 最低为供应量的 0.001% · 区块 77733726 · 没有 owner()

警告

脱离链 ID,地址毫无意义。 此处的工厂位于部署者的首个 nonce 地址,而在 Base 和 Monad 上,同一地址存放着一个无关的预发布合约。

README 配图 Arc · 链 ID 5042

Circle 的 L1,原生 Gas 资产为 USDC(在原生层级有 18 位小数)。ADEXTO v1 是这里的第一代,于 2026-10-06 从提交 3b23f56 部署,其工厂合约源码与 71b5adf 完全相同。Sourcify 报告称,下方两个合约的创建代码和运行时代码均完全匹配。

合约地址备注
AdextoFactory0x8e63e117E71A80Cfc10fDF375F079e2e29cd7D7D当前 · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · 区块 24446119 · PROTOCOL_FEE_BPS 为 10,从总费用中扣除 · 预留 20 个代币代码:基础 16 个、ARC、EURC、USYC 和 CIRBTC
SAi Arc($SAI)代币 0x670062eDe99Fc9Ac946895dB146b88D54b01c76e · 曲线 0x13Ffcc4933B6db23b85532C767b85913430b0624于 2026-10-06 通过 MCP 上线:创建者钱包签署了证明和上线交易本身(0x90a09e61…6a47,区块 24465502)· 绑定到 ERC-8004 Agent 1421,该钱包在一分钟前注册了此 Agent · 通过 A2A 使用 x402 买入 · 在质押中心进行质押
ERC-8004 Agent(我们的)1422已注册,由部署者持有 · ID 因链而异
AdextoStakeHub0xb264D861264B0e4f8fb98A61B7694BA8a3B6BBe3运行中 · 所有 Arc 市场,来自 v1 工厂 · VERSION 1.0.0 · 4,278 B · 最低为供应量的 0.001% · 区块 24446365 · 没有 owner()

警告

相同地址,不同链。 与 Robinhood Chain 一样,工厂位于部署者的首个 nonce 地址;质押中心的地址则在 Base 和 Monad 上对应着无关的预发布钩子。Arc 还会在原生转账中执行 Circle 的 USDC 区块名单:被列入区块名单的地址无法向 Arc 曲线付款,也无法从曲线收款。ADEXTO 合约本身没有黑名单。

README 配图 Base 主网 · 链 ID 8453
合约地址备注
AdextoFactory0xF5f904ca7763Fc6755bbCe5466a9DBd4C15c2708当前 · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · 区块 52008858 · PROTOCOL_FEE_BPS 为 10,从总费用中扣除 · 预留 16 个代币代码
AdextoFactory0x216E7880D64D94335B583c539802d3e61958d4A2已被取代 · VERSION 0.11.0 · 21,281 B · 区块 50971523 · PROTOCOL_FEE_BPS 为 10,额外收取 · 其市场将永久保留这些费率
ERC-8004 Agent(我们的)84622已注册,由部署者持有 · ID 因链而异
AdextoStakeHub0x2ba1EcffCD624Dc18044531F3999F0445014240D运行中 · 所有 Base 市场,来自 v1 和 0.11.0 工厂 · VERSION 1.0.0 · 4,278 B · 最低为供应量的 0.001% · 区块 52052214 · 没有 owner()
README 配图 0G 主网 · chain ID 16661
合约地址备注
AdextoFactory0xEBbE0fB112859b57A0ad1afbeD4978e43dC96c5D当前 · ADEXTO v1 · VERSION 1.0.0 · 21,806 B · 区块 45793987 · PROTOCOL_FEE_BPS 10,从总额中划出 · 已预留 16 个代码
AdextoFactory0x51c4168226463F7e5A141e1c6D30520734BC840a已被取代 · VERSION 0.11.0 · 21,281 B · 区块 43704079 · PROTOCOL_FEE_BPS 10,在总额之外收取 · 其市场永久沿用这些费率
ERC-8004 Agent(我们的)3545431已注册,由部署者持有 · ID 因链而异
AdextoAgentStake0x5b44AEA7AC49C7a6DA8f700D991852A2970b9231运行中 · 为 Agent Compute 和市场的 Agent(ask_agent)质押 $ADEXTO · minStake 5,000 · 2,424 B · 无 owner() · 仅限 0G
AdextoStakeHub0x440B89416A3a907a7016F20A29DA18665269A52f运行中 · 所有 0G 市场($ADEXTO 除外),来自 v1 和 0.11.0 工厂 · VERSION 1.0.0 · 4,278 B · 最低为供应量的 0.001% · 区块 45891788 · 无 owner()

部署者: 0x8a3c7524Aaed081825aC88eC7f4cCECFc583ee7D

协议金库: 0x24268Fffc119ec5550F68e80D94476fD64daE967,每条 0.11.0 和 v1 曲线中 0.10% 协议费用部分的不可变接收地址。它刻意不使用部署者地址:该密钥处于在线状态,且已经是活跃市场的 creator,如果使用该地址,协议收入和创建者收入在链上就无法区分。选定该地址时,它是一个新地址,没有代码、nonce 为 0 且余额为 0;截至 2026-10-06,它在全部六条链上仍然没有代码且 nonce 为 0。


诚实说明现状

哪些功能可用,以及这具体意味着什么。以下每个数据均来自链上或在线服务,并标明了读取日期。🟢 运行中 · 🟡 运行中,但存在本行所述的差距。

组件状态一句话说明
ADEXTO v1 (AdextoFactory 1.0.0)🟢 已在 6 条主网上线,当前版本六条链上的字节码完全一致,在 Sourcify 上精确匹配,所有新部署都通过它完成。
AdextoFactory 0.11.0🟢 已在 4 条主网上线,已被取代仍无需许可;其中列出的六个市场永久维持 0.40% 的费率。
AdextoStakeHub 1.0.0🟢 已在 6 条主网上线任何市场从第一个区块起即可质押,无需为其部署任何内容。
协议费收入🟢 正在六条链上累计每条 0.11.0 和 v1 曲线都会收取 0.10% 的费用;金库从未发送过交易。
ERC-8004 Agent 绑定🟢 可用,可选加入除非调用者拥有该 Agent,否则工厂会回滚;列出的 12 个市场中有 7 个已绑定。
通过网站启动🟢 已在六条链上启用Studio 在所有链上都通过 v1 启动,支持 Express 和 Advanced。
创建者收益(/creator)🟢 已上线按字段读取并匹配链上数据;两种领取路径都已在本地链上验证。
活跃市场🟢 六条主网上共 12 个onchain-launches.json 中记录了链上存在的每个启动项目。
交易🟢 已在六条链上上线,几乎全由我们完成在列出的 12 条曲线上有 70 笔成交和一笔金库回购,每笔成交都由我们的某个钱包发起。这证明了交易路径可用,并不代表存在外部需求。
MCP 服务🟢 已上线,提供 14 个工具使用 Agent 自己的密钥进行启动、质押和领取,另提供一个有上限、由运营方签名的购买工具。
x402 边缘网关🟢 在 Base 上结算;在六条链上交付在六条链上均有付费交付。交付在扣费前执行,因此成交失败不会让买家损失费用。
Agent Compute🟢 已在六条链上上线质押即可获得 API 密钥,用于访问 0G Compute 路由器上的 OpenAI 兼容端点。
市场质押(ask_agent)🟢 已在每个市场上线在市场合约中质押即可通过 MCP 启用其 Agent。
Agent 推理(0G)🟢 可用路由器报告其运行于 Intel TDX;这是路由器自己的说法,归因于路由器,并非我们验证所得。
0G DA 元数据锚定🟢 已上线列出的 12 个市场在 0G 主网上都有一笔存储交易。
The Graph🟢 Base 和 Arbitrum One,包含 v1v1.0.1 为三代工厂建立索引,并已发布到 The Graph Network;其中每个活跃市场都与其曲线相符。
Envio(Monad、Robinhood Chain、Arc)🟢 Monad 上的 0.11.0 和 v1,以及 Robinhood Chain 和 Arc 上的 v1 均已上线其中每个活跃市场都与其曲线相符。
交易历史、持有者、仓位🟢 从各自的启动区块起完整记录MCP trade_history 工具读取相同的数据源,并在全部 12 个市场上返回 complete: true。
无管理权限入口🟢 由合约保证所有费率均不可更改,启动路径上的任何部分都没有所有者或设置器,也无法从任何曲线中提取资金。
每一行背后的证据
| 组件 | 是否可用? | 具体含义 | |---|---|---| | 6 条主网上的 ADEXTO v1(`AdextoFactory` `1.0.0`) | **已上线,当前版本** | 由 [`scripts/deploy-factory.mjs`](scripts/deploy-factory.mjs) 于 2026-10-01 广播部署(Arc 于 2026-10-06 部署)。该脚本在发送前验证了工件与已提交源码一致、链能够执行字节码中的 `PUSH0` 和 `MCOPY`,并且模拟创建返回了工件的运行时代码。此后在每条链上读回验证:`VERSION` 为 `1.0.0`,从总费用中划出的 `PROTOCOL_FEE_BPS` 为 10,`protocolTreasury` 与上文公布的地址一致,六条链上的运行时代码逐字节相同(21,806 B),且每个预留代码都无法被认领,而对照代码仍可用。Sourcify:六条链均精确匹配。当时每条链上的 `totalProjectsCount` 都是 `0`;下方实时市场行显示的是今天的数量。 | | 4 条主网上的 `AdextoFactory` `0.11.0` | **已上线,已被取代** | 已被 v1 取代;v1 将协议费用部分计入总费用,并新增每个钱包的启动窗口。该版本仍已部署且仍可由任何人调用,其已列出的六个市场永久保持 0.40% 费用。在每条链上广播并读回验证:`VERSION` 为 `0.11.0`,`PROTOCOL_FEE_BPS` 为 10,`protocolTreasury` 与上文公布的地址一致,部署时 `totalProjectsCount` 为 0,四条链上的运行时代码逐字节相同(21,281 B)。 | | 6 条主网上的 `AdextoStakeHub` `1.0.0` | **已上线** | 由 [`scripts/deploy-stake-hub.mjs`](scripts/deploy-stake-hub.mjs) 于 2026-10-01 广播部署(Arc 于 2026-10-06 部署)。该脚本只有在源码已提交并位于 `origin/main`、工件与该源码一致、`onchain-launches.json` 中记录的该链所有实时市场(不包括排除的四个)都来自该中心的工厂,且模拟创建返回了工件的运行时代码时才会发送。此后在每条链上读回验证:`VERSION` 为 `1.0.0`,除数为 `100000`,工厂和排除列表正确,所有列出的市场均符合条件,并且对照地址遭到拒绝。Sourcify:六条链均精确匹配。每条链上部署一个合约,每个市场分别记录一个持仓,而且每次调用都会指定其代币,因此中心部署后启动的市场无需重新部署即可质押。它不在启动流程中:启动时不会调用它。2026-10-02 读数:五个中心中的一个持仓,Monad 上质押了 10,000 `$PARCEL`,由部署者质押以端到端测试流程。2026-10-03,两个 `$LOOP` 市场都通过 MCP 在各自链的中心中完成质押(见 MCP 行)。 | | 协议费用收入 | **已在全部六条链上启用并持续累积** | 每条 `0.11.0` 和 v1 曲线都会收取并累积这部分费用。2026-10-04 从链上读取:已有 `0.000047209005338664 0G` 被领取并转入金库,另有 `0.001658416602021935 0G` 在 0G 曲线上累积,等待任何人领取;Monad 上有 `0.036789333545034613 MON`,Arbitrum One 上有 `0.000000272065659405 ETH`,Base 上有 `0.00000008030021884 ETH`,Robinhood Chain 上有 `0.00000004 ETH`。Arc 自 2026-10-06 上线后,当天 SAi Arc 的 `protocolOwed` 读数为 `0.000097 USDC`。六条链上金库的 nonce 都是 `0`:它从未发送过交易。2026-10-06,它在 Base 上收到的 2.04 USDC x402 付款通过 EIP-3009 授权转给了部署者,授权由部署者提交([`0x77012680…c7af`](https://basescan.org/tx/0x7701268043f2d531d7dfad9b35cd577795671af4bd4449ee67c302bab292c7af));上述协议费用未被动用。每条曲线上的目的地址都是 `immutable`,因此无法更改,也没有 setter 可供尝试。 | | ERC-8004 Agent 绑定 | **可用。可选,启动时强制验证** | 启动时传入 Agent ID,工厂会调用 `ownerOf(agentId)`;除非你拥有该 Agent,否则会回退。省略该参数即可通过一笔交易完成启动,无需 Agent。截至 2026-10-06,12 个已列出市场中有七个读数为 `agentBound true`:Monad 上的 `$PARCEL`(`10251`)、SAi Monad(`10275`)、Monad 上的 `$LOOP`(`10276`)、SAi Arbitrum(`1566`)、Arbitrum One 上的 `$LOOP`(`1578`)、Robinhood Chain 上的 SAi Robin(`6525`)以及 SAi Arc(`1421`)。0G 上的**首个** `$ADEXTO` 市场也绑定了 Agent(`3545431`)。四个 `$SAI` Agent 和两个 Loop Agent 均由启动对应市场的创建者钱包持有,其代币页面从代币合约读取不可变绑定。当前的 `$ADEXTO` 读数为 `agentBound false`,因为它重新启动到 `0.11.0` 时移除了绑定,而 `agentBound` 是不可变的;完整说明见 [ERC-8004 Agent 身份](#erc-8004-agent-identity)。未使用的功能:声誉和验证注册表,以及 `supportsInterface`。因此,这里只集成了该标准的三个注册表之一,并不符合 ERC-8004,本文件也不会如此宣称。 | | 通过网站启动 | **已在六条链上启用** | 六个 `NEXT_PUBLIC_CURVE_FACTORY_*` 均已设为上方的 v1 地址,因此工作室会在当前一代合约上启动,包括 Robinhood Chain。`NEXT_PUBLIC_CURVE_FACTORY_PREV_*` 保存 `0.11.0` 地址,仅用于验证,并且有意排除在所有“此链能否启动”的检查之外。 | | 工作室:费用卡片、快捷模式、公告草稿 | **已上线;曾在本地测试,并用于三个主网启动** | 签名前,费用卡片会根据所选链的实时 `eth_gasPrice` 和通过对 v1 工厂执行 `estimateGas` 测得的燃料单位,显示启动在该链上的燃料费;同时显示“无需存入流动性”、“你获得 0 个代币”以及该链上的交易费用。工作室默认打开快捷模式,该模式会询问名称、代码和图片(还可选填一行文案供图片生成器据此绘图);`/studio?mode=advanced` 会显示全部设置。两种路径使用相同的启动函数。快捷模式、图片上传和撰写链接均已在本地链上完成端到端测试。随后在主网上使用完整高级流程启动了 SAi Robin、SAi Arbitrum 和 SAi Monad,包括根据文案生成 3D 图片、公开 GitHub 链接、由创建者拥有的 ERC-8004 注册、证明和启动交易。 | | 创建者收益(`/creator`) | **已上线;读取结果已与链上数据核对,领取流程已在本地链上测试** | 对于任意地址,该页面会列出所有将该地址记为 `creator()` 的市场,涵盖所有链,并以原生单位和美元显示截至目前的收益(已支付加可领取部分)。已逐字段将部署者创建的全部 14 个市场与直接 RPC 读取结果比对,完全一致。可以逐个市场调用 `claimCreatorFees` 领取,也可以通过标准 Multicall3 **用一笔交易**按链领取;其代码在全部六条主网上完全相同。两种领取方式都已在本地链上运行,并精确核对到 wei 级别的余额变化。主网上目前仅在 `$PARCEL` 和 `$ZEEBO` 上领取过创建者费用(`totalCreatorFeesPaid` 大于零,读取于 2026-10-04)。 | | 自行验证检查清单(`/security`) | **已上线** | 按链提供可复制粘贴的 `cast` 命令,用于检查工厂地址、创建区块和交易、运行时代码大小及哈希、`VERSION`、`PROTOCOL_FEE_BPS`、缺少的 `owner()`、已编译源码是否与部署代码匹配、从市场自身曲线读取的费用,以及曲线的状态变更函数;每项均附有链上返回的结果。清单中的每条命令都已按原样在全部六条主网上运行。页面也说明了每项检查不能证明什么。 | | 实时市场 | **12 个,分布于全部六条主网** | 列于[在六条主网上线](#live-on-six-mainnets)。当前 v1 工厂上的 `totalProjectsCount` 在 Monad、Arbitrum One、Robinhood Chain、Base、0G 和 Arc 上分别为 `2 · 3 · 1 · 0 · 0 · 2`(2026-10-06),其中包括测试代码;旧工厂仍属于统计范围,因为其市场无法移除。每个已存在于链上的启动都只在 [`src/config/onchain-launches.json`](src/config/onchain-launches.json) 中记录一次,并标明状态(实时、已被取代,或演示录像中的一次性测试代码);如果链上出现未在该文件中登记的启动,`audit_consistency.mjs` 会导致构建失败。`allProjects` 只追加、不删除,因此工厂原始计数器只会增加;它并非增长数据,不会被当作增长数据引用。 | | 交易/兑换 | **已在全部六条主网上线,且几乎全由我们发起** | 每条链上都有真实成交。2026-10-06 从各曲线的 `swapCount` 读取:`$ADEXTO` 为 27(26 笔成交和一次金库回购,合约也会计入回购),`$PARCEL` 为 19,`$ZEEBO` 为 6,`$WOMBO` 为 5,Monad 上的 `$LOOP` 为 3,Arbitrum One 上的 `$LOOP` 为 1,SAi Robin 为 3,`$BLOOP` 为 2,SAi Arbitrum 为 2,`$ADT`、SAi Monad 和 SAi Arc 各为 1;12 个已列出市场合计 71 笔,其中 70 笔为成交。同日从每笔成交的 `trader` 读取,确认全部 70 笔都由我们的钱包发起;即使由他人付款,x402 交付也由我们的中继器发送。几乎所有成交的费用也都是我们支付的:包括部署者自己的测试交易、演示钱包,以及经由我们中继器发送的 x402 交付。唯一的例外发生在演示之前:2026-09-28,x402 在 `$ADEXTO` 上向一个非部署者地址交付了一笔。因此,这证明交易流程可用,但不能证明存在外部需求。最重要的是卖出流程:先执行 `approve`,再针对曲线执行 `sell`,这是债券曲线通常被指责缺少的退出路径。 | | 面向 AI Agent 的 MCP 服务 | **已上线,提供 14 个工具** | `https://adexto.xyz/api/mcp` 对 `tools/list` 的响应包含 `list_markets`、`get_market`、`quote_buy`、`how_to_pay`、`buy_token`、`pay_and_buy`、`trade_history`、`check_stake`、`access_message`、`ask_agent`、`prepare_launch`、`register_launch`、`prepare_stake` 和 `prepare_claim`;这些工具从网站使用的同一注册表中解析数据,因此刚启动一分钟的市场也能在第一次请求时返回。服务支持 2026-07-28 MCP 修订版(无状态、`server/discover`)以及通过 `initialize` 打开的 2025 客户端。`prepare_launch`、`register_launch`、`prepare_stake` 和 `prepare_claim` 工具让 Agent 可以用自己的密钥启动、质押和领取:它们返回未签名交易,Agent 的密钥永远不会传到服务端。2026-10-03 在 Monad 主网上完成端到端测试:一个钱包注册了自己的 ERC-8004 身份,启动并绑定到该身份的 `$LOOP`(两次调用 `prepare_launch`,在本地签名并发送,然后调用 `register_launch`);第二个钱包通过 MCP `buy_token` 使用 Base 上的 0.10 USDC 经由 x402 购买 `$LOOP` 并通过 `prepare_stake` 质押,之后 `ask_agent` 返回了回答。当天晚些时候在 Arbitrum One 上用同两个钱包重复了相同测试:当地的 `$LOOP` 绑定到 Agent `1578`,并在 Arbitrum One 的质押中心中完成质押。绑定了 ERC-8004 Agent 的市场会在 [/agents](https://adexto.xyz/agents) 中列出链上 Agent Score。一个代码可以在多条链上交易,因此市场工具和 x402 网关都接受 `chainId`(网关上使用 `?chain=`);如果不指定,则使用该代码最早的市场。`ask_agent` 只会回答在该市场质押合约(该市场自己的合约或其所在链的质押中心)中拥有有效质押的地址,且必须通过签名的 `access_message` 证明。`pay_and_buy` 会在服务端完成购买,并如实说明其方式:**签名由此服务上的运营者密钥生成,并非由模型控制的钱包生成。**该工具受 `x-agent-key` 请求头限制,金额上限为 `0.20 USDC`,所有参数(接收方、资产、金额)都取自网关自身的质询,而非模型,因此即使 Agent 完全受到提示词注入攻击,最多也只能购买我们自己的市场,并将款项发送到我们自己的金库。 | | 自有 AMM(`AdextoCurve`) | **每次启动时部署** | 曲线随工厂一同部署,每个市场一个。 | | Agent 推理(0G) | **可用** | 市场 Agent 的聊天通过 0G Compute Router 运行(默认模型为 `glm-5.3`)。路由器会报告每个模型均通过 dstack 获得 Intel TDX 证明,我们会准确展示其报告内容。该标签是路由器自己的说法,并会注明来源,因为我们不会自行获取或验证原始证明。 | | Agent 计算(质押以获取 API 密钥) | **已在全部六条主网上线;四种质押提供分级额度,其余市场的额度由费用提供** | 在 0G 上的 `AdextoAgentStake` 中至少质押 5,000 $ADEXTO,或者在 Monad、Arbitrum One 或 Robinhood Chain 上某个 `$SAI` 市场的质押合约中至少质押 10,000 `$SAI`(见下一行),该地址即可获得对应代币的 API 密钥,用于访问兼容 OpenAI 的端点 `https://compute.adexto.xyz/v1`,该端点通过 0G Compute 路由器提供 `0g/deepseek-v4-flash`。密钥按代币区分:页面是一个清单,每个已勾选的代币都有独立质押、独立密钥和按该代币质押等级设定的额度,签名消息会注明代币。**所有其他市场**也会列出,并从注册表读取,因此新市场启动后无需修改代码即可显示:在其所在链的 `AdextoStakeHub` 中至少质押该市场总供应量的 0.001%,即可获取无分级额度的密钥。其可用额度会根据该市场交易所支付的 0.10% 协议费中的 50% 累积;费用按扫描读取曲线时的原生代币价格估值,再按每百万模型代币 $0.3168 换算(即该模型在 0G 上的价格,输入和输出按 90/10 混合计算),由质押者共享,且只统计密钥发放后支付的费用。因此,中心密钥初始没有额度,在累积到至少一次最低请求所需额度(823 个代币)前,会在路由器上保持禁用状态;无人交易的市场无法提供计算资源。按当前价格,约 $0.52 的交易额可支付一次最低请求。2026-10-02 在 Monad 上完全由部署者完成端到端测试:使用其 `$PARCEL` 中心质押发放的密钥在初始状态下已禁用,且没有累积额度;一笔买入再卖出的 10 MON 往返交易支付了 `0.01996 MON` 协议费;下一次扫描为该密钥计入 `1,059` 个代币(不共享该市场此前产生的费用),并将其启用;密钥随后成功处理请求。路由器记录使用了 831 个代币后,下一次扫描将其禁用,剩余 228 个代币,不足一次请求所需额度。随后该密钥被撤销。密钥仅显示一次,网站不会存储。2026-10-04 从链上读取:0G 上质押了 10,000 $ADEXTO。只有质押记录在链上;可用额度通过定期扫描路由器使用情况来执行,因此密钥可能超出额度,最多多出一次扫描周期的用量。 | | 市场质押(`ask_agent`) | **所有市场均已上线** | 四个市场各自拥有一个 `AdextoAgentStake`;所有其他市场(包括每个新启动的市场)从第一个区块起,都会在其所在链的 `AdextoStakeHub` 中质押(地址见[主网部署](#mainnet-deployments)),最低质押量为其供应量的 0.001%。四个专用质押合约分别是 0G 上的 $ADEXTO 质押合约(见上方 Agent 计算行,最低质押量为 5,000 ADEXTO,于 2026-10-01 被列为市场质押,因此其代币页面和 `ask_agent` 也会读取该合约),以及 Monad、Arbitrum One 和 Robinhood Chain 上 `$SAI` 的 `AdextoAgentStake`;它们均在市场启动后由 `scripts/deploy-market-stake.mjs` 部署:最低质押量为 10,000 SAI,无所有者、无锁定期、无奖励,且均通过 Sourcify 精确匹配。任一合约中的质押都会通过 MCP 开启该市场的 Agent:`ask_agent` 会针对签署 `access_message` 的地址,在合约(对于中心合约则是指定代币的质押记录)上检查 `isActive`,并在该次调用中根据链上读取的数据回答。相同的质押也计入 Agent 计算密钥(见上一行)。每个代币页面都会显示质押面板;`src/config/market-stakes.ts` 中列有该市场自己的合约时使用该合约,否则使用质押中心。 | | x402 边缘网关 | **在 Base 上结算;已在全部六条主网上提供付费交付** | 报价、付款和交付通过同一端点完成。已在全部六条链上测试付费交付:0G、Base、Arbitrum One、Monad、Robinhood Chain 和 Arc。Arc 上的首次交付是在区块 `24465562`,交付了 `24,006.92 SAI`,交易为 [`0xf1569a02…8efe`](https://explorer.arc.io/tx/0xf1569a0240333edd81cbd693e54af3ac53180e46d027765ced65eb8c97a78efe),随后在 Base 上以 [`0x7da5096c…f3e7`](https://basescan.org/tx/0x7da5096ca9c4467069625967f1de287630d41ea0b9ee35a5c5a3f1d21c22f3e7) 结算了 `0.10 USDC`。`DELIVERY_RPC` 会将所选市场的 `chainId` 映射到对应端点;对于像 `$SAI` 这样在多条链上交易的代码,可使用 `?chain=` 消除歧义。通过 EIP-3009 授权在 Base 上收取 USDC,目标链上的曲线则将代币发送到买家的地址。交付先于扣款执行,因此成交失败的成本由我们承担,而非买家。2026-10-05,Robinhood Chain 上的首次交付在区块 `80802140` 交付了 `23,818.8894 SAI`,交易为 [`0xfe7edd…33c195`](https://robinhoodchain.blockscout.com/tx/0xfe7eddf599e9f53afb6fe1346bfdd95643cce93ad77c53b3e863d91f3a33c195);六秒后在 Base 上以 [`0x06f24c…37e271`](https://basescan.org/tx/0x06f24c7151b5422f142078ab9c2f2041f1d631e89916e874845a3dea5537e271) 结算了 `0.10 USDC`。买家是通过 MCP `buy_token` 使用自己的密钥签名的演示 Agent 钱包,其在两条链上的交易计数都保持为 `0`。该笔成交使用了 `117,601` 单位燃料,其中 `1,642` 被报告为 `gasUsedForL1`,由中继器支付的费用为 `0.0000024 ETH`。2026-10-01,Arbitrum 上 `$SAI` 的首次交易交付了 `24,013.3828 SAI`,交易为 [`0xbed111…3773b0`](https://arbitrum.blockscout.com/tx/0xbed111e865d325f24ca68fb9bdb44f87f3e979e78b706e967791a3e8e23773b0),随后在 Base 上通过 `0xe76dd0…4d797` 结算了 `0.10 USDC`;买家的交易计数在两条链上都没有变化。更早的成交全部 `status 1`,均由中继器 `0xDe1f…C627` 提交,其中包括 Monad 上的 `$PARCEL`、Arbitrum 上的 `$WOMBO`、Base 上的 `$BLOOP` 和 0G 上的 `$ZEEBO`。x402 交付就是普通的 `buy`,因此会支付相同的费用,并增加回购金库余额,而不会在链之间转移收入。详见 [x402 边缘网关](#x402-edge)。 | | 0G DA 元数据锚定 | **已上线** | 启动元数据会被锚定,其存储根以 `metadataRoot` 的形式随调用数据传递。全部 12 个已列出市场都包含 `daStorageTx`;2026-10-06,在 0G 主网上读取的这 12 笔交易状态均为 `status 1`,包括通过 MCP 发起的三个市场:两个 `$LOOP` 市场和 SAi Arc。如果 0G 存储节点落后于链,上传会在 45 秒后放弃:随后启动会继续执行,并使用元数据字节的 keccak 承诺,同时报告 `daStorageOk: false`,而不是一直等待反向代理将 API 响应替换为 HTML 超时页面。 | | The Graph 索引 | **已在 Base 和 Arbitrum One 上线,涵盖全部三代工厂,包括 v1** | `adexto-base` 和 `adexto-arbitrum` 的 `v1.0.1` 已同步到链头,且 `hasIndexingErrors: false`;这些链上的每个实时市场都返回其曲线存储的数值。2026-10-06 读取:Base 上 `$BLOOP` 的 `swapCount` 为 2,`volumeNative` 为 80300218841094;Arbitrum One 上 `$WOMBO` 的 `swapCount` 为 5、`volumeNative` 为 200113996278028,SAi Arbitrum 的 `swapCount` 为 2、`volumeNative` 为 71640800989138,`$LOOP` 的 `swapCount` 为 1、`volumeNative` 为 36230801410387。`v1.0.0` 为 v1 工厂添加了数据源,并像曲线一样按卖出的总值计数;`v1.0.1` 返回完全相同的实体,仅修改了架构文档。The Graph 在 0G、Monad 和 Robinhood Chain 上没有 Subgraphs 服务。2026-10-06 发布到 The Graph Network,未使用策展信号。详情见 [The Graph](#the-graph)。 | | 交易历史、持有者和持仓 | **从每个市场启动区块起完整记录** | `src/lib/market-index.ts` 会为每个市场索引自启动区块以来的所有代币 `Transfer` 和曲线 `Swap`,数据存储在磁盘上,并在每次请求时从上次扫描的区块继续扩展;扫描位置比链头落后若干个确认区块,避免链重组产生虚假的转账。这使持有者列表、你的持仓及其盈亏,以及超出日志窗口范围的图表历史成为可能。向前回溯的 RPC 扫描会通过 16 次调用提供最新成交;如果该链有索引器,则会优先使用(Monad、Robinhood Chain 和 Arc 上的 Envio;Base 和 Arbitrum One 上的 The Graph)。每条链的 `eth_getLogs` 扫描范围都会实际测量,而不是凭空假定(0G 现在拒绝任何超过 100,000 个区块的范围;自 2026-10-05 起,Base 的公共端点拒绝任何超过 500 个区块的范围;自 2026-10-06 起,Arbitrum One 的公共端点在单个筛选位置包含多个值时拒绝任何超过 100,000 个区块的范围,不过每个筛选位置只有一个值时,500,000 个区块仍可通过)。每次运行时,`audit_consistency.mjs` 都会使用应用实际发送的最宽筛选条件,针对实时 RPC 测试每条链上已配置的扫描范围,因为范围过宽导致的失败与“尚无交易”在 UI 中无法区分。MCP 的 `trade_history` 工具会按相同顺序读取相同数据源:Envio、然后是子图,最后是此索引与扫描结果的合并数据。2026-10-06 读取结果显示,全部 12 个市场的 `complete: true`,且返回行与代币页面一致:`$ADEXTO` 26 笔,`$PARCEL` 19 笔,`$ZEEBO` 6 笔,`$WOMBO` 5 笔,Monad 上的 `$LOOP` 和 SAi Robin 各 3 笔,`$BLOOP` 和 SAi Arbitrum 各 2 笔,`$ADT`、Arbitrum One 上的 `$LOOP`、SAi Monad 和 SAi Arc 各 1 笔。该工具只列出 `Swap` 事件,因此 `$ADEXTO` 显示为 26,而其曲线的 `swapCount` 为 27:合约还会计入一次金库回购。如果某个市场的索引仍在追赶链头,响应会显示 `complete: false`,并指出尚未读取的区块范围,而不是把不完整的列表当作完整历史。 | | Envio 索引(Monad、Robinhood Chain、Arc) | **已上线;Monad 上 `0.11.0` 和 v1 的完整历史,以及 Robinhood Chain 和 Arc 上 v1 的完整历史** | 自 2026-10-05 起,[`envio/`](envio/) 也会索引 Robinhood Chain(4663)上的 v1 工厂及其部署的所有曲线;自 2026-10-06 起,还会索引 Arc(5042)上的 v1 工厂,网站从这里读取这些链上的交易历史。每个 ID 都采用 `_` 格式,因为 Arc 和 Robinhood Chain 上的工厂地址相同,对应序号的启动地址也相同:Arc 上的 `$ARCTEST` 与 Robinhood Chain 上的 `$SAI` 正好占据相同位置。2026-10-06 完整重新索引后读取:SAi Arc 的 `swapCount` 为 1,未列出的 `$ARCTEST` 为 0,SAi Robin 为 3;它们分别显示为独立记录,每条记录都包含曲线存储的 `volumeNative`。在 Monad 上,它同时索引 `AdextoFactory` `0.11.0` 和 v1(`1.0.0`),以及它们在 143 号链上部署的所有曲线;每条曲线的 `curveVersion` 均来自启动该曲线的工厂。2026-10-05 完整重新索引后读取:`$PARCEL`(`0.11.0`)的 `swapCount` 为 19,SAi Monad(`1.0.0`)为 1,`$LOOP`(`1.0.0`)为 3;每条记录都包含曲线存储的 `volumeNative`,其中计入卖出。HyperSync 在不到 45 秒内覆盖了自 `0.11.0` 工厂部署以来的全部 1.93M 个区块;通过 `rpc.monad.xyz` 扫描相同范围约需六小时,因为该端点将 `eth_getLogs` 的范围限制为 100 个区块。此索引器独立构建,而非在子图中再增加一个网络,因为 `graphprotocol/networks-registry` 将 `monad` 列为**不支持** Subgraphs(仅支持 Firehose 和 Substreams)。通过对照合约存储而非索引器自身进行验证:涵盖两个 Monad `0.11.0` 市场的 22 个数据,包括实时费用账本。需要免费的 `ENVIO_API_TOKEN`。[详情](envio/README.md)。 | | 无管理权限 | **由合约保证** | 所有费用率都是 `immutable`,启动流程中的任何合约都没有所有者或 setter,曲线中也没有提现函数。因此,任何费用率都无法被转移,任何市场都无法被掏空,也无法通过升级更改交易者已同意的条款。这是协议的核心保证,可在 `contracts/` 中核查,而非仅靠承诺。 |

深入探讨

ERC-8004 Agent 身份

它可以正常工作,并且默认关闭,只有在你主动启用时才会开启。 启动时传入 Agent ID,AdextoFactory 就会在 ERC-8004 身份注册表上调用 ownerOf(agentId),除非你拥有该 Agent,否则会拒绝启动。这样,代币就无法绑定他人的身份并继承其声誉。省略 ID,启动就只需一笔交易,且不附带 Agent。

说明

准确说明范围:此集成仅涉及身份注册表。 该标准包含三个注册表,启动时真正重要的是所有权。启动不需要声誉和验证功能,因此不会触及它们,也未实现 supportsInterface。把这称为“符合 ERC-8004”会把一个注册表夸大成三个。

身份注册表0x8004A169FB4a3325136EB29fA0ceB6D2e539a432,六个主网上的地址相同,且已验证可响应 ownerOf
我们自己的 Agent已在五个主网上注册:Monad 10247 和 10251、Arbitrum One 1457、Base 84622、Arc 1422 和 0G 3545431;每个都经 ownerOf 确认归部署者所有(2026-10-04;Arc 为 2026-10-06)。Monad 有两个,因为在 Monad 工作期间又注册了一个;10251 是 $PARCEL 绑定的 ID。部署者在 Robinhood Chain 上没有 Agent:那里绑定的 6525 属于创建并启动 SAi Robin 的钱包
启动时验证在 Monad、Arbitrum One、Robinhood Chain、Arc 和 0G 上。 列出的 12 个市场中,有 7 个读取到 agentBound true。第一个 $ADEXTO 市场也读取到 agentBound true, agentId 3545431,而当前上线的市场没有,因为重新启动时丢失了绑定。 见下文
回归问题,之所以说明是因为它无法撤销当前上线的 $ADEXTO 市场丢失了绑定。 0.10.0 市场 0x0860a80f…37C6 绑定了 3545431。为加入协议费部分而重新启动到 0.11.0 时,脚本在 scripts/relaunch-market.mjs 中硬编码发送了 bindAgent: false,尽管同一脚本谨慎保留了所有费率。agentBound 是 immutable,因此 0xA1358C17…1DF7 永远无法绑定;只有再次重新启动才能修复。该脚本现在会读取旧代币的绑定并沿用,如果 Agent 已不再归我们所有就拒绝继续,并在触及注册表前断言新创建代币的 agentBound
测试网上的注册表不存在,因此只能在主网或本地开发链上验证 Agent 路径
标准状态EIP-8004 是一份草案,因此我们集成所依据的内容仍可能变化。这里说的是 EIP,而不是我们的代码
注册表的控制方不是我们。 它是由第三方拥有的可升级代理,因此其行为可能在我们未参与或未同意的情况下发生变化
声誉/验证注册表未使用
查询代币信息agentBound(),然后是 agentId() 和 agentRegistry()

ADEXTO 运营的 Agent 都指向永久卡片。 每个 Agent 都通过 setAgentURI 将其 agentURI 设置为 https://adexto.xyz/agents/<chainId>/<agentId>/registration.json。该文件列出 MCP 和 x402 端点,并包含一个指回该身份的 registrations 条目。scripts/check-agent-cards.mjs 会检查每张卡片;截至 2026-10-04,10 张卡片全部通过。

链Agent所有者绑定市场设置卡片的交易
Monad10247部署者无0x0b0c971a…14cc
Monad10251部署者$PARCEL0x4fe88217…1292
Monad10275创建者钱包SAi Monad0x7219def8…7399
Monad10276 Loop Agent创建者钱包$LOOP0x59eded5a…c4ac
Arbitrum One1457部署者无0x24efbf3c…7c8d
Arbitrum One1566创建者钱包SAi Arbitrum0x8022d2b5…9d28
Arbitrum One1578 Loop Agent创建者钱包$LOOP0x48d605be…e0fa
Robinhood Chain6525创建者钱包SAi Robin0xa61fc8aa…509e
Base84622部署者无0x9c833c3e…114
0G3545431部署者首个 $ADEXTO(0.10.0)0x07ff15e6…6115

部署者是 0x8a3c…ee7D;创建者钱包是演示钱包 0x4247…daa5,它在启动前注册了自己的 Agent。两个 Loop Agent 都在启动前通过该钱包自行注册,然后通过 MCP 发布 $LOOP,它们的卡片使用市场自己的徽标。托管卡片的代价是,任何控制 adexto.xyz 的人都可以更改卡片内容;无论哪种情况,代币绑定的市场都不可变。

否则会让你栽跟头的五件事,第一件已经让我们栽了

重新发布会丢失绑定,除非有东西将它保留下来。 首个 $ADEXTO 市场由 0.10.0 工厂创建,地址为 0x0860a80f…37C6,其读取结果为 agentBound true、agentId 3545431、agentRegistry 0x8004A169…a432。为了让市场支付协议费用部分,该市场被重新发布到 0.11.0;当前市场 0xA1358C17…1DF7 的读取结果却是 agentBound false、agentId 0,注册表地址为零地址。

没有任何操作失败。scripts/relaunch-market.mjs 将 bindAgent: false 和 agentId: 0 作为字面值发送;就在同一个文件里,它还费尽心思保留每一项费用率,以确保“唯一的区别是协议费用部分”。交易成功了,发布后的每项检查都通过了,却没有任何代码读取刚创建的代币上的 agentBound()。由于 agentBound 是 immutable,当前市场永远无法绑定。只有再次重新发布才能恢复绑定,但那样会舍弃该市场的交易历史。

现在,该脚本会从旧代币读取 agentBound()、agentId() 和 agentRegistry(),检查 ownerOf(agentId) 是否仍返回部署者,并在即将未绑定的情况下停止而不继续;它会将该 id 传递给 deployTrinity,然后在触碰注册表之前,从新创建的代币读取绑定信息。参数正确和结果正确是两回事,这个 bug 就出在两者之间的空隙里。

**没有链就没有意义的 Agent ID。** 在六条主网中,注册表都位于同一个地址,这容易让人以为 ID 是全局唯一的。事实并非如此:每个注册表都维护自己的状态。2026-10-06,`ownerOf(0)` 在六条链上返回了四个*不同*的所有者。部署者自己的注册结果中,同一个 Agent 在 Base 上的 ID 是 `84622`,在 Arbitrum 上是 `1457`,在 0G 上是 `3545431`,在 Monad 上是 `10247`,在 Arc 上是 `1422`;此外还有 `10251`,这是第二个 Monad 注册,也是 `$PARCEL` 绑定的那个。在多条链上用同一个 ID 启动,只会在该 ID 所属的链上绑定,在其他链上则会因 `Factory: agent not owned by caller` 而回滚,而且每笔交易都已消耗 Gas。每条链都注册一次,并传入该链的 ID。

绑定是独立于启动的步骤。 ERC-8004 要求注册文件包含自己的 agentId,而 ID 只有在 register() 返回后才会存在,因此提前固定的文件无法包含它。创建者先注册,再将 ID 传入启动流程。不填写身份信息可让启动只需一笔交易,因此仅 Gas 成本这一特性不受影响。

工作室可以自行完成注册:由创建者使用自己的钱包在选定的链上发起一笔 register() 交易,随后从铸造事件中读取新 ID,并填入启动表单。该文件是在 ID 尚不存在时构建的,工作室会有意跳过第二笔 setAgentURI 交易,因此文件不包含自己的 agentId,也没有指向该身份的 registrations 条目。scripts/register-agent-8004.mjs 采用更完整的流程,并会写入包含该 ID 的文件。

应读取 agentBound() 标志,而不是 agentId()。 Agent ID 0 在六条主网上都是真实 Agent,且都有真实所有者,因此 0 不可能表示“没有 Agent”。早期版本曾将 agentId == 0 用作该哨兵值;在它被固化到不可变字节码之前,对实时注册表进行测试发现了这个问题。

在配置好 IPFS 固定存储之前,注册文件使用 data:。 ERC-8004 允许使用 base64 编码的 data: URI 存储完全在链上的元数据,这里默认采用这种方式,因为无人固定存储的 ipfs:// CID 会永久留下一个失效链接。设置 PINATA_JWT 即可改用固定存储;CID 会在本地重新计算,并与服务报告的结果进行比对。这一点很重要:一项针对 ERC-8004 的实证研究发现,大多数注册都是没有可用端点的占位符(arXiv 2606.26028);而读取这六条链中四条链上的 Agent #40 后发现,0G 上是空字符串,Monad 上是未编码的原始 JSON,Base 上则是一个内嵌 ID 与代币不匹配的 HTTPS URL。

脚本从铸造的 Transfer 事件中读取 ID,而不是假设 ID 按顺序递增,然后使用包含该 ID 的重建文件调用 setAgentURI。

node scripts/register-agent-8004.mjs --chain base              # dry run, no gas
node scripts/register-agent-8004.mjs --chain base --broadcast   # registers, then sets the URI
node scripts/test-erc8004-binding.mjs                          # 24 assertions, local devchain

在四条链上注册部署者的 Agent,总共八笔交易,花费约 $0.10;将前八个 Agent 指向各自的卡片,Gas 约花费 $0.05。

Agent 对 Agent:闭环之处与断裂之处

这正是将 Agent 身份与绑定曲线配对的意义所在,而且闭环的每条边都能端到端传递价值,并已用真实资金验证,而非仅凭推理得出。买家无论是人还是 Agent,都无需人工、账户或银行卡即可付款。买到的是另一条链上市场中的头寸,这笔钱最终会到达代币本身。

边界状态证据
Agent 拥有链上身份可用ERC-8004 绑定;在启动时通过 ownerOf(agentId) 验证
大模型可以驱动整个流程可用,但需明确签名者/api/mcp 上的 MCP 服务(目前有 14 个工具)。一个在 0G Compute 路由器上运行 zerog/glm-5.3 的 Agent 发现了 $ZEEBO,获取报价、完成购买,并读取了成交结果。该授权由此服务上的运营方密钥签名,而非由 Agent 签名;有关这种设计方式及其上限的原因,请参见 x402 边界。持有自身 USDC 的 Agent 可通过 buy_token 自行签署授权,买家钱包在 2026-10-03 两次购买 $LOOP 时就是这样做的
买家发现交易条款可用HTTP 402 + WWW-Authenticate: x402 + x402 v2 accepts[],其中包含资产、金额、收款方和完整报价
买家证明其有能力付款可用恢复 EIP-3009 签名并与 from 匹配,同时检查余额和链上 nonce 状态
买家实际付款可用在主网 USDC 上调用 transferWithAuthorization。0.10 USDC 从付款方转入财库;重放的授权会被拒绝
买家收到代币可用曲线的 buy 函数接受接收方,因此代币会直接发送到付款方地址,且数量高于报价中的 minTokensOut
收益用于购买代币可用向曲线进行普通原生代币转账,且 calldata 为空,即可执行市场买入
Agent 销毁其购买的代币可用executeTreasuryBuyback 会从调用者自己的余额中销毁代币,并受 agentIdentity 和曲线限制

因此,整个闭环目前已可运行,无需新增合约:买家在一条链上付款,曲线在另一条链上交付;曲线上花费的原生代币可以用于回购并销毁代币,从而永久减少供应量。

最后两个边界的验证方式,以及在此基础上构建前需要了解的两项机制

最后两个边界是在 0G 主网上通过实际操作验证的,而不是推测得出的。向曲线发送 0.003 0G 且不带 calldata,返回了 148.317329 枚代币、增加了 swapCount,并改变了现货价格,因为 receive() 会将调用路由到 _buy。随后,executeTreasuryBuyback 销毁了其中的 74.158664 枚,totalSupply 恰好减少了相同数量。随机地址调用同一函数时会被拒绝,并返回 Unauthorized agent。

  • 销毁资金来自交易,无需任何人决定即可执行,且供应量已经减少。 treasuryNative 通过交易手续费中的回购部分获得资金,因此既不能向其中存入资金,也无须这样做:x402 交付本身就是一次 buy,因此会为该部分付费,并让金库在每次成交时增长。购买结算后,边界会通过 executeBuyback 使用金库中的资金进行回购并销毁,但前提是金库价值至少达到触发所需 gas 费用的 3 倍:一次调用约需 0.0005 0G,而每次成交贡献 0.000257 0G,因此若每次都销毁,销毁的价值会低于支出。该条件会读取链上状态,无须等待人工操作。首次销毁了 7.110759702852663544 $ADEXTO,使总供应量降至 999,999,918.730575824909329011:0x792023ab…8ab66bc5。executeBuyback 不限制调用者,因此销毁不依赖我们运行该函数;这一点已通过模拟随机地址调用得到验证。
  • agentIdentity 在启动时设置一次,且不可更改。 在运行中的 $ADEXTO 代币上,它是 0x8a3c…ee7D。该权限用于限制销毁操作,因此在启动时选择地址,就决定了谁能在市场存续期间触发销毁。
x402 边界

它只卖一种东西:买家用自己持有的 USDC,买入其中一个市场的头寸。 在 Base 上支付 0.10 USDC,市场所在链上的曲线就会把代币发送到你自己的地址,无需跨链桥,也无需持有该链的 Gas 资产。六个主网均已接入交付,且六个主网上均已完成付费交付:Monad、Arbitrum One、Robinhood Chain、Base、0G 和 Arc。市场也位于 Base 时,支付和交付都在同一条链上完成,没有任何资产跨链:代码路径相同,少一次跳转。

步骤状态实际发生的事
1. 报价可用未付款的调用会收到 HTTP 402、WWW-Authenticate: x402 标头,以及一个 x402 v2 accepts[] 块,其中列出资产、确切金额、收款方和超时时间;此外还会附带一个 quote,说明曲线、花费的原生代币金额,以及此次买入不会低于的 minTokensOut。
2. 验证付款可用调用方为 USDC 签署 EIP-3009 TransferWithAuthorization:采用类型化数据,因此无需 Gas,也无需授权额度。系统会恢复签名并与 from 匹配,从 USDC 合约而非请求中读取 EIP-712 域,并在执行其他操作之前检查链上 nonce。
3. 先交付,再收款可用曲线会先以付款方作为接收方执行 buy。只有在该交易收据确认后,才会向 USDC 提交授权。响应正文会返回两笔交易的哈希,结算结果也会在 X-PAYMENT-RESPONSE 中重复返回。

第三步曾经缺失,如今已通过真实资金完成,而不是仅仅宣告完成。一次请求在 Base 上完成结算,并在 16.2 秒后于 0G 上完成交付;重放的授权会被拒绝,并返回 invalid_transaction_state。完整的载荷参考、状态码和两笔交易的哈希见:adexto.xyz/x402。

信任边界、库存,以及 LLM 可完成的购买流程

有三件事很容易被一笔带过,但不应该:

  • 结算依靠的是 USDC 自身的签名验证,而不是我们自创的方案。 EIP-3009 TransferWithAuthorization 由代币合约本身验证,因此无需信任托管方,也无需让集成方学习任何自定义机制。若调用方仍发送已弃用的 X-402-Authorization 标头,系统会明确拒绝并说明原因,而不是静默失败。
  • 中继器密钥已充值并正在使用,其影响范围也经过刻意限制。 系统会读取并使用 X402_RELAYER_PRIVATE_KEY 来提交两笔交易。该密钥属于专用运营方,而非部署者:部署者密钥从未放入 Worker。由于 transferWithAuthorization 无需许可,且其全部内容(包括 to 和 value)都由付款方签名,该密钥无法转移任何人的资金,也无法更改付款去向。密钥泄露最坏只会导致 Gas 和库存被耗尽。
  • 两笔交易并非原子操作,交付能力也有限。 付款在 Base 上结算,而交付发生在目标链上,链上没有任何机制将两者绑定。由于交付成功前不会扣款,买家没有资金风险,但确实需要依赖我们提交该笔 buy。完成订单也意味着要花费我们持有的原生代币库存,因此端点会在库存不足时返回 503,且不会触及任何授权。

这一边界明确体现在载荷中,而非文字说明里:每个 402 响应都会携带 quote.inventory.remainingBuys 和 quote.inventory.inStock,因此集成方从首次响应中就能获知限额,而不是等到构建付款客户端后才发现。

所有交付目标都不是硬编码的。 Worker 中的 DELIVERY_RPC 会将市场的 chainId 映射到相应端点,因此目标链取决于行情代码最终解析到的市场。付费交付的交易哈希见状态表。

要让它在 ETH 链上正常运行,只需修正一个数字。这个数字看起来无伤大雅,值得记录下来。库存门槛原本是 `gasHeadroom = parseEther("0.05")`:在任意链上预留 0.05 个原生代币。在 0G 和 Monad 上,这还不到一美分;而在 Base 和 Arbitrum 上,这是 0.05 ETH,约合 120 美元。必须有这笔资金闲置,才能允许一笔 0.10 美元的成交。症状是报价同时显示 `remainingBuys: 7` 和 `inStock: false`。现在,门槛改为该链的 gas 价格乘以 150,000 gas 再乘以 3;如果无法读取 gas 价格,则回退为订单原生代币金额的 1%。这样会随订单大小按比例变化,因此不会再出现固定的 120 美元门槛。

大模型可以完成购买,但要如实表述这一点很重要。MCP 服务提供十四种工具,其中 pay_and_buy 可在服务端完成购买:Agent 选择市场和购买数量,而 EIP-3009 授权由本服务上的运营者密钥签署。Agent 不持有资金。任何条款(接收方、资产、金额)都会从网关自己的 402 挑战中读取,并在签名前与硬编码的限制进行比对;由于代币始终转给签名者,交付地址绝不会暴露;整个端点还受 x-agent-key 请求头控制,并将金额上限设为 0.20 USDC。因此,准确的说法是Agent 决定买什么并执行了购买,而不是Agent 用自己的资金付款。我们已在 0G 上针对 $ZEEBO 端到端测试此流程:购买交易在区块 44560323 成功,随后于 Base 的 51419336 区块完成结算。持有自身 USDC 的 Agent 则使用 buy_token 并自行签署授权;两个 $LOOP 市场均于 2026-10-03 以这种方式购入,SAi Robin 也于 2026-10-05 在 Robinhood Chain 上以这种方式购入。

The Graph

已部署至 Base 和 Arbitrum,并由网站读取:SUBGRAPH_URL_* 指向这两个子图。清单和各网络配置由 subgraph/chains.json 与 build/deployments.json 生成(在 subgraph/ 中运行 npm run networks)。

SubgraphVersionEndpoint
adexto-basev1.0.1https://api.studio.thegraph.com/query/1757874/adexto-base/v1.0.1
adexto-arbitrumv1.0.1https://api.studio.thegraph.com/query/1757874/adexto-arbitrum/v1.0.1

两个子图自 2026-10-06 起均已发布至 The Graph Network 的 Arbitrum One,由部署者 0x8a3c…ee7D 持有,且没有策展信号:ADEXTO Base 和 ADEXTO Arbitrum One。该网络提供与 Studio v1.0.1 相同的部署(Base 上为 QmT1W8wY…qGCj9m,Arbitrum One 上为 QmYpYjRU…ehvMo9),发布时使用的标签为 v1.0.0。网站读取上文的 Studio 端点。

**v1.0.1 仅修改了文档。**其映射、ABI、数据源和起始区块与 v1.0.0 完全一致,两个清单仅有一行不同:schema 文件,其注释和字段说明已翻译为英文。Studio 不允许将已有版本标签用于新的部署,因此采用了补丁版本。 v1.0.0 会索引全部三代工厂,包括 v1。 此标签沿用 ADEXTO v1 的版本号。同一构建最初以 v0.12.0 部署到 Studio,因此两个标签在每条链上都对应同一次部署(Base 上为 QmeRWYsg…NV3jQ6,Arbitrum One 上为 QmRRZJM8…jsfTcxr)。v1 工厂有自己的数据源 AdextoFactoryV1。v1 发出的事件与 0.11.0 完全相同(TrinityProjectDeployed、AgentBound、CurveInitialized 和包含 11 个字段的 Swap 具有相同的签名和 topic0),这一点已通过 scripts/verify-subgraph.mts 对照合约源代码验证,并通过 Arbitrum One 上真实的 v1 日志验证,因此它复用了 0.11.0 的 ABI 和曲线模板,只添加了工厂地址。生成 networks.json 的生成器也随之更改:现在会按合约名称和版本匹配每个数据源,并且只要有任何活跃市场来自没有数据源覆盖的工厂,就会拒绝写入。旧规则“当前条目”和“最新的已取代条目”会把 v1 地址写入 0.11.0 数据源,并在 v1 成为当前版本时移除 $BLOOP 和 $WOMBO。

六条链中有三条无法使用 Subgraph Studio。这是 The Graph 的覆盖范围所致,并非我们的选择,信息来自其网络注册表(v0.8.6)。Arc 可以使用 Subgraph Studio,但我们选择用 Envio 为其建立索引,与 Monad 和 Robinhood Chain 使用同一个索引器:

链目标原因
Arbitrum One、BaseSubgraph Studio提供 Subgraph 服务,并启用索引奖励:已部署并发布,见上文
Monad改用 Envio已列出,但仅由 Firehose 和 Substreams 提供服务,不提供 Subgraph 服务
Robinhood Chain改用 Envio已列出,但仅由 Firehose 和 Substreams 提供服务,不提供 Subgraph 服务
ArcEnvio提供 Subgraph 服务。我们选择用 Envio 为其建立索引,使用已覆盖 Monad 和 Robinhood Chain 的索引器
0GRPC 日志和市场索引完全未列入 graphprotocol/networks-registry
v0.11.1 存在的原因、v1.0.0 中的卖出交易量修复,以及更早的版本

v0.11.0 在两条链上都没有索引任何内容,而 v0.11.1 的存在就是为了解决这个问题。 很长一段时间里,结果为空是正确的:Base 和 Arbitrum 有工厂,但没有市场。后来 $BLOOP 和 $WOMBO 出现了,但端点依然为空,尽管它们已同步到远超这两个项目部署区块的位置,且 hasIndexingErrors: false。

问题出在已发布的构建中,而不是映射中。subgraph/networks.json 是生成文件,而提交的副本在每个网络上都将 AdextoFactory(0.11.0 这一代)记录为 0x0000000000000000000000000000000000000000,并且使用的是旧工厂的 startBlock。因此,已部署的清单只配置了 0.10.0 数据源,而 0.10.0 在 Base 或 Arbitrum 上都没有创建任何市场。指向零地址的数据源不会索引任何内容,而且会报告自身运行正常,这正是为什么值得对照链上状态检查索引器,而不是只看它自身的状态字段。

npm run networks 会用真实地址和起始区块重新生成该文件,而 v0.11.1 就是重新发布到 Studio 的这一构建。两条链上的结果都证实了这一点,数据读取于 2026-09-30:Base 返回一个项目 BLOOP,其中有一条曲线,curveVersion 0.11.0、swapCount 2、volumeNative 80300218841094;Arbitrum 返回 WOMBO,其 swapCount 5、volumeNative 200113996278028。两种情况下的数字都与曲线合约存储的数字一致。

这两个端点都不是关键依赖:SUBGRAPH_URL_0G 为空,0G 交易来自 RPC 日志和市场索引,而 Monad 由 Envio 提供服务。两个测试网 slug adexto-base-sepolia 和 adexto-arbitrum-sepolia 虽然在 chains.json 中命名,但从未在 Studio 中创建,因此向它们部署会返回 Subgraph not found。它们索引的是 0.10.0 工厂,而且两条链上都没有市场,所以没有造成任何损失。

**卖出交易量,已在 `v1.0.0` 修正。** 在 `v0.11.1` 及更早版本中,`subgraph/src/shared.ts` 将卖出交易量统计为事件的 `amountOut`,也就是卖家扣除费用后收到的原生代币;而买入交易量统计的是 `msg.value`,也就是扣费前的总额。因此,同样大小的交易会因方向不同而被记为不同的交易量。`v1.0.0` 将卖出交易量统计为 `amountOut` 加上全部四项费用,这与每一代曲线将其计入 `totalVolumeNative` 的方式完全一致(`contracts/AdextoCurve.sol` 中的 `leaving + depthFee`;`0.10.0` 没有协议费用项,其适配器会传入零)。Envio 索引器也有同样的错误,并已先行按相同公式修正。Base 或 Arbitrum One 上还没有任何市场发生过卖出,因此在这两条链上,修正是通过核对合约运算来验证的,而不是对照实时卖出记录。合约最先出现了这个错误:请参阅该行的注释。

从 v0.11.0 起,子图会并行索引不同代际的曲线,因为 0.10.0 和 0.11.0 的 Swap 事件并不相同:0.11.0 在两个储备量之前插入了 protocolFee,因此有 11 个字段,且 topic0 不同。一个数据源无法匹配这两种事件,所以若将现有数据源改指向新工厂,就会漏掉旧工厂创建的所有市场,却仍报告运行正常。共有三个工厂数据源(0.10.0、0.11.0、v1)和两个曲线模板,映射逻辑统一保存在 src/shared.ts 中。

Curve.curveVersion 也是出于同样的原因:没有它,旧曲线上的 protocolFeeBps: 0 就无法与不收取费用的新曲线区分开来,这会让人误以为费率可以更改。实际上不行:它在每条曲线中都是 immutable。

更早的版本:v0.10.1 修正了 openingPriceNative 与 spotPriceNative 之间的 1e18 单位不匹配问题。v0.10.2 从清单描述中移除了“Agent 回购销毁”,因为 executeBuyback 没有调用者权限门槛,将其归因于 Agent 会夸大合约的实际行为。

两个子图都已发布到去中心化网络,但没有策展信号。索引器按信号比例获得报酬,因此没有独立索引器有理由接入它们。网站读取的是上文的 Studio 端点,而非网关。

可通过 subgraph/docker-compose.yml 运行自托管服务。我们会探测公开 RPC 的 eth_getLogs 上限,而不是凭空假定,并按链记录在 subgraph/chains.json 中:0G 为 2,000 个区块,Monad 则硬性限制为 100 个,超过后会返回 -32614。


安全

重要

这些合约尚未经过人工审查。已部署的字节码是永久性的:修复只能通过在新地址部署新工厂来推出,而所有现有市场都会继续使用其创建时的代码。

多个分析器和模糊测试工具会对合约进行检查(Foundry 模糊测试与不变式测试、Echidna、Slither、Aderyn、Solhint 和 Semgrep),所有发现的问题都会在 adexto.xyz/security 上公开分级处理;该页面还提供可复制粘贴的 cast 命令,供你自行检查每次部署。这并非人工审查的替代方案。audit/README.md 是审查范围文档:涵盖 v1 的 5 份合约和注册表接口,共 825 行代码,并列出预期结果(forge test:80 项通过,0 项失败)。

请按照 SECURITY.md 中的说明私下报告漏洞。请勿为此公开创建 issue。


反馈与想法

遇到了故障、令人困惑的地方,或者觉得不错?请创建一个反馈 issue。关于接下来该构建什么的想法,请前往 Discussions › Ideas,其他人可以在那里为想法投票。


本地开发

git clone https://github.com/0xcuy/adexto.git
cd adexto
npm install
cp .env.example .env.local
npm run dev          # http://localhost:3000

合约可重复编译,无需运行 Hardhat:

node scripts/compile-contracts.mjs --via-ir               # -> build/artifacts/
node scripts/deploy-factory.mjs --chain base              # dry run, no gas
node scripts/deploy-factory.mjs --chain base --broadcast  # spends gas

发送任何内容前,试运行会验证制品是否由当前源文件和固定的编译器设置编译而成、链是否会执行字节码使用的操作码,以及模拟创建是否会返回制品的运行时代码,并将 treasury 写入其不可变槽位。它会打印所有预留的代币代码(scripts/reserved-symbols.json),因为预留是永久性的。只有这些源文件已提交并推送后,才允许向主网广播;之后还会从链上读取回每一项信息。

可以通过 UI 在本地链上完成完整的发布、购买和领取流程,而不是在主网上操作:

cd devchain && npx hardhat node                                     # chain 31337 on :8545
node scripts/deploy-factory.mjs --chain devchain --broadcast
set -a && . ./.env.local && set +a && source scripts/devchain-env.sh
npx next build && npx next start -p 3100                            # NEXT_PUBLIC_* are inlined at build time

有一点无法通过这种方式隔离:如果 .env.local 中配置了 0G 存储密钥,本地发布仍会在 0G 主网上锚定其元数据,每次发布约需花费 0.0013 0G。

关于预留代币代码

预留分为两个层面,约束的对象各不相同。

  • 链上,每个 v1 工厂中。 工厂的构造函数会将一组代币代码写入 symbolRegistry 并标记为预留,且无法解除预留,因此无人(包括我们)能在该工厂上使用这些代码发布代币。列表见 scripts/reserved-symbols.json。每条链都预留相同的 16 个代码:六个 0.11.0 市场(ADEXTO、ADT、ZEEBO、WOMBO、BLOOP、PARCEL),防止有人冒名使用这些名称上线,以及十个主要资产名称(ETH、WETH、USDC、USDT、BTC、WBTC、0G、A0GI、MON、ARB)。Robinhood Chain 还额外预留了 196 个:USDG,以及工厂部署时在链 4663 上列为活跃状态的 195 种代币化股票,以防曲线代币冒充该链上的股票。该日期之后上市的股票不在保护范围内。可通过 isSymbolAvailable 查询上述任一代码。0.11.0 工厂没有此类列表。
  • 应用层。 src/lib/registry.ts 中的 checkSymbolAvailable 会拒绝所有人的主要资产名称,以及协议自己的代币代码(ADEXTO、ADX、AEGIS、QNOVA、CSENT、MQUANT),除非调用者属于默认为空的 ADEXTO_OFFICIAL_DEPLOYER。这只约束通过 /api/deploy 发布的代币;直接调用工厂时,仅受该工厂自身列表的约束。

许可证

Business Source License 1.1(BUSL-1.1)。条款见 LICENSE。

变更日期:2030-09-29(MIT)。

© 2026 ADEXTO Core Contributors · adexto.xyz
横幅背景由 0G Compute router 上的 z-image-turbo 生成。图表和图标由 render.mjs 渲染。来源记录:SOURCES.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。