系统模块
Stable 的核心协议行为存在于 x/bank、x/distribution 和 x/staking 等 SDK 模块中。固定地址预编译将 Solidity 调用路由到其原生 SDK 处理程序,而无需在应用程序合约中重复协议逻辑。
三个模块
| 模块 | 预编译地址 | 用途 |
|---|---|---|
| 银行 | 0x0000…1003 (STABLE) | 代币转账、余额记账、授权管理、授权合约的铸造/销毁。 |
| 分发 | 0x0000…0801 | 质押奖励认领、奖励查询、提款地址管理。 |
| 质押 | 0x0000…0800 | 委托、解除委托、重新委托、验证人查询。 |
| 系统交易 | 0x0000…9999 | 保证区块空间通道查询和协议发出的 EVM 事件。 |
上面每个页面都解释了模块的功能、何时使用以及在哪里找到其 ABI。
为什么是预编译,而不是 Solidity
原因有二:
- 燃气效率。 预编译在协议的原生执行路径中运行。等效的 Solidity 合约将重新实现相同的逻辑,但燃气成本会显著提高。
- 单一事实来源。 质押、分发和代币供应是协议级状态。通过预编译暴露它们可以避免维护一个可能偏离 SDK 的重复 Solidity 实现。
授权
一些预编译方法(mint、burn、协议级质押操作)需要调用者授权。x/precompile 模块维护一个链上白名单,未注册合约的调用将被回滚。这使得特权操作受治理限制,同时不影响读/转账方法的通用 EVM 使用。

