W3
进阶赛道进阶895 次阅读

BRC-20 与 Runes:比特币代币标准的取舍

UTXO 模型没有账户余额概念,这是比特币发币的根本困难。本文对比 BRC-20 与 Runes 两种思路,说明它们在区块占用、手续费与索引器依赖上的取舍。

#BRC-20#Runes#比特币#UTXO#代币标准

一句话结论

在比特币上发行同质化代币,难点在于 UTXO 模型里没有「账户余额」这个概念。BRC-20 与 Runes 是两种绕开这个限制的思路,各自付出了不同的代价。

为什么 UTXO 上发币很难

以太坊采用账户模型,合约里存一个地址到余额的映射,就记录了每个人的余额。

比特币没有这种全局状态:

  • 比特币的最小记账单位是 UTXO(未花费交易输出),它只描述「某个输出值多少钱」,不描述「某地址余额多少」
  • 要表示余额,需要把多个 UTXO 加总;要转账,需要拆分 UTXO 并处理找零
  • 比特币脚本能力有限,默认无法在链上执行复杂的代币逻辑

于是代币规则只能放在链外,由索引器按约定解读。

BRC-20:用「写流水账」的方式发币

BRC-20 的做法是把代币信息以 JSON 文本铭刻到链上,部署、铸造、转账各对应一条固定格式的文本记录:

  • 优点:实现简单,不需要改动比特币协议,支持铭刻的工具都能参与
  • 代价:每一次代币操作都是一次铭刻,占用大量区块空间,手续费高
  • 代价:状态完全依赖索引器,转账还需要「先铭刻、后广播」两步,容易出现卡单与状态不自洽

可以把它理解成:不在链上执行逻辑,而是在链上公开写流水账,然后大家按统一规则重算一遍。

Runes:把代币状态写进 UTXO

Runes 换了另一条路:使用比特币的 OP_RETURN 输出携带代币指令,并把代币余额与 UTXO 绑定:

  • 代币的持有状态跟随 UTXO 流转,与比特币自身的模型更一致
  • 减少了中间产物,不需要为每次转账单独铭刻一条记录
  • 仍然需要索引器,但规则设计更紧凑,理论上更省区块空间

共同的取舍

两者都没有改变一个事实:比特币共识层并不理解这些代币。它们的「存在」依赖社区对同一套索引规则的共识。取舍的核心是:

  • 更强的链上表达力 ←→ 更高的手续费与区块占用
  • 更简单的实现 ←→ 更大的索引器分歧风险

给你的教训

  • 参与前先搞清代币规则由谁定义、你的钱包或平台使用哪个索引器,不同实现可能给出不同结果。
  • 比特币上的代币不是「比特币」:它不享有比特币的安全模型与结算保证,只是借用了它的区块空间。
  • 关注手续费成本:这类代币的每次操作成本可能远高于代币本身的价值,先小额测试。
  • 标准仍在演进,不要把短期热度当成长期共识,也不要投入无法承受损失的资金。

延伸阅读