Skip to main content

概述

Stable SDK 中的 x/bank 模块仅提供基本的代币管理功能。 每个代币都可以无限制地转移到任何账户,用户无法委托其他账户代为转移其代币到其他账户。 因此,bank 预编译合约在 Stable SDK 现有的 x/bank 模块基础上提供了额外的授权和委托功能。

目录

  1. 概念
  2. 配置
  3. 方法
  4. 事件

概念

该预编译合约提供 ERC20 标准方法 - 如用于转账的 transferbalanceOf,以及用于委托的 transferFromapproveallowance。这些方法可以直接调用,无需注册合约地址。 然而,mintburn 方法需要合约地址被列入白名单,通过 x/precompile 模块注册。
额外的验证过程可以保证调用此预编译合约的代币合约是经过授权的。 需要通过治理提案来注册代币合约地址及其denomination到 x/precompile 模块的白名单中。

配置

合约地址和gas费用已预定义。

合约地址

  • 0x0000000000000000000000000000000000001003 STABLE (用于治理代币)

方法

mint

铸造请求数量的新代币并转移到账户。 要铸造的代币数量必须大于零。 当代币成功铸造并转移到账户时,会发出 PrecompiledBankMint 事件。 注意:
  • 禁止铸造治理代币。
  • 调用铸造方法的合约必须在 x/precompile 模块中注册。

输入参数

输出参数

burn

从账户中销毁请求数量的代币。 要销毁的代币数量必须大于零。 当代币成功销毁时,会发出 PrecompiledBankBurn 事件。 注意:
  • 禁止销毁治理代币。
  • 调用铸造方法的合约必须在 x/precompile 模块中注册。

输入参数

输出参数

transfer

将请求数量的代币从发送者转移给接收者。 代币必须设置为可发送。要转移的代币数量必须大于零。 当代币成功转移时,会发出 PrecompiledBankTransfer 事件。

输入参数

输出参数

transferFrom

由授权的支出者在允许额度范围内将请求数量的代币从所有者转移给接收者。 代币必须设置为可发送。 要转移的代币数量必须大于零并且小于或等于当前允许额度。 当代币成功转移时,会发出 PrecompiledBankTransfer 事件。

输入参数

输出参数

multiTransfer

将代币从单个账户转移到多个账户。 代币必须设置为可发送。 转移给每个接收者的代币数量必须大于零。 当代币成功转移时,每个接收者都会发出 PrecompiledBankTransfer 事件。

输入参数

输出参数

approve

授权支出者从所有者账户转移代币。 要授权的代币数量必须大于零。 当授权成功设置时,会发出 PrecompiledBankApproval 事件。

输入参数

输出参数

revoke

撤销支出者从所有者转移代币的授权。 当授权成功撤销时,会发出 PrecompiledBankRevoke 事件。

输入参数

输出参数

balanceOf

返回账户的代币余额。

输入参数

输出参数

totalSupply

返回代币的总供应量。

输入参数

输出参数

allowance

返回支出者仍可从所有者提取的金额。

输入参数

输出参数

事件

所有从此预编译合约发出的事件都以 PrecompiledBank 为前缀。 为了避免歧义,调用此预编译合约的代币合约应避免使用相同前缀的事件名称。

PrecompiledBankMint

PrecompiledBankBurn

PrecompiledBankTransfer

PrecompiledBankApproval

PrecompiledBankRevoke

最后修改于 2026年4月2日