ERC-1178 多类别代币:一个合约装下多个品种的账本 图 1
ERC-1178 多类别代币:一个合约装下多个品种的账本 · 图 1

ERC-1178 多类别代币:一个合约装下多个品种的账本

一个组织同时发行多种内部凭证——积分、席位券、分红权——常规做法是部署三个 ERC-20 合约,地址三个、审计三份、集成做三轮。ERC-1178 提出过合并方案:多类别同质代币(Multi-Class Fungible Token,MCFT),一个合约、一套事件、内部按类别编号分账。提案创建于 2018 年 6 月 22 日,状态 Stagnant。它与更广为人知的 ERC-1155 解决的问题相邻,但记账哲学不同,值得对照着读。

接口骨架

合约层保留描述函数:namesymbol 描述整个集合,classNameclassId 返回单个类别的名字(提案建议 symbol 控制在三到八个大写字母)。记账围绕类别展开:balanceOf 查询某地址在某个类别下的余额,classesOwned 列出某地址持有的全部类别,individualSupply 返回单一类别的发行量,totalSupply 汇总全体。转移函数在 ERC-20 风格签名上多带一个类别参数,transferapprove 都按”从某地址、某个 classId、若干数量”三元组执行;exchange 甚至允许在同一个合约内部跨类别以物易物——用 A 类余额换走 B 类余额,一笔结清。事件沿用 ERC-20 的 TransferApproval 语义扩展到类别维度。

ERC-1178 多类别代币:一个合约装下多个品种的账本 图 2
ERC-1178 多类别代币:一个合约装下多个品种的账本 · 图 2

与 ERC-1155 的路线差异

两者都让”一个合约多种资产”成为可能,差别在抽象轴。ERC-1155 按 id 建映射:每个 id 是一个独立代币类型,数量字段承担同质性,id 世界可以完全同质(每个 id 都是可分数额)也可以完全非同质(每类只有一枚)。ERC-1178 的世界观则是”类别加数量”:类别像证券术语里的”优先股 A 轮”,每类内部严格同质,类别之间不允许混淆,没有非同质位置的概念——提案文本里也从未试图给某一把具体凭证留出身份位。这个差别决定了生态兼容:ERC-1155 有庞大的钱包、桥与市场上游支持,ERC-1178 没有形成对应基础设施,钱包普遍不认这套接口,集成者要自带前端与索引。

exchange 函数值得单独拆开看,因为它是这份标准里最接近”内置交易所”的部件,也是最需要先跑故障测试的部件。它的设计意图是同合约内类别对类别的即时互换:一笔调用同时完成 A 类扣减与 B 类入账,不经过外部撮合。原子性由同一合约内两次记账的先后顺序保证,但价格从哪来是标准留下的空白——固定比价写在合约里会随市场失真,喂价接口一挂交易所就卡死,若留成调用方自选价,则等于允许任何人用一元积分换走高价值类别。因此凡是部署了该函数的合约,源码审查时要精确回答三个问题:比价参数由谁传入、有没有下限校验、失败中途回滚是否两类账目同时恢复。同样的逻辑适用于整合层:把 MCFT 接进钱包或后台时,务必把类别参数纳入余额解析的主键,任何按”地址加数量”的旧映射展示都会把不同类别的余额错误相加——这类看似低级、实则高发的口径事故,正是当年多类别路线没能养活生态的微观原因之一。

现实里的用途与陷阱

回看提案的动机,最贴的场景其实是证券法意义上的多类别股份:同一公司、同一合约,内部区分普通股与优先股的账本,共享审计与合规边界。对链上组织,类似需求是”一个凭证合约发多种会员币”。但有两个陷阱要标注。其一,接口兼容幻觉:MCFT 名义上部分兼容 ERC-20(可选实现 name、symbol),但函数签名带类别参数,把 MCFT 地址直接当 ERC-20 接进旧系统会以失败告终,务必确认集成方显式支持。其二,余额显示错位:钱包里”总余额”是全部类别相加,totalSupply 亦如此;若产品页用总量叙事、用单类余额做经济参数,两边的口径差会放大误解——任何涉及”占总量多少”的权益计算,都应以 individualSupply 的类别口径为准。提案停滞多年,评估使用它或仿它的合约时,把这两点作为验收题,比读白皮书有效率得多。本文为机制说明,不构成任何投资建议。