代币供应量对不上:把差额查清楚
- 本篇要核对的事
- 用时间、资产身份、统计范围和供给变动表,核对公告、区块浏览器与行情网站的供应量差额。
- 总量
- 该口径下尚存的已发行数量
- 流通量
- 按来源规则计入流通的数量
- 可用余额
- 你能用于当前用途的数量
三个数字回答不同问题,不能互相替代。
本文内容
公告写着一个供应量,行情页少了几百万,区块浏览器又是第三个数字。先别挑最大的,也别默认项目方在隐瞒。三个页面可能根本没有在数同一件东西。真正需要解释的,是把时间和统计范围统一以后还剩下的差额。
同一个缩写,不足以证明是同一份供给
核对从资产身份开始。
代币名称可以重复,缩写也可以重复;一个熟悉的图标并不能让某个合约自动变成项目的官方资产。对于合约代币,需要记录网络和合约地址。对于网络原生币,则要记录网络、币种身份以及你正在使用的供给统计来源。不要为了把表格排整齐,硬给原生币找一个代币合约。
看到两个网络上都有同名资产时,先问它们是什么关系。可能是一边锁定原资产,另一边发行对应凭证;也可能是独立发行、迁移中的新旧版本,甚至是没有关系的同名代币。关系尚未查明,就不能把两边的总量直接加起来。在有足额锁定支持的包装模型里,凭证和锁定物代表同一份经济权益,把两者都当新增供应会把数量算大。
这里也不能走向另一个极端:不是所有跨链名字都天然一比一有担保。应该查具体项目的桥接说明、储备地址和兑换条件。若材料只写“多链部署”,却没有说明原链资产如何锁定、另一条链如何发行,就在身份栏写清这一空白。我们宁愿暂时保留两张账,也不愿把关系不明的余额揉成一个漂亮总数。
BNB 是一个容易混淆的例子。钱包里的原生 BNB、包装后的 WBNB 和中心化平台账户里显示的 BNB,都可能用同一个价格作估值,但余额的所在位置与可做的事情并不一样。
若你的问题只是“有余额为什么付不了网络费用”,应先看原生资产与包装资产的区别;那是用途条件问题,没必要从整个币种的供应量查起。
资产身份表可以很短:名称、网络、合约或原生身份、来源、与其他版本的关系。把地址完整复制进自己的笔记,核对页面时也看完整地址,别只看开头和结尾。为了省几秒而跳过这一步,后面每一次加减都可能是在给另一个资产做账。无需连接钱包,更不需要为了看公开供给向任何页面提交助记词。
标签决定了这个数字能回答什么
供应量不是一个只有唯一答案的词。已发行多少、扣除已销毁后还剩多少、其中多少被统计为公开流通、规则允许未来最多出现多少,是几道不同的问题。行情页面常把这些数字放得很近,读者又习惯只记最大的那一行,于是很容易拿“流通量”去质疑“总量”。
| 页面常见标签 | 通常回答的问题 | 不能顺手推导的结论 |
|---|---|---|
| Total supply | 该来源采用的现存总量是多少 | 全部都可以马上卖出 |
| Circulating supply | 该来源计入公开流通的数量是多少 | 等于所有未锁定余额之和 |
| Max supply | 该来源采用的最大供给口径是多少 | 这些币已发行或必定全部发行 |
| Burned | 统计范围内的销毁数量是多少 | 本期新增销毁等于这个累计数 |
不同数据商对“流通”的处理会有判断成分。CoinMarketCap 的供给方法页区分总量与公共流通口径;CoinGecko 的方法说明也列出不纳入流通的余额类别。两家使用的排除地址、核验资料或调整时间不同,结果就可能不同。方法存在差异,不等于其中一个数字可以随意丢弃。
读这类说明时,最有用的不是再记一遍定义,而是找能够复查的扣除项目。一个页面写“总量减去未流通余额”,还不能让你独立复算;它需要给出哪些地址被排除、各自余额取自何时,以及地址分类发生变化时怎样处理。若缺少这些资料,应该写“采用该数据商口径,未独立复算”,而不是写“已经链上验证”。
锁仓尤其容易让人误判。
锁定意味着使用受到条件约束,通常不等于资产被永久消灭;解锁也不一定意味着新的代币刚被发行。某笔资产可能一直包含在总量里,只是在解锁后被某个来源计入流通量。所以“总量没变,流通量增加”在逻辑上可以成立,不能只凭这两行数字认定发生了额外铸币。
反过来,某个地址能转账,也不必然代表它会被数据商视为公共流通。项目储备、团队分配、用途受约束的资金都可能涉及不同处理。不要把页面上一个“已解锁”标签替换成“正在市场出售”。这两个说法分别描述可转移条件与交易行为,后者需要交易记录才能支持。
把截图时间与数据时间分开
你在周五打开的公告,里面的数值可能是周三写稿时的快照。你在同一分钟打开两个行情页,它们背后引用的数据也未必在同一分钟刷新。记录“我什么时候看到”有用,但不足以证明数字可以直接相减。真正控制可比性的,是数字对应的时点、区块高度或统计区间。
表里应留两列:访问时间与数据时间。访问时间方便以后追查页面变化;数据时间用于计算。
来源给了 UTC 就保留 UTC,给了当地时间就同时保留时区。若只有日期没有时刻,不要替作者补一个午夜,也不要把它当成一天内任何时刻都成立的总量。写“仅日期,时刻未说明”比自作主张更有用。
流量还需要开始和结束边界。例如“本季度销毁”与“截至季度公告时的累计销毁”不是同一类数字。前者是一个区间内发生的事情,后者是从更早起点累积到某时刻的余额式计数。把累计数加到本期流量上,会把以前已经发生的销毁再算一遍。若两个累计读数的统计范围没变,可以用期末减期初得到期间增量;范围改过,则还要单独记录调整。
实际记录不必复杂。一条写“公告数据时点:某日某时 UTC;访问:某日;总量:原文数字”,另一条写“浏览器区块:某高度;币种与网络:已核对”。如果你拿不到同一时点的历史数据,就接受这次比较只能判断大致方向,不能把差额分配到具体机制。一个没有来源的精确答案,比一个范围明确的未决问题更容易误导后续判断。
还要留意小数与单位。英文的 million 是百万,billion 是十亿;中文“亿”不是 billion。页面省略到两位小数后,两次相减可能留下很小的显示误差。应保留源数字,再在展示层四舍五入。不要先把每一项都截成整数,最后再去解释这些人为制造的尾差。
如果页面显示“约”或使用缩写,误差范围应跟着数字一起保留。比如一个读数显示为约一百万,另一个精确到个位,即使两者相差几百,也不能据此判断发生了几百单位的供应变动。前一个来源根本没有提供支持这种比较的精度。先找原始明细,找不到就把比较降为数量级判断。
电子表格也会制造看不见的问题。
很长的整数可能被自动转成科学计数法,带逗号的数可能被当作文字,不同地区设置还会互换小数点和千位分隔符。导入以后随机挑一项,与原文逐位比对,再做计算。公式报错时不要简单删掉符号让它运行;你需要知道自己删掉的是千位分隔符,还是数值本来就包含的小数部分。
用一张变动表代替三个互相争吵的总数
当身份、口径和时点都能对应起来,可以开始做变动表。总量核对的基本思路是:期初已确认总量,加上期间新增发行,减去期间已确认销毁,再处理有证据的口径调整,应该得到期末同口径总量。这里的“新增发行”不是所有转入某地址的代币;普通转账只是更换持有人。这里的“销毁”也不是所有流出项目钱包的代币;支出给合作方仍可能继续流通。
期初 1,000,000 + 新发行 20,000 − 已确认销毁 5,000 = 期末 1,015,000
若期末来源写的是一百零一万四千,就还有一千的差额。可以列成待查项,但不能为了让式子成立而直接补一行“其他销毁一千”。等式告诉你缺少解释,不会告诉你解释是什么。可能少记了一次销毁,也可能期初取错时点、资产精度转换错误,或者来源修改了统计方法。这几种情况需要不同证据,不能互相代替。
流通量需要另一张表。假设上例中原有二十万被来源排除在公开流通之外,后来有三万被重新纳入,那么流通量变化会受到这三万影响,而已发行总量不因此增加。把“新发行”和“已发行资产转为流通”分成两列,才能看出当前数字变化来自哪里。没有钱包分类资料时,别把流通量表装成链上总量表。
每个变动项最好关联一个事件编号或来源链接,并写明是否已经包含在其他合计中。比如季度公告给了“本期总销毁”,下方又拆出一种计划的分项,这个分项通常不能再加一次。但若两种独立机制覆盖同一期间、各自统计不重叠,它们的销毁流量可以相加。关于这种区别,Auto-Burn 与 BEP-95 的加总条件给出了一张专门的判断表。
我会把无法解释的差额放在表的最下面,单独留着。
它不是失败标记,而是下一次核对的起点。相比把小数修到刚好相等,这种处理更能提醒你哪里还没有证据。若未来来源补发说明,只增加一条有日期的修正记录,原来的观察仍然保留;这样可以知道结论为什么改变,而不只是看见一个悄悄变掉的数字。
做得更细一点,可以把“本来就不能比较”和“已经可以比较但没有核平”分开。前者意味着基础条件仍缺失,例如一个数字来自不同网络;后者意味着基础条件成立,但变动项还没有解释完整。两个状态需要的下一步不同。前者要补身份和口径,后者才值得继续找交易明细。否则你可能花很久搜交易,却无法解决最初的对象错配。
核对目标也会影响工作量。
只是判断新闻中的百分比有没有用错分母,原公告和简单计算通常够用;如果要向别人声称供应变化已被独立证明,就需要更完整的状态与历史记录。不要用前一种任务的证据去支持后一种结论。把问题限定得窄一些,反而更容易给出扎实、可重复的答案。
交易成功、黑洞余额和供应字段是三层证据
在浏览器里找到一笔成功交易,只能证明该网络接受并执行了这笔交易;它是否改变总量,还要看转移的资产、调用的功能以及相关状态变化。某个看似销毁地址收到代币,可能代表资产被认为不再可用,也可能只是在合约账本里换了持有地址。两者对不同供应字段的影响并不相同。
标准化代币常有一个名为 totalSupply() 的读取方法。ERC-20 标准规定了这个接口,但接口名称本身不会替你证明某次转账执行了销毁。合约具体如何实现、是否支持销毁、是否会同步减少该字段,都需要结合实际代码和状态核对。不要把某个软件库的实现方式推广到所有代币。
原生币又有不同情况。它不一定存在与普通代币相同的合约供应字段,项目公告、协议规则与浏览器采用的供给口径可能共同构成核对材料。
若你看到的是原生币转入某个协议指定地址,应该查协议和项目对该地址的处理,而不是要求它必须产生一条 ERC-20 事件。用错证明标准,也会把正常记录看成异常。
浏览器上的“Token Transfers”“Internal Transactions”或“Value”之类栏目描述的对象可能不同。转账数值是代币数量还是网络原生币数量,事件日志是否属于你正在核对的那个合约,都要重新看一眼。不要把交易的网络手续费加进代币销毁金额;费用是执行成本,是否包含某种协议销毁要另按机制记录。
如果需要把某次公告作为研究材料引用,证据可以按强弱写成几句话:公告声称了什么;交易链接显示了什么;供应口径是否能够独立复算;还有哪部分未核实。销毁地址能证明到哪一步专门说明这些层次。把层次写出来,读者就不会把一张地址截图误读成完整审计报告。
两期公告相减以后,先留下差额
BNB 的两次季度公告提供了一个真实的核算例子。2026 年四月第 35 次公告与七月第 36 次公告给出的剩余总量并不是相邻两笔交易前后的即时余额,而是各自写稿时的快照。把它们相减,可以得到两个快照之间的净变化;这个变化不应被预设为只等于七月那一次季度动作。
- 第 35 次公告 · 剩余总供应量
2026-04-15 11:55 UTC - 134,786,916.53 BNB
- 第 36 次公告 · 剩余总供应量
2026-07-15 10:35 UTC - 133,166,127.91 BNB
- 第 36 次公告 · 本次销毁
- 1,615,827.795 BNB
- 快照间净减少:134,786,916.53 − 133,166,127.91 = 1,620,788.62 BNB。
- 再扣除第 36 次销毁:1,620,788.62 − 1,615,827.795 = 4,960.825 BNB。
两期原文于 2026-09-13 重新核对。以上沿用公告的小数位计算,不代表链上最小单位精度的独立审计。第二步得到的是尚待解释的差额;不能直接命名为 BEP-95 销毁。要归因,还需要匹配这两个时点的记录。不要再减第 35 次销毁,它已经发生在起点快照之前。更多记录边界见第 36 次销毁的数字核对。
这也是不宜直接从公告截图下结论的原因。
一张图片通常拿掉了脚注、统计时刻和链接。只剩“销毁数量”与“剩余总量”时,读者容易用任意旧数字补出一个想象中的期初值。回到原文,往下找到数据脚注,再确认前一期出处,往往比再搜十篇转述更有效。
有些来源会在后续修正旧数,旧页面也可能变动。自己的记录应保留看到的原值、访问日期与链接;若允许保存本地备份,可以保留原网页或导出的文本供个人复核。不要把重新下载后的文件冒充原始版本。对于没有历史版本可比的更改,只写“当前原文与旧记录不同,变更时间未确认”,不给作者补写动机。
有人会问,两个大网站都给同一个数字,是否就算双重验证?不一定。它们可能引用同一个上游接口,或者都依据项目方提交的同一张表。来源数量与证据独立性不是一回事。更有用的组合是原始公告提供事件解释,链上记录支持执行,方法文件解释供应字段。三者各回答一个问题,而不是三篇新闻重复同一句话。
同样,一份公开文档很正式,也不意味着其中的每个判断都经过独立检验。项目希望销毁带来怎样的效果,属于设计目的或价值主张;协议实际如何改变数量,属于可以依据代码和记录检查的机制事实。引用时不要把“希望改善”改成“已经保证”,更不要把项目的乐观叙述当成自己的审计结论。
一份别人能接着查的记录
做完核对,成果不必是一篇很长的结论。把下表保存下来,下一次公告出来时继续填即可。重要的是每个数字能找到出处,下一位读者知道哪些已确认、哪些只是演算、哪些仍在等待资料。
| 字段 | 建议记录方式 |
|---|---|
| 对象 | 币种、网络、合约或原生身份 |
| 原标签与数值 | 保留来源用词、小数和单位 |
| 数据时点 | 时区、区块或明确的期间边界 |
| 来源 | 原文和相关交易链接,不只放截图 |
| 可比性 | 同口径、需调整、暂不可比 |
| 差额 | 金额、已证实解释、未决部分 |
| 更改记录 | 何时因何证据改了哪一项 |
如果两个数仍然无法对应,不必把范围扩大到价格预测。供应量核对只回答数量如何变化,不回答市场愿意以什么价格成交。即便确认总量减少,也不能直接推导持有人账户价值增加;销毁之后价格为什么仍可能下跌讨论的是另一个层面的问题。把两层分开,账本才不会被行情情绪带着走。
现在再看最初那两个数字:只是名称或日期不同,就先补齐这些信息;已经按同一标准比较却仍有差额,就把差额和缺少的资料记下来。还缺哪个时点、哪份地址清单,或者哪笔销毁明细,都可以具体写出。下次看到新的供应数字,先用这份记录检查它是否补上了缺口,而不必再凭直觉选一个看起来顺眼的数。
最后检查你的表是否把假设伪装成了来源。自己估算的期间数字要标“演算”,项目公布的数字标“公告”,自己从公开记录逐项取得的数字才描述具体核对方法。三类可以在同一张表里共存,却不能共用一个“已验证”标签。读者最需要知道的,不只是结果是多少,还有换一个人沿着同样链接,能够复查到哪一步。