进阶赛道进阶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 流转,与比特币自身的模型更一致
- 减少了中间产物,不需要为每次转账单独铭刻一条记录
- 仍然需要索引器,但规则设计更紧凑,理论上更省区块空间
共同的取舍
两者都没有改变一个事实:比特币共识层并不理解这些代币。它们的「存在」依赖社区对同一套索引规则的共识。取舍的核心是:
- 更强的链上表达力 ←→ 更高的手续费与区块占用
- 更简单的实现 ←→ 更大的索引器分歧风险
给你的教训
- 参与前先搞清代币规则由谁定义、你的钱包或平台使用哪个索引器,不同实现可能给出不同结果。
- 比特币上的代币不是「比特币」:它不享有比特币的安全模型与结算保证,只是借用了它的区块空间。
- 关注手续费成本:这类代币的每次操作成本可能远高于代币本身的价值,先小额测试。
- 标准仍在演进,不要把短期热度当成长期共识,也不要投入无法承受损失的资金。