2023年3月8日,一个叫domo的开发者把一段JSON文本写进了比特币交易,部署了总量2100万个的ORDI。从那天起,比特币链上多了一套叫BRC-20的代币规则。到2024年初,Ordinals协议累计铭刻量突破6000万枚,其中相当比例是BRC-20的部署、铸造和转账记录。问题也随之而来:不少人把ERC-20的操作习惯直接搬到比特币上,结果一张刻着代币的"聪"在找零环节被当成矿工费花掉,资产无法找回。这篇讲清楚两件事——BRC-20和ERC-20在实现上的差别,以及怎么在支持Ordinals的钱包里安全地转出一笔BRC-20。
BRC-20和ERC-20在账本结构上的差别
ERC-20建立在以太坊的账户模型上。每个地址有一个余额字段,智能合约里维护一张mapping,记录谁有多少代币。转账就是调用合约的transfer函数,把发送方余额减掉、接收方余额加上,一步完成。合约代码决定了代币的一切行为,借贷、分红、自动做市都能写进去。

BRC-20没有合约。比特币脚本不支持循环和复杂状态存储,发不了代币。它的做法是:利用Ordinals给每一聪编号,然后把一段JSON文本通过见证数据(witness data)铭刻到某一聪上。文本内容类似{"p":"brc-20","op":"deploy","tick":"ordi","max":"21000000","lim":"1000"}。这段文本本身不改变比特币的账本状态,比特币网络只当它是一笔普通转账的附加数据。真正让BRC-20代币"存在"的,是链下的索引器——它扫描每一笔比特币交易,读取铭文内容,按规则算出谁持有多少。
这就是根本区别:ERC-20的余额写在链上合约里,BRC-20的余额是索引器根据铭文记录推算出来的。比特币网络不认BRC-20,钱包和交易平台认,代币才有意义。如果索引器规则变了,或者某个平台用了不同的索引标准,同一批铭文算出来的余额可能不一致。
转账前的准备:钱包、UTXO和铭文隔离
先分清手里用的是支持Ordinals的钱包。常见的选择包括Xverse、UniSat、Magic Eden钱包、Hiro Wallet。交易所自带的充值地址通常不支持接收铭文,直接往交易所地址转BRC-20,很可能被当成普通比特币入账,代币部分无法识别。转之前到接收方平台确认它是否明确支持BRC-20充值,以及用哪个索引器。
然后理解UTXO。没有"余额"这个字段,只有一堆未花费的交易输出,每个UTXO有面额。你看到的"可用余额"是钱包把这些UTXO加总后的显示。如果某个UTXO上刻着铭文,它就不是普通比特币,不能当矿工费花掉。大多数Ordinals钱包会把铭文UTXO和普通UTXO分开显示,你要确认这个隔离功能是开着的。
准备一笔小额测试。第一次操作不要转全部。选一个面额小的铭文,往自己的另一个地址转一次,确认接收方能正确识别代币数量,再处理大额。同时确保钱包里有足够的普通比特币UTXO作为矿工费,费用不够交易发不出去,但如果误用了铭文UTXO当费用,铭文就没了。
分步操作:把BRC-20转进支持Ordinals的钱包
第一步,打开钱包的Ordinals或铭文标签页。以UniSat为例,界面会分"BTC"和"Ordinals"两个区域,找到你要转的BRC-20代币,点击发送。Xverse则在资产列表里单独列出铭文资产。
第二步,填写接收地址。这个地址必须是接收方支持Ordinals的地址,通常是bc1p开头的Taproot地址。不要填交易所的普通充值地址,也不要填bc1q开头的旧格式地址,除非对方明确说支持。地址填错,铭文可能进入一个无法识别的UTXO,恢复起来很麻烦。
第三步,设置矿工费。BRC-20转账的数据量比普通比特币交易大,占的区块空间多,费率通常要高于普通转账。钱包一般会给慢、中、快三档,选中间档即可。注意看钱包提示的"预计花费",确认它用的是普通UTXO而不是铭文UTXO。
第四步,检查找零地址。这一步最关键。比特币交易会把输入UTXO拆成接收方金额和找零两部分。如果钱包没有做"找零保护",刻着铭文的那一聪可能被分到找零输出里,而找零输出如果被后续交易当费用花掉,铭文就丢了。支持Ordinals的钱包会自动把铭文UTXO单独处理,找零回到你自己的地址。你在确认页面要能看到找零地址是自己控制的地址,而不是矿工或陌生地址。
第五步,签名广播。确认无误后签名发送,记下交易ID(txid)。到mempool.space或ordinals.com输入txid查询,能看到这笔交易的输入输出结构。验证成功的标准是:接收方钱包在Ordinals标签页里显示出对应数量的BRC-20代币,且发送方钱包里该铭文UTXO已消失、找零UTXO正常回到自己地址。如果接收方没显示,先等索引器更新,通常几分钟到半小时不等,不要急着重复发送。
容易出错的几个地方
把BRC-20当ERC-20转。ERC-20转账填地址、填数量、付Gas,一步完成。BRC-20的转账在索引器看来是"转移铭文所属的聪",操作逻辑不同。用普通的"发送"功能去转铭文,等于把刻字的聪当普通聪花掉,代币直接丢失。
用交易所充值地址收BRC-20。多数交易所的比特币充值地址不识别铭文,铭文进去后要么被归入普通比特币余额,要么需要人工申诉,成功率不高。转之前查清楚平台是否支持,以及支持到什么程度。有的平台只支持特定代币,有的需要填memo或标签。
矿工费给太低。BRC-20交易数据大,费率低的时候可能长时间卡在内存池。卡住期间不要用同一个铭文UTXO再发一笔,容易造成双花冲突或重复花费。等它确认或者用RBF(替换-by-fee)加速,前提是钱包支持。
在不支持隔离的钱包里操作。有些老钱包把铭文UTXO和普通UTXO混在一起显示,你看到的"可用余额"包含了铭文。一旦用它付矿工费,铭文就没了。换钱包之前先核实它有没有Ordinals隔离功能。
常见问题
BRC-20代币能转到以太坊地址吗?不能直接转。BRC-20活在比特币链上,以太坊地址是另一套账本。跨链需要经过桥或中心化平台,过程涉及托管方,风险和直接转账不同,要单独评估。转错了地址还能找回吗?如果转到了自己控制的另一个地址,且铭文UTXO还在,可以通过钱包的UTXO管理功能找回。如果转到了交易所地址或陌生地址,基本找不回。比特币交易不可逆,没有客服能撤销。
为什么接收方显示的数量和我转的不一样?可能是索引器差异。不同平台用的索引规则可能不同,比如对"自转账"或"批量转账"的处理方式不一致。以接收方平台的显示为准,转之前先小额测试确认两边算出来一致。BRC-20和ERC-20哪个更适合日常用?看用途。需要复杂功能、快速确认、低费率、丰富工具,选ERC-20生态。只想在比特币链上持有某种铭文资产,接受慢和贵,选BRC-20。两者不是替代关系,是不同链上的不同规则。
现在就可以做的两件事:打开你的Ordinals钱包,确认铭文UTXO和普通UTXO是否分开显示,没分开就换一个支持隔离的钱包;拿一个面额最小的BRC-20,往自己另一个地址转一次,走完整个流程,确认找零地址是自己控制的,再考虑处理更大金额。