Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Stable 提供 MCP 服务器、代理技能和纯文本文档文件,以便 AI 编辑器和编码代理可以直接使用 Stable。本页面介绍如何将每个组件集成到您的工作流中,为非 MCP AI 工具提供可复制粘贴的上下文块,以及常见任务的入门提示。

MCP 服务器

Stable 运行两个 MCP 服务器。Docs MCP 在此文档站点中搜索概念、指南、代码片段和合约引用。Runtime MCP 与 Stable 链交互,用于余额查询、交易模拟和执行。

两个服务器都可以添加到任何 MCP 兼容客户端。

Cursor

打开您的 MCP 配置文件并添加:

{
  "mcpServers": {
    "stable-docs": {
      "url": "https://docs.stable.xyz/mcp"
    },
    "stable-runtime": {
      "url": "https://runtime.stable.xyz/mcp"
    }
  }
}

重启 Cursor。通过询问“我如何在 Stable 上发送 USDT0?”进行验证。

Claude Code

claude mcp add stable-docs https://docs.stable.xyz/mcp
claude mcp add stable-runtime https://runtime.stable.xyz/mcp

通过询问“搜索 Stable 文档以获取 Gas 豁免集成步骤。”进行验证。

代理技能

代理技能是预定义的工作流,结合了 Docs MCP 和 Runtime MCP。当您要求 AI 执行“发送 100 USDT0 到三个地址”等任务时,该技能会处理整个序列:查找相关文档、解析地址和参数、检查余额、模拟交易并在批准后执行。

技能作为 Claude Code 插件提供。

安装

claude plugin add stable-xyz/agent-skills

或者从 Claude Code 市场安装。

有关完整的技能定义和来源,请参阅 agent-skills 存储库

纯文本文档

对于不支持 MCP 的 AI 工具,Stable 文档以静态文本文件形式提供。

文件URL内容
llms.txthttps://docs.stable.xyz/llms.txt包含标题和描述的页面索引
llms-full.txthttps://docs.stable.xyz/llms-full.txt单文件完整文档

这些文件是静态快照。要获取最新内容,请使用 Docs MCP。

Cursor

  1. 转到 Settings > Features > Docs
  2. 选择 Add 并输入 https://docs.stable.xyz/llms-full.txt
  3. 在聊天中使用 @Stable 引用。

其他工具

下载 llms-full.txt 并将其包含在您的项目上下文或系统提示中。

Stable 上下文块

将其粘贴到任何 AI 聊天或系统提示的顶部。它为模型提供了在第一次尝试时生成正确的 Stable 代码所需的一切。

# Stable 链上下文
 
Stable 是一个 Layer 1,其中 USDT0 是原生的 gas 代币。与 EVM 完全兼容。
所有标准 EVM 工具(Hardhat、Foundry、ethers.js、viem)在
调整三个 gas 字段后(参见下面的行为差异)无需更改即可工作。
 
## 网络
 
| 字段           | 主网                                     | 测试网                                     |
| :-------------- | :--------------------------------------- | :----------------------------------------- |
| 链 ID        | 988                                      | 2201                                       |
| RPC             | https://rpc.stable.xyz                   | https://rpc.testnet.stable.xyz             |
| 浏览器        | https://stablescan.xyz                   | https://testnet.stablescan.xyz             |
| 货币符号 | USDT0                                    | USDT0                                      |
 
## USDT0 合约地址
 
- 主网: 0x779ded0c9e1022225f8e0630b35a9b54be713736
- 测试网: 0x78cf24370174180738c5b8e352b6d14c83a6c9a9
 
## 与以太坊的行为差异
 
1. **Gas 代币是 USDT0,而不是 ETH。** 原生转账中的 `value` 字段
   携带 USDT0。费用以 USDT0 计价。
2. **`maxPriorityFeePerGas` 始终为 0。** 没有基于小费的排序。将其
   明确设置为 `0n`,否则验证者将拒绝或忽略小费组件。
3. **USDT0 具有双重作用**:原生资产(18 位小数)和 ERC-20(6 位小数)
   在同一余额上。`address(x).balance` 报告 18 位小数的 wei;
   `USDT0.balanceOf(x)` 报告 6 位小数的单位。由于分数协调,
   值可能相差高达 0.000001 USDT0。切勿在内部变量中镜像原生
   余额;始终在支付时查询。
4. **原生转账也会发出转账事件。** USDT0 ERC-20 合约上的单个
   Transfer 事件监听器涵盖两种转账路径。
5. **单槽终结性(约 700ms)。** 一旦区块提交,就无法
   重组。无需等待多次确认。
6. **Gas 豁免** 允许应用程序支付 gas:用户使用 `gasPrice = 0` 进行签名,
   由治理注册的豁免包装并提交。合约必须在
   豁免的 AllowedTarget 策略上。
7. **EIP-7702** 支持将 EOA 委托给合约(类型 4 交易)。
8. **预编译地址**:Bank `0x...1003`,Distribution `0x...0801`
   Staking `0x...0800`,StableSystem `0x...9999`
 
## 常见的错误避免
 
- 复制以太坊优先费用常量(2 gwei 小费等)。这在 Stable 上
  没有效果,并且可能被钱包拒绝。
- 为 ERC-20 USDT0 金额使用 `ethers.parseUnits(x, 18)`。ERC-20 使用 6
  位小数;原生转账使用 18 位小数。
-`uint256 deposited` 变量中镜像原生余额。USDT0
  基于授权的操作(transferFrom、permit)可以在不调用合约
  代码的情况下减少合约的原生余额。
- 将原生或 ERC-20 USDT0 发送到 `address(0)`。这两种情况在 Stable 上都会回滚。
- 假设 `EXTCODEHASH == 0` 表示地址未使用。在 Stable 上,
  基于许可的批准可以更改状态而无需增加 nonce。
- 编写 `value: ethers.parseEther(amount, "ether")` 并期望 ETH
  语义。该转账发送 USDT0。

入门提示

在加载上面的上下文块后,将以下任何内容复制到您的 AI 编辑器中。

部署合约

使用 Foundry 搭建一个名为 `stable-escrow` 的项目。编写一个最简单的
Solidity ^0.8.24 托管合约,包含 deposit() 和 withdraw(amount)
函数,这些函数原生转账 USDT0。使用 address(this).balance 进行
偿付能力检查(切勿在 uint256 中镜像余额)。拒绝
address(0) 接收者。然后生成一个使用
`forge create` 命令,指向 Stable 测试网(RPC https://rpc.testnet.stable.xyz,
链 ID 2201)。

发送 USDT0

编写一个使用 ethers v6 的 TypeScript 脚本,它原生发送 0.001 USDT0
从 PRIVATE_KEY 加载的钱包中。使用仅基础费用 EIP-1559 gas
(maxPriorityFeePerGas = 0n, maxFeePerGas = 2 * baseFeePerGas)。目标
Stable 测试网。记录交易哈希和 Stablescan 浏览器 URL。

设置 EIP-7702 委托

编写一个使用 ethers v6 的 TypeScript 脚本:
1. 签署一个 EIP-7702 授权,将我的 EOA 委托给 Stable 测试网
   (链 ID 2201) 上的 0xcA11bde05977b3631167028862bE2a173976CA11 的 Multicall3。
2. 发送一个类型 4 交易,其 authorizationList: [signedAuth],
   to: wallet.address (自调用),以及调用 aggregate3()
   以批量处理三个 USDT0 转账(100、200、150 USDT0,6 位小数)的数据。
3. 使用 maxPriorityFeePerGas: 0n。

构建订阅合约

为 Stable 上的 EIP-7702 委托编写一个 SubscriptionManager Solidity 合约。
它在订阅者的 EOA 上运行。公开:
  - subscribe(bytes32 subId, address provider, uint256 amount, uint256 interval)
    只有当 msg.sender == address(this)(订阅者在其自己的 EOA 上)时才可调用。
  - collect(bytes32 subId) 只有注册的提供商可调用,只有
    当 block.timestamp >= nextChargeAt 时;通过 interval 提前 nextChargeAt
    并将 USDT0 转账给提供商。使用测试网
    地址 0x78cf24370174180738c5b8e352b6d14c83a6c9a9 的 IERC20 USDT0。
  - cancelSubscription(bytes32 subId) 只有订阅者可调用。
为 SubscriptionCreated、SubscriptionCollected、SubscriptionCancelled 发出事件。

构建 x402 按次付费 API

编写一个用 TypeScript 编写的 Express 服务器,它公开 GET /weather,价格
为 $0.001 USDT0 (金额: "1000", 6 位小数),使用 @x402/express、
@x402/evm/exact/server 和 HTTPFacilitatorClient 指向
https://x402.semanticpay.io/。使用 Stable 主网 (CAIP-2 eip155:988,
USDT0 在 0x779Ded0c9e1022225f8E0630b35a9b54bE713736)。处理程序应
返回 { weather: "sunny", temperature: 70 }。从 env 中读取 PAY_TO_ADDRESS。
在启动时打印已配置的路由。

接下来推荐