深度研报|解析RGB协议的设计与特点以及面对的安全挑战

  RGB协议的作用是在闪电网络上为比特币增加了智能合约功能,基于零知识证明的状态通道协议,允许用户在链下进行隐私保护的交易。

  RGB不是一个代币协议,但它具备发行与管理多种高度可扩展、可编程和保密的资产的能力,或可以在金融之外的许多别的行业中发挥及其重要的作用。其协议的发展经历了多个重要阶段,从最初的构想到目前为比特币和闪电网络带来智能合约功能的RGB v0.10版本。

  4. 2021年,该协会展示了RGB协议的图灵完备虚拟机(AluVM),RGB也开始在闪电网络上运行。

  6.2023年4月,发布了RGB v0.10版本,为比特币和闪电网络带来完全支持智能合约的功能,标志着RGB协议进入最重要的发展阶段。

  首先,分布式系统最重要的价值是共识的维护,利用比识层只需要保留对账本事件的简短的加密提交(cryptographic commitments),证明特定数据存在但不透露实际数据内容的技术,通常通过哈希函数实现,仅在链上存储这些提交去保证数据的真实性和完整性,进而减少了链上数据的负担。

  RGB设计的账本数据存储在链下,也就是说所有的合约数据和状态转换都保留在链下,而不是在区块链上。利用单次使用密封和状态转换来追踪和验证智能合约的状态,在不将全部数据存储在链上的情况下,有效地处理和验证智能合约的状态和交易。

  RGB的基础层是比特币区块链,包括Nakamoto PoW共识和交易账本。虽然不需要在链上存储任何数据,但仍需要遵循现有的基础设施,并利用比特币交易作为这些承诺的存储。

  RGB智能合约在客户端验证模式下,所有数据都将保留在比特币交易之外,例如比特币区块链或闪电网络通道状态,使该系统能够在闪电网络之上运作,也为高级别的协议可扩展性和隐私提供了基础。

  RGB 智能合约的基本构成包括 Genesis(创世)、State(状态)和 Transitions(转换),每部分承担着不同的功能和角色:

  Genesis是智能合约的初始化声明,它定义了合约的基本属性和规则。这包括合约的类型、目的和任何初始设置。在代码中,genesis部分定义了合约的起始点,比如在一个身份验证合约中,它可以指定初始的身份信息。

  State代表了合约在任何给定时刻的当前状态,是合约数据的实时快照,包括了所有的变量值和资产信息。

  Transitions是定义从一个状态到另一个状态转换的规则。这些规则决定了状态如何根据合约逻辑发生明显的变化。op Revocation和op Transfer是转换的例子,它们定义了如何从一个Identity状态转移到另一个,或者如何在代币之间进行转移。

  通过这三个组成部分提供了一种方式来定义和执行各种操作和协议。Genesis设定了基础规则和参数,State维护了合约的当前信息,而Transitions则规定了状态之间的变化逻辑,共同构成了RGB智能合约的核心架构。

  为了确保安全和高效地管理资产转移,同时保护用户隐私。RGB协议使用了“single-use-seals”的方法,这种方法允许将资产(如代币)与比特币的一个特定交易输出绑定,使得每次资产转移都需要“打开”一个旧的密封并“创建”一个新的密封。

  一次性封装用于代表资产的所有权或合约状态。每次状态转移或交易发生时,相关的封装会被关闭并创建新的封装,这样做的好处是,每个密封只可以使用一次,从而防止了资产的重复使用或双重支付,确保了交易的安全性,进而确保资产的转移不可篡改。

  同时,由于这些操作是在客户端进行的,而不是全部存储在区块链上,因此大大增强了用户的隐私保护,并减少了对区块链空间的占用,提高了整体网络的效率和可扩展性。

  RGB协议采用了模式(Schema)的概念,类似于面向对象编程中的类。模式用于定义RGB资产的标准,便于钱包、交易所、浏览器和BTC节点支持RGB资产。在这个框架中,一个具体的RGB合约是某个模式的实例,由该模式的构造函数(“创世操作”)创建。这种方法分离了合约开发者(模式开发者)和合约发行者的角色,使得后者无需具备编程或安全知识。

  RGB协议还引入了AluVM虚拟机,这是一个图灵完备的虚拟机,类似于以太坊的EVM。它可以执行几乎所有类型的计算,但受到操作步骤数的限制。AluVM通过累积的计算复杂性度量来限制计算,类似于以太坊的gas消耗机制。

  在合约定义方面,RGB协议使用特定的数据类型,如PgpKey,这些类型不是合约的直接组成部分,而可以被多个合约共享。合约的状态和操作,如Identity和Revocation,被定义为合约状态的组成部分和可能的状态转换。

  合约实例化是通过将模式应用于详细情况来完成的,例如,meSatoshiNakamoto实现了DecentralizedIdentity模式,定义了初始状态并将其分配给一次性密封。状态转换,如通过Revocation操作,涉及更新身份并将其分配给新的一次性密封。

  RGB协议允许扩展合约功能,如添加IOU(I OWE YOU)代币,在合约中表现为可拥有的状态IOYTokens。此外,还有全局状态,如IOYTicker和IOYName,这些是合约的全局属性,不被任何一方直接拥有。

  状态扩展的概念允许公众参与合约的特定逻辑部分,如通过声明Burn的方式。状态扩展操作允许任何人在不进行链上承诺的情况下创建状态扩展,类似于未打包进区块的比特币交易。

  标准化通信:合约接口提供了与RGB节点交流的标准方式,要求它返回有语义意义的状态并创建操作。

  类似于以太坊的ERC标准:这些接口类似于以太坊的ERC标准,通用的接口被称为“RGBxx”,作为独立的LNP/BP标准定义。

  接口实现:实现接口时,将特定模式的状态和操作与接口绑定。例如,FungibleToken接口为DecentralizedIdentity模式实现了全局和拥有的状态绑定。

  当前的RGB协议是首个完全支持智能合约的版本,后续RGB协议可能会进行一些重大的更新或者修改,这会导致目前开发的合约无法在后续版本安全、稳定地运行。RGB的客户端验证节点也仍在更新中,还未有稳定的版本。

  RGB协议的设计和实现都相当复杂,基于RGB协议开发的智能合约需要仔细考虑很多RGB协议的特性。例如,基于RGB协议发行的代币,如果交易失败或是没有正真获得RGB节点的确认,那么这些代币不属于任何UTXO,相当于被销毁了,开发者和项目方需要仔细考虑这类情况对于项目代币经济的影响。

  RGB协议目前仍处于非常早期的阶段。RGB协议通过其独特的模式定义、AluVM虚拟机、灵活的合约状态管理和扩展机制,展现了其在BTC智能合约领域的创新,支持在比特币网络和闪电网络上进行多种资产的发行和转移。

  但目前RGB协议与闪电网络还未完全兼容,智能合约的开发和运行未有安全保障,用户使用RGB协议时需留意风险。返回搜狐,查看更加多