Stable 上的合约
Stable 完全兼容 EVM。Solidity、Vyper、Hardhat、Foundry、ethers.js 和 viem 都无需修改即可使用。只要将工具指向 Stable 的 RPC,现有合约即可原样部署。在标准 EVM 之上,Stable 将协议级模块(Bank、Distribution、Staking)以预编译合约的形式暴露在固定地址上,因此你的 Solidity 可以直接调用质押和奖励分发功能,而无需重新实现它们。
你可以构建什么
- 标准应用合约(ERC-20、ERC-721、托管、AMM),使用任意 EVM 工具链。
- 经过验证、已索引的合约,在 Stablescan 上通过 ethers.js 提供实时事件流。
- 协议集成合约,可从 Solidity 调用 Bank / Distribution / Staking 预编译合约。
- 系统交易监听器,通过标准的
eth_getLogs监视协议发出的事件(例如解绑完成)。
Stable 的不同之处
- USDT0 是 gas 代币。
maxPriorityFeePerGas必须为0。原生转账中的value字段携带的是 USDT0,而不是 ETH。参见使用 USDT0 作为 gas。 - USDT0 具有双重角色。 持有原生 USDT0 的合约,其余额可能因 ERC-20 的
transferFrom或permit而发生变化——切勿在uint256中镜像原生余额。参见 Stable 上的 USDT0 行为。 - 预编译地址在测试网和主网中是固定的。 将它们作为常量固化到你的合约中。
从这里开始
- 部署 — 搭建 Foundry,配置 Stable,并部署 Counter。
- 验证 — 使用 forge verify-contract 将源码上传到 Stablescan。
- 索引 — 使用 ethers.js 订阅事件并回填历史日志。
推荐下一步
- 合约指南索引 — 合约指南、预编译参考和系统模块 ABI 的完整列表。
- 使用系统模块 — 从 Solidity 和 ethers.js 调用 Bank / Distribution / Staking。
- JSON-RPC 参考 — Stable 支持哪些
eth_*和debug_*方法。

