作者:阿剑
本文测验为比特币上的一种财物发行协议 RGB 供给一份简练的描绘(也能够将它了解成一种链外智能合约体系),并指出其迥异于其它旨在完结相同或相似功用的协议的当地,这些区别使得 RGB 协议的可扩展性远远超过它们,而且留下了更广阔的编程空间。除了介绍 RGB 现已完结的规划,咱们还会探讨这些编程或许性。
什么是 RGB 协议?
在比特币上发行财物的主意由来已久。但比特币协议有本身的特性:其状况由且仅由比特币 UTXO(「未花费的买卖输出」)来表达;一个 UTXO 仅携带两个数据:它本身的面额(比特币价值),以及一个「脚本公钥」(也称为「确定脚本」),用于编程这笔资金的花费条件,例如:供给某个公钥的签名;答使用来编程确定脚本的操作码由比特币的一致规矩供给,它们不能用来完结恣意的安全规矩。因而,咱们不行能在 UTXO 内部创造其它财物——比特币脚本不能编程出这些财物的安全查看。这就意味着,一切在比特币上发行财物的主意,本质上都是比照特币区块空间的创造性运用。这意味着,咱们需求规划一种链外的智能合约体系,并要求将改动合约状况的进程——例如,合约 A 改动了参数,B 将一定数量的某种财物搬运给了 C——的信息上传到区块链,然后,能够通过搜集这些信息,取得这个智能合约体系的最新状况。
一种粗糙的规划思路是,将改动合约状况的进程的信息原封不动地上传到比特币区块链。这当然是能够工作的,可是,它会面临几个方面的问题:
(1)由于上传了完整的信息,它或许会耗费较多的区块空间,当用户需求改动合约的状况(例如转账)时,也将需求付出更多的链上手续费。尤其是,当咱们期望这样的链外合约体系具备比比特币更好的可编程性时,可编程性的增加或许以耗费更多的区块空间为代价;
(2)区块内的简直任何一处的信息,都有或许改动链外的智能合约,因而,用户有必要取得一切的比特币区块数据,才能得出这个链外合约体系的最新状况,即它的验证本钱更高;
(3)取决于链外智能合约体系的规划,或许只能取得跟比特币适当的隐私性,甚至更差的隐私性;而假如能够供给更多的隐私性,又或许需求耗费更多的区块空间。
过去,一种运用量较大的协议叫做「Omni」,它不会上传链外合约买卖的完整信息,只会上传买卖的哈希值。这种做法处理了上述问题 ,使链外合约买卖的复杂性与其经济本钱解耦;但用户仍然需求取得全量的比特币区块数据,才能得出 Omni 协议的最新状况;此外,它也并没有专门加强隐私性。
而 RGB 则运用了一种新的范式,叫做「一次性密封(single-use seals)」。它的用法很简单:RGB 要求每一个合约的每一个状况,都有必要附身于某个比特币 UTXO;而一旦要改动这个状况,就有必要花费这个 UTXO、让花费它的买卖得到区块链的承认;此外,花费它的比特币买卖还有必要供给状况转化的内容的哈希值,以指明改动后的状况所附身的 UTXO。
在 RGB 开发者看来,这种规划跟带有编号的塑料密封条有类似的当地:很容易看出它是否被拆过,而且一旦被拆过,就无法再用了。可是,另一种角度是,将被附身的 UTXO 当成这个状况的容器或者说陶瓷存钱罐——想要拿出存钱罐里的钱,就有必要打破这个存钱罐,然后把里边的钱放到新的罐子里。
这种规划与此前的把整个区块都当成一个大写字板的协议形成了鲜明的比照:运用 UTXO 当容器,就意味着,不花费这个 UTXO 的买卖对容器里边的合约状况不能构成任何影响,因而,要验证某一个合约的某一个状况,咱们就不需求取得悉数区块的数据了,咱们需求的只是一连串的比特币买卖、这些比特币买卖在某个区块中存在在根据、这些比特币买卖所许诺的 RGB 状况转化(跟相关的比特币买卖一一成对),即可。这些能够串联成一个链条的数据,应该能让咱们上溯到这个合约的初始状况,使咱们能够辨认这个状况的本质。
关于了解链上智能合约体系(比方以太坊)的读者来说,这个进程难以了解的一个当地在于:假如不依靠于区块链的一致(它意味着合约的初始状况和每一次状况改动都会被每一个节点验证),这种智能合约体系的安全性是怎么确保的?怎么确保自己收到的财物便是自己想要的那一种,怎么确保财物没有被非法增发?
答案也很简单,叫做「客户端验证(client-side validation)」——你自己验证。在链上合约体系中,节点根据揭露的状况转化规矩,验证每一次状况转化操作、拒绝掉无效的操作,然后根据初始状况核算出最新的状况。可是,只要状况转化规矩和初始状况是可知的,通过链上一致来验证就不是仅有的办法,用户能够根据付出方供给的材料,自己验证状况转化的每一步是否都遵从了最初界说的状况转化规矩。通过这种办法,验证的一方(假设是财物的接纳方)相同能查看出非法的状况转化,并拒绝承受。
终究,咱们用一个例子来展现 RGB 协议的特点:
现在,Alice 具有 UTXO A』,保存着根据 RGB 协议发行的 X 单位的财物 Y,她期望将 Z 单位的 Y 搬运给 Bob。这批财物总共经历了 5 个上一任一切者(包括财物发行者),才抵达 Alice 手上。因而,Alice 要给 Bob 供给这 4 次状况转化的根据(这其中前面 3 次的根据都是由上一任一切者供给给 Alice 的),包括合约的初始状况和状况转化规矩、每一次搬运所用的比特币买卖、每一笔比特币买卖所许诺的 RGB 买卖、这些比特币买卖得到某个区块承认的根据,一同发送给 Bob,Bob 将根据合约的状况转化规矩,验证这 4 次搬运没有违背规矩,然后再决议是否要承受。当 Alice 结构 RGB 买卖时,由于 Z 小于 X,她也要给自己安排一个 UTXO 来接纳剩下的部分。终究,Alice 将这笔 RGB 买卖的哈希值嵌入花费 UTXO A』 的比特币买卖中,完结这次付出。
终究,由于运用了 UTXO 容器,一个 RGB 的合约的最新状况能够标明成一个有向无环图上还没有子孙的点(每个点都标明一个存放在 UTXO 容器内的状况)。而且,对下图中的一切者 P 来说,他将只知道从合约的初始状况 G 抵达他的进程,也即红圈标注的进程,而对灰色的点一窍不通:
RGB 的优势
轻量的可验证状况
如上所述,与此前在比特币上呈现的财物发行协议(链外合约体系)比较,RGB 大幅降低了验证(一个合约的某一个状况)的本钱。在买卖的时分,接纳者不再需求遍历一切区块来搜集合约状况产生改动的信息,而只需取得一连串的比特币买卖,以及这些买卖所许诺的 RGB 买卖、这些比特币买卖的区块包括根据(根据区块头的默克尔根据),就能坚信付出方真的具有一定数量的某种财物。
这种验证本钱的降低,也大幅度减少了用户对大型根底设施供货商的依靠(信赖)。在以往的协议中,由于验证本钱较高,用户难以自己核算出合约的最新状况,因而用户有必要信赖一些供货商(比方自己的钱包所运用的合约状况供货商);一起,由于能够担负这样的核算本钱的供货商较少,这也意味着供货商的中心化。但在 RGB 中,用户只需运用比特币轻客户端来查看与比特币买卖的部分、运用 RGB 协议来查看 RGB 买卖的部分,自己就能够担负。
跟一些链上合约体系比较,RGB 相同显得更为轻量。这体现在 RGB 能够针对性地验证一个合约的某一个状况;而在那些并不根据 UTXO 的体系上,由于缺少 UTXO 这样操控准入的机制,恣意一笔买卖都或许改动恣意状况,所以,你简直不行能针对性地验证某一个状况,而只能在核算出一切最新状况的一起确定某一个状况——在这个意义上,被表达为「全局状况(global state)」的特性实际上应该被称为「整体状况(uniform state)」,虽然它供给了合约之间穿插拜访的特性,但这也决议了其验证本钱会更高、更难取得免信赖性。
在这些链上合约协议上,一种重大的优化办法是要求区块头许诺最新状况(「状况根」),然后答应轻客户端根据这些许诺验证从全节点处得到的某个合约的某个状况。这是一种复用现已产生的核算(全节点现已运行过的核算)的办法,也十分高效,因而,假如不考虑免信赖性,能够认为它比 RGB 更为高效。可是,它究竟意味着:轻节点在买卖根底验证以及合约状况核算上都依靠于全节点。而在运用比特币轻客户端的 RGB 钱包中,它所依靠的信赖假设是相关的比特币买卖是有用买卖,而与合约状况相关的部分则是客户端亲身验证过的,因而免信赖性更好。缺点是验证的时延更长,需求保管的数据更多。
可扩展性
RGB 的可扩展性体现在两个方面:
嵌入比特币买卖中的仅仅是一条哈希值,这意味着 RGB 买卖的体积(除了合约自界说的规矩之外)没有什么约束——即便你把一份 RGB 财物分成了 100 份(RGB 买卖本身将十分大),需求嵌入比特币买卖中的也只要一条哈希值。如注 6 所述,嵌入这样的哈希值的办法有两种:一是运用 OP_RETURN 输出,这意味着它会耗费一个哈希值的链上空间;二是躲藏在 Taproot 输出的脚本公钥所许诺的脚本树上——这不会耗费任何链上空间。这一点相同也意味着,用户不用为了可编程性而献身经济性——仅考虑链上手续费的话。
RGB 合约的最新状况是一个有向无环图上没有子孙的独立的点——这意味着这些状况能够独立改动、互不影响,也便是答应并发。这实际上也是继承自 UTXO 的特性。这一点相同也意味着,在一个分支上产生的无效改动(无效买卖),不会影响其它分支,更不会导致整个合约卡死,因而也能够视为一种安全性好处。
RGB 在可扩展性上被批判的一点是:每一次搬运,都需求接纳者验证从初始状况到付出者状况所涉及的一切买卖——跟着财物易手的次数增加,后续的接纳者的验证担负会越来越重。这个批判是实在的。而优化它则意味着咱们也要找到一种办法来复用现已产生过的运算。证明体系技能(比方 SNARKs)有望供给这样的处理方案。
财物界说与保管机制的分解
终究一个好处仍然跟 UTXO 有关,取决于咱们怎么了解 UTXO 的确定脚本机制。
确定脚本能够用来编程一笔资金的解锁条件,因而,它能够完结保管规矩。例如,假设一个确定脚本包括且仅包括了一把公钥,那就意味着只要对应的私钥的主人能够操控它。可是,这样的保管规矩相同是比特币合约式协议编程的根底。例如,一个运用 2-of-2 的多签名确定脚本的 UTXO 能够是一条闪电通道;在通道运行期间,两边能够产生简直无数次彼此付出,而资金的链上方式不会有什么改动。换言之,在此时,2-of-2 的多签名确定脚本构成了一种价值搬运机制,答应两边在不变化链上资金方式的前提下搬运价值。
这样的机制能够用在 UTXO 所承载的比特币价值上,天然,也能够用在它所承载的 RGB 财物上。咱们能够发行一种 RGB 财物,让它附身于一个 2-of-2 多签名 UTXO,然后利用闪电通道的机制,在两边间无限次彼此付出这种财物。同理,RGB 财物也能够进入其它根据比特币脚本的合约。
在这里,UTXO 的脚本和 RGB 协议形成了功用上的分解:前者致力于完结价值保管和价值搬运的规矩;而后者专注于财物界说。然后,财物的保管和财物的界说能够拆分开来。这是一种重要的安全性提高,也是人们在一些其他链上合约体系中孜孜以求的东西。
RGB 现已作出的规划
上述特性,实际上对一切根据 UTXO 一次性密封和客户端验证的协议都成立。但在此根底上,RGB 协议又做出了进一步的规划。
在当前的 RGB 协议的开发中,开发者们尤其重视协议的隐私性,因而 RGB 在两个方面加强了隐私性:
盲化 UTXO。在 RGB 买卖中,接纳方只需运用混淆后的 UTXO 标识符来接纳财物,而无需暴露真正接纳财物的 UTXO 的特征。这丝毫无损接纳者向下一任一切者供给根据的才能,一起又使后续的财物接纳者能够对抗上一任财物一切者的窥探。
Bulletproof。可用来躲藏每一次买卖中的具体数额。但后续的财物一切者仍然能验证此前没有呈现过增发。
可待探究的空间
在这一部分,我将讨论 RGB 协议还能够持续探究的空间,主要跟可编程性有关。
当前,现已提出的 RGB 合约模板(schema)都集中在财物发行上。可是,由于 RGB 运用了「客户端验证」范式,实际上,咱们能够给它增加任何能够用客户端验证来确保的特性——仅受 UTXO 这种结构的约束。
约束条款
而在 UTXO 的根底上,一个能够拓展可编程性的概念叫做「约束条款(covenants)」。约束条款的原意是约束一笔资金能够搬运的目的地。有了这种才能,咱们就能够编程许多有趣的使用,比方:
非交互式取款的资金池。咱们能够让许多人的资金都聚集在同一个 UTXO 中,并运用约束条款确保他们任何人都无需其他人协助,就能够取出归于自己的资金。这能够起到在区块空间需求高涨时以低本钱协助人们从高风险的当地退出的作用。
保险柜合约。让一笔资金有必要先花费到某个当地、通过一个时刻锁才能自在花费;而在时刻锁期间,保险柜主人能够用一把紧急密钥打断这个进程、将资金当即搬运到其他当地。这种装置能够为自主保管供给极大的协助。
当前的比特币脚本并没有这种才能,因而,在比特币脚本上启用约束条款需求软分叉。
可是,只要咱们愿意献身一些由「财物界说与保管机制的分解」带来的好处的话,咱们就能够在 RGB 财物上试验这样的特性,咱们能够在 RGB 合约层面完结这样功用——虽然它只能对运用它的 RGB 财物生效(而不能比照特币生效),但无疑会开启一个有趣的空间。
已有的约束条款的研讨标明,它能够拓展根据 UTXO 的买卖的编程空间,供给许多特性。但这些研讨基本上是根据比特币的,而在比特币这样的协议上,咱们会愈加保守一些。而在 RGB 上,咱们能够大胆地将约束条款的核心才能——在脚本层面读取花费本身的买卖的才能——进一步泛化,然后供给更灵活的可编程性:穿插拜访合约的才能。
穿插拜访
最小的约束条款意味着一个 UTXO 在被花费的时分,其脚本能够读取花费买卖的输出。但彻底泛化的约束条款则意味着:它能够读取花费它的买卖的一切部分。这就意味着,它也能够读取买卖的其它输入,假如咱们不限制其它输入有必要来自同一个合约,那就意味着,它能够读取其它合约的状况。
在 RGB 中,咱们默认每一个合约都是一个独立的世界,有归于本身的有向无环图。可是,仍然有或许呈现一个用户一起持有两个不同合约的状况的情况。假如 RGB 买卖答应一起花费来自两种合约的财物,这样的穿插拜访才能或许就有使用场景(虽然能够梦想它会让买卖的验证变得愈加复杂)。
实际上,现已有根据 UTXO 类似结构的链上合约体系(例如:Nervos Network),运用这一点来完结合约的穿插拜访才能。这是一个十分新的范畴,开向以往的比特币研讨很少触及的范畴,或许埋藏着什么惊喜也说不定。
结论
在本文中,读者会发现,有个概念被频频提及、贯穿了推理和梦想的一切进程:「UTXO」。这正是我的用意。假如你不了解 UTXO,你就无法了解 RGB 这样的协议的规划的起点,也不能了解 RGB 协议规划的优点,也无法梦想人们运用它的方式。RGB 协议的特性在很大程度上正是由其 UTXO 这种一次性密封的方式刻画的。相应地,比特币研讨范畴积累的对 UTXO 的研讨,也能够被咱们化用到对 RGB 的研讨中。
这也解释了,为什么不了解比特币的人,将很难了解 RGB。而喜欢比特币的人,会认可 RGB 现已作出的规划。
此时快讯
【日本HokkokuBank与Kono Shinkin Bank计划将于年底推出稳定币】金色财经报道,日本地方银行HokkokuBank和河野信用银行 (Kono Shinkin Bank) 宣布将推出本地数字货币计划。此外,HokkokuBank计划在今年年底前增加一种存款支持的稳定币Tochika。