作者:Ajian
BRC-20、上链的意义与 “客户端验证”:为什么你不该继续购买用这些 “协议” 发行的 token —— 它们根本不能被称为协议。比特币协议中有且只有一种东西:UTXO,比特币交易的输出,它的数额代表它的价值(以 “聪” 为单位),它的 “ScriptPubKey(脚本公钥)” 表示它的花费条件(解锁条件)。
可以用来编写脚本公钥的操作码是由比特币的共识规则提供的。这些操作码的意义在于编程验证条件(例如单签名、多签名、时间锁,等等),从而为一笔比特币 UTXO 设定花费条件(锁);但它并不能用来定义任意我们想要的规则。
也就是说,比特币脚本并不能用来创造一种不是比特币的 UTXO,也不能用来制作任意的安全机制(其实这两者是一回事)。所以,如果你想要在比特币链上发行资产,你永远只能依靠 “链下协议”,举凡 Omni、Counterparty、RGB、Taro、Ordinals,都不例外。
关键在于,既然脚本公钥(被比特币网络理解的验证程序)不能被任意编程,则这些链下协议所发行的资产,无论往链上写入什么数据,都不可能转化成这些资产的安全机制。举例,假如你发行了一种资产,无论你往链上写入什么数据,都不可能要求比特币网络来控制这种资产不通胀。
答案是:(1)我们要让资产的买方运行额外的验证程序(证据由买方提供),验证卖方所卖出的资产的属性,这就是所谓的 “客户端验证(client validation)”。比如,买方验证卖方所卖出的资产具有资产发行者的签名,以验证它是 “真币”;
(2)要让资产 “附身” 于某一个 UTXO,从而让比特币交易变成链外交易的证据(witness)、防止同一个资产被重复花费(因为一个 UTXO 不可能被花两次)。
这些自定义的规则,假设它能在客户端验证的基础上支撑其一个安全的协议,当然可以写入到比特币区块链,但是,这样的操作并不能增加安全性,因为真正的安全性来自于客户端验证。比特币协议做的事情,只是阻止 UTXO 重复花费,同时允许运用比特币脚本,为这样的资产编写在比特币链上转移的方法。
当前 Inscription 将内容通过见证脚本暴露出来的方法,仅仅起到了上文所述的(2)的作用,即标记特殊的比特币交易、阻止重复花费,但是,只要它不要求客户端运行额外的验证,就无法为这些 NFT 也好 FT 也好增加定制化的规则。
然而,(1)将资产附着到 UTXO 上并不需要你将资产的内容完全公布上链;(2)将为资产转移而提供的数据写到链上将耗费大量空间,经济性极差。这都是没有意义的事,将这些数据在链下提供给买方就可达成同样的效果(认为放在链上可以防止丢失的观点也是可疑的,它存在不意味着你就能找回来)
所以,请停止买入使用 Inscription 方法发行的 Token,直到这些 Token 的开发者提供允许客户端验证的规则,否则你买入的就是空气,得不到任何的保护。开发者们,如果你真的在乎你的用户,请先设想这样的客户端验证规则并实现这样的客户端。
金色荐读
金色财经 善欧巴
Chainlink预言机
区块律动BlockBeats
白话区块链
金色早8点
Odaily星球日报
MarsBit
Arcane Labs
深潮TechFlow
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。