RGB、RGB++ 协议的基石：一次性密封和客户端验证

在比特币生态中，各种扩展解决方案如雨后春笋般涌现，以应对比特币网络所面临的诸多挑战。其中，闪电网络（Lightning Network）通过巧妙构建的链下支付通道，来解决比特币交易 “又贵又慢” 的痛点。与此同时，RGB 和 RGB++ 等协议则将目光投向了另一个重要领域 — — 在比特币一层网络上发行资产，并拓展比特币的可编程性。

RGB 和 RGB++ 协议的核心基石是一次性密封（Single-Use-Seal）和客户端验证（Client-side Validation， CSV）技术，最早由著名的 Bitcoin Core 早期开发者 Peter Todd 在 2016 年提出。这篇文章，我们将详细介绍一次性密封和客户端验证技术，以及 RGB 和 RGB++ 协议的不同之处。

一次性密封和客户端验证

想象一下，你正在通过物流寄送一个装有珍贵货物的集装箱。为确保集装箱在运输过程中不被擅自打开，你可能会使用到一种特殊的封条：一次性密封条。这种带有独特编号的塑料扣密封条一旦被拆开，就无法复原，从而有效防止集装箱被暗中打开。

图：带有独特编号的塑料扣一次性密封条；来源：https://petertodd.org/2016/commitments-and-single-use-seals#single-use-seals

在数字世界中，我们同样需要这样的 “密封” 机制来保护信息或者资产。传统的电子密封条往往依赖于中心化的可信实体来验证其状态，但在去中心化的区块链世界里，我们追求的是无需信任的解决方案。那么，如何在没有中心化权威的情况下实现可靠的电子密封呢？答案就藏在比特币的 UTXO 模型中。

UTXO，全称为未花费的交易输出（Unspent Transaction Output），是比特币的基本组成单元。每个 UTXO 都包含两个关键信息：它自身的面额，以及一个决定如何花费这笔资金的锁定脚本。比特币的 UTXO 模型设计和共识规则确保了每个 UTXO 只能被花费一次。 为了方便理解，我们可以简单地把每个 UTXO 想象成一个小型保险箱，里面装着一定数量的比特币。每个保险箱只能被打开一次，打开后里面的比特币就会被取出，而保险箱本身则会被销毁。这种设计与一次性密封条的特性不谋而合：创建 UTXO 就像是封上密封条，而花费 UTXO 则相当于拆开密封条。

比特币通过久经时间检验的工作量证明（PoW）共识机制来防止 “双花（即一个 UTXO 被重复花费多次）”，保证用户资产的安全性。所以，使用 UTXO 作为一次性密封条的另一个显著优势，是它能够 100% 继承比特币区块链的安全性。

RGB、RGB++ 等比特币一层资产发行协议巧妙地利用了 UTXO 的这一特性，将其视为资产信息和交易信息的容器。这些信息以 Commitment（承诺）的形式附着在特定的比特币 UTXO 上。当需要更新相关信息时，必须花费这个 UTXO，并在新的交易中指定更新后的资产信息所附着的新 UTXO。

然而，比特币脚本的局限性使得无法直接在比特币链上通过编程实现除 BTC 之外的资产的校验。 为解决这一棘手问题，客户端验证（CSV）模式应运而生。在这种模式下，用户需要自行验证资产的有效性和交易的合法性。

RGB 和 RGB++：两种路径，一个目标

RGB 和 RGB++ 都是建立在一次性密封和客户端验证基础上的比特币一层资产发行协议，但它们在实现方式上各有特色。

RGB 由 Maxim Orlovsk 领导的 LNP/BP 标准协会主导，旨在打造一个基于比特币的图灵完备、可扩展且隐私性强的智能合约方案。RGB++ 则是由 Nervos CKB 联合创始人 Cipher 于今年 2 月份提出，并于 4 月初部署到主网。7 月，RGB++ 进一步升级为 RGB++ Layer，致力于为所有 UTXO 链带来同构绑定、智能合约能力和无桥跨链等功能。

** 从用户的角度看，两者的主要区别在于验证机制。**RGB 要求用户自己运行客户端进行验证，这有点像让每个人都成为银行的出纳员。RGB++ 则借助图灵完备的 UTXO 区块链（如 Nervos CKB）来进行验证，相当于聘请了一位专业的会计师来处理复杂的账目，当然如果用户不信任会计师，也是可以选择自行验证的。

让我们通过一个具体的转账例子来说明这两种协议的工作流程：

假设 Alice 拥有 100 枚基于 RGB 协议的 TEST 代币，她想转账 40 枚给 Bob 作为生日礼物，其流程如下：

Bob 首先需要开具一张电子发票，并将其发送给 Alice（这个步骤类似于闪电网络中的交易流程）。

Alice 收到并检查 Bob 的发票后，生成一笔 RGB 交易，将 40 枚 TEST 代币转给 Bob。同时，Alice 还需要从她的本地客户端历史数据中，筛选出与这些 TEST 代币相关的所有历史记录，以证明她对这些代币的所有权。Alice 随后将新的转账交易和所有权证明材料一并发送给 Bob 进行验证。

Bob 收到后，会仔细检查每一枚 TEST 代币及其历史，确保它们是真实有效的。检查无误后，Bob 会生成一个 “确认签名” 并返回给 Alice。

Alice 收到 Bob 的确认签名后，将这笔 RGB 交易对应的 Commitment（承诺）广播到比特币区块链上。

如果 Alice 转给 Bob 的是 40 枚基于 RGB++ 协议的 TEST 代币，过程会简单得多：

Bob 只需将自己的 BTC 地址发给 Alice（如果 Alice 已经知道，这步可以跳过）。

Alice 直接通过钱包将 40 枚 TEST 代币转给 Bob。

在比特币区块链上，这两种交易都表现为 Alice 花费了一个关联着 100 枚 TEST 代币的 UTXO #1，并生成了两个新的 UTXO：一个关联着 40 枚 TEST 代币的 UTXO #2（转给 Bob）和一个关联着 60 枚 TEST 代币的 UTXO #3（Alice 的找零）。

区别在于，RGB 协议中，UTXO #1、UTXO #2、UTXO #3 关联的 TEST 代币信息需要通过 RGB 客户端解析出来和验证。而在 RGB++ 协议中，这些 UTXO 分别被同构绑定到 CKB 区块链上的 Cell #1、Cell #2、Cell #3（Cell 是增强版的 UTXO），TEST 代币信息直接存储在 Cell 中，验证工作由 CKB 区块链的矿工完成，无需 Bob 自己来执行（当然，他也可以选择自己验证）。

使用图灵完备的 UTXO 区块链（比如 Nervos CKB）来替代客户端验证，不仅简化了用户操作，也给 RGB++ 带来了其他好处， 比如它解决了 RGB 面临的客户端数据孤岛问题、无主合约问题、P2P 网络问题，等等。

结语

一次性密封和客户端验证技术的创新应用，为比特币网络带来了更多可能性。RGB 和 RGB++ 作为这一技术的杰出代表，正在为比特币生态系统开辟新的道路。它们不仅扩展了比特币的功能，还为资产发行和智能合约的实现提供了安全、高效的解决方案。

让我们共同期待 RGB、RGB++ 以及未来可能涌现的其他创新协议，进一步拓展比特币的疆界！