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 的核心协议行为存在于 SDK 模块中: x/bankx/distributionx/staking 。为了使 EVM 可以访问此行为,Stable 将每个模块作为预编译合约公开在固定地址。用 Solidity 编写的合约直接调用预编译,EVM 将调用路由到原生 SDK 处理程序。预编译是在协议级别实现的,因此它们比等效的 Solidity 重新实现节省了更多的 gas。

这三个模块

模块预编译地址用途
银行0x0000…1003 (STABLE)代币转账、余额记账、津贴管理、授权合约的铸造/销毁。
分发0x0000…0801质押奖励认领、奖励查询、提款地址管理。
质押0x0000…0800委托、取消委托、重新委托、验证器查询。
系统交易0x0000…9999SDK 层操作(例如解除绑定完成)的协议发出的 EVM 事件。

上面每个页面都解释了模块的功能、何时使用以及在哪里可以找到其 ABI。

为什么是预编译,而不是 Solidity

原因有二:

  • Gas 效率。 预编译在协议的原生执行路径中运行。等效的 Solidity 合约将重新实现相同的逻辑,但 gas 成本明显更高。
  • 单一事实来源。 质押、分发和代币供应是协议级状态。通过预编译公开它们可以避免维护重复的 Solidity 实现,这可能会偏离 SDK。

授权

某些预编译方法(mintburn、协议级质押操作)需要调用者授权。x/precompile 模块维护一个链上白名单,未注册合约的调用会回滚。这使得特权操作受到治理限制,同时不阻止 EVM 对读/转账方法的通用使用。

下一步建议

  • 银行模块:了解代币转账、津贴和铸造/销毁授权模型。
  • 质押模块:了解委托和验证器管理如何到达 EVM。
  • 系统交易:了解解除绑定完成等协议级事件如何作为 EVM 日志显示。