作者:Ajian
BRC-20、上链的意义与 “客户端验证”:为什么你不该继续购买用这些 “协议” 发行的 token —— 它们根本不能被称为协议。比特币协议中有且只有一种东西:UTXO,比特币交易的输出,它的数额代表它的价值(以 “聪” 为单位),它的 “ScriptPubKey(脚本公钥)” 表示它的花费条件(解锁条件)。
可以用来编写脚本公钥的操作码是由比特币的共识规则提供的。这些操作码的意义在于编程验证条件(例如单签名、多签名、时间锁,等等),从而为一笔比特币 UTXO 设定花费条件(锁);但它并不能用来定义任意我们想要的规则。
也就是说,比特币脚本并不能用来创造一种不是比特币的 UTXO,也不能用来制作任意的安全机制(其实这两者是一回事)。所以,如果你想要在比特币链上发行资产,你永远只能依靠 “链下协议”,举凡 Omni、Counterparty、RGB、Taro、Ordinals,都不例外。
关键在于,既然脚本公钥(被比特币网络理解的验证程序)不能被任意编程,则这些链下协议所发行的资产,无论往链上写入什么数据,都不可能转化成这些资产的安全机制。举例,假如你发行了一种资产,无论你往链上写入什么数据,都不可能要求比特币网络来控制这种资产不通胀。
Omni 协议使用 OP_RETURN 输出记录交易数据、Ordinals NFT 利用特定的格式(inscription)加载内容,但这些东西都无法进入脚本公钥,都无法成为有意义的安全机制。 那么,如何增设这些自定义的规则呢?
答案是:(1)我们要让资产的买方运行额外的验证程序(证据由买方提供),验证卖方所卖出的资产的属性,这就是所谓的 “客户端验证(client validation)”。比如,买方验证卖方所卖出的资产具有资产发行者的签名,以验证它是 “真币”;
(2)要让资产 “附身” 于某一个 UTXO,从而让比特币交易变成链外交易的证据(witness)、防止同一个资产被重复花费(因为一个 UTXO 不可能被花两次)。
这些自定义的规则,假设它能在客户端验证的基础上支撑其一个安全的协议,当然可以写入到比特币区块链,但是,这样的操作并不能增加安全性,因为真正的安全性来自于客户端验证。比特币协议做的事情,只是阻止 UTXO 重复花费,同时允许运用比特币脚本,为这样的资产编写在比特币链上转移的方法。
当前 Inscription 将内容通过见证脚本暴露出来的方法,仅仅起到了上文所述的(2)的作用,即标记特殊的比特币交易、阻止重复花费,但是,只要它不要求客户端运行额外的验证,就无法为这些 NFT 也好 FT 也好增加定制化的规则。
然而,(1)将资产附着到 UTXO 上并不需要你将资产的内容完全公布上链;(2)将为资产转移而提供的数据写到链上将耗费大量空间,经济性极差。这都是没有意义的事,将这些数据在链下提供给买方就可达成同样的效果(认为放在链上可以防止丢失的观点也是可疑的,它存在不意味着你就能找回来)
所以,请停止买入使用 Inscription 方法发行的 Token,直到这些 Token 的开发者提供允许客户端验证的规则,否则你买入的就是空气,得不到任何的保护。开发者们,如果你真的在乎你的用户,请先设想这样的客户端验证规则并实现这样的客户端。
许多朋友从别的社区进入这个生态,往往带着固有的认知来理解比特币,但在别的链上有意义的事,在比特币上不一定有意义。 请好好理解比特币,理解客户端验证范式,理解将一切其余资产都交给链外协议的智慧。通过消耗区块空间(共识资源)来获得可编程性的做法,注定在可扩展性和隐私性上面临可悲的结局。
来源:金色财经