跳转到内容

BEP20

来自BitcoinWiki
BEP20

BEP-20(常写作 BEP20)是 BNB Smart Chain(BSC)上可互换代币智能合约的技术标准。“BEP”意为 BNB Evolution Proposal;BEP-20 是 BNB Chain 提案仓库中已启用的标准提案。[1]其接口源自以太坊的 ERC-20 标准,规定了余额、转账和委托支出的通用方法与事件。[2][3]

可互换性是指由同一代币合约记录的各单位彼此等同,而不是各自具有独特性。合约记录分配给地址的余额,并对每一单位应用相同的转账规则。[4][5]BEP-20 规定兼容合约如何向钱包、交易平台、其他合约和索引软件提供这些操作。它并不规定代币的货币政策、储备支持、治理、管理员权限、市场价值或安全性。

接口

该标准定义了以下公开方法:[2]

方法 用途 BEP-20 状态
name() 返回人类可读的代币名称 可选
symbol() 返回类似行情代码的代币符号 必需
decimals() 返回显示时使用的小数精度 必需
totalSupply() 返回合约报告的代币总供应量 必需
balanceOf(address) 返回分配给某地址的余额 必需
transfer(address, uint256) 将代币从调用者转至另一地址 必需
approve(address, uint256) 设定获授权支出者可以使用的金额 必需
allowance(address, address) 返回剩余获批金额 必需
transferFrom(address, address, uint256) 使用先前授予的额度转移代币 必需

兼容合约会在转账时发出 Transfer 事件,并在授权成功时发出 Approval 事件。零金额转账有效,也会发出 Transfer。规范要求调用方处理布尔值 false 结果,不应假定每次正常返回的调用都已成功。[2]

余额、供应量与小数显示

该接口以无符号整数记录代币数量。decimals 值告诉用户界面如何缩放这些基本单位以供显示。例如,若合约报告八位小数,则 100,000,000 个基本单位的整数余额会显示为一个代币单位。该设置不会在合约存储中创建分数,也不决定代币的市场价值。[2]

totalSupply 报告根据合约规则存在的数量,而 balanceOf 报告分配给特定地址的数量。这两个方法都不能说明供应量是如何创建的。合约可以在部署时分配固定初始供应量,也可以实现额外的铸造或销毁逻辑;这些政策不属于核心接口。规范称,创建新单位时应发出以零地址为来源的 Transfer 事件,但不要求提供公开的铸造函数。[2][5]

转账与授权额度

直接调用 transfer 会把一定数量从调用者余额转至接收者。合约检查并更新自身状态,然后发出标准事件。因此,代币转账是对代币合约的调用;它不同于转移该网络的原生资产 BNB。

委托支出使用三个方法。首先,所有者调用 approve,设定获授权支出者可以使用的最高金额。软件可以通过 allowance 读取剩余额度。获授权支出者随后调用 transferFrom,在该额度范围内从所有者余额转移代币。[2][3]这一模式允许另一个智能合约依据代币持有者的授权行事,而无需控制持有者的全部余额。

再次调用 approve 会替换当前额度,而不是在原额度上增加。BEP-20 和 ERC-20 规范警告客户端开发者,不要把一个非零额度直接改为另一个非零额度,因为交易顺序可能导致两个值都被使用。规范建议界面先把额度设为零,再设定新的非零值。[2][3]授权只授予支出权限,本身并不转移代币。

事件与互操作性

标准化的方法签名、返回类型和事件,使应用程序能够以通用方式与不同代币合约交互。应用程序可以使用合约的应用程序二进制接口(ABI)查询元数据、余额、供应量和额度,或提交标准的转账与授权调用,而无需依赖合约内部的存储设计。[4]

TransferApproval 事件使区块浏览器、钱包和索引器能够从交易日志观察标准操作。事件有助于重建活动,但当前余额和额度仍可能取决于合约的具体实现及状态。软件不应假定常见的元数据或已发出的事件能够证明代币的身份或质量。

与 ERC-20 的关系

BEP-20 保留了 ERC-20 的核心转账和额度接口,使 EVM 兼容软件可以用熟悉的方式与其交互。当前书面规范在元数据方面有一项差异:ERC-20 将 namesymboldecimals 视为可选,而 BEP-20 要求提供 symboldecimals,但 name 仍为可选。[2][3]

这些标准并不定义所在网络的共识、容量、交易费用、确认或最终确定性行为。这些是底层区块链及其当前配置的属性。BSC 兼容 EVM,其原生 BNB 代币用于支付 BSC 交易费用。[6]EVM 兼容性使许多面向以太坊的工具和合约模式可以复用,但不会让 BSC 与以太坊自动共享同一代币合约或其中的余额。

用途与资产表示

BEP-20 合约可以记录可互换的应用单位、投票权重、激励或访问单位、用于追踪其他资产的权利,或其他可互换数量。这些用途由具体实现及其应用选择,并不是该标准分别授予的功能。[4][5]

该接口尤其不会验证代币是否由其他资产支持、可赎回、价格稳定、由去中心化流程控制,或获任何服务接受。封装或跨桥表示也依赖 BEP-20 之外的机制进行发行和赎回。该标准仅使代币合约的通用操作可被识别。

BNB Beacon Chain 历史

早期 BEP-20 材料包含与 BNB Beacon Chain 上 BEP-2 资产进行跨链绑定的内容。BNB Chain 在 2024 年通过 BNB Chain Fusion 流程停用 Beacon Chain;最终停用分叉在 11 月进行,验证者关闭安排在 12 月。[7]

较早的接口还包括 getOwner(),用于绑定 BEP-20 与 BEP-2 代币。由于 Beacon Chain 已不复存在,BNB Chain 在 2025 年 2 月 12 日合并的一项更改中,将其从当前 BEP-20 规范删除。[8]仍把 getOwner() 称为 BEP-20 要求的文档或合约模板,描述的是已经停用的流程,而不是当前接口。

代币身份与网络选择

已部署的 BEP-20 代币由 BNB Smart Chain 和其合约地址共同标识。名称与符号属于显示元数据,可以重复,因此不足以确定合约是否代表预期资产。钱包软件可能要求用户选择 BSC 并导入确切的合约地址,才会显示某个代币。[9]

BSC 和以太坊使用兼容的地址格式,但代币余额存在于特定网络上的合约中。通过非预期网络发送并不存在一种普遍结果:能否恢复取决于发送者或接收者是否控制目标地址,以及托管方能否提供协助。[10]

扩展与安全局限

符合 BEP-20 并不意味着所有代币合约的行为相同。具体实现可以添加铸造、销毁、暂停、转账费、阻止名单、可升级性或特权管理员功能。这些功能都不是 BEP-20 核心接口的要求,而且每一项都会改变合约的安全与信任假设。

该继承接口也没有强制回调,让接收合约确认自己可以处理传入的代币。因此,即使接收合约没有使用或退回这些代币的机制,向其地址进行标准转账仍可能成功。[4]接受代币充值的应用需要明确设计处理机制,而不能假定每一个合约接收者都兼容。

符合标准不能证明源代码已获审查、显示的元数据真实、有关供应量或储备支持的说法准确、特权密钥安全,或应用程序没有风险。必须分别评估具体部署的合约、其字节码和配置、管理员权限,以及与其交互的应用。BEP-20 在接口层面实现互操作标准化;它不是对资产或发行方的认证。

参考资料

  1. BNB Evolution Proposals, BNB Chain, accessed 3 September 2026.
  2. 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 BEP20: Tokens on BNB Smart Chain, BNB Chain, accessed 3 September 2026.
  3. 3.0 3.1 3.2 3.3 ERC-20: Token Standard, Ethereum Improvement Proposals, accessed 3 September 2026.
  4. 4.0 4.1 4.2 4.3 ERC-20 Token Standard, ethereum.org, accessed 3 September 2026.
  5. 5.0 5.1 5.2 ERC-20, OpenZeppelin Contracts documentation, accessed 3 September 2026.
  6. Quick Guide, BNB Smart Chain documentation, accessed 3 September 2026.
  7. BNB Chain Fusion, BNB Chain, accessed 3 September 2026.
  8. Update BEP20 to remove getOwner interface, BNB Chain pull request 522, merged 12 February 2025.
  9. Tokens not showing in wallet, BNB Smart Chain documentation, accessed 3 September 2026.
  10. Recovering tokens sent to wrong chain or address, BNB Smart Chain documentation, accessed 3 September 2026.