Commit-Chains
什么是 commit-chains
Commit-chains 也是 "Plasma" 的通用术语 —— 以太坊以及其他区块链的 Layer-2 扩容解决方案。
Vitalik Buterin 曾开玩笑地说,"Commit chains" 更符合比特币的品牌形象,而 "Plasma" 对以太坊来说更符合其品牌形象。
Commit-chains 有时也被形容为非托管的侧链,它们并不像侧链那样引入新的共识机制 —— 它们依赖于主链的共识,这使得它们与主链一样安全。
在 commit-chains 中,无需信任和非托管的运营者促进了交易各方的通信。运营者通过定期发送更新至主链,以验证用户账户余额的状态。
Commit-chains 的工作原理?
与支付通道不同,commit-chains 一旦启动就一直处于持续状态,而不是依赖于“三种状态”模型 (开放、实时、争议/关闭)。
运营者启动 commit-chain 后,用户可以加入并执行记录在 commit-chain 上的交易,同时用户任何时候都可以将其资产提款至主链中。
定期检查点证明 (Commitments)
Commit-chain 的用户可能需要定期观察链上检查点证明,该证明的实例可以为默克尔根或者零知识证明 (ZKP)。
虽然零知识证明在链上执行一致的状态转换,但"默克尔根证明"并不会执行,这就要求用户参与挑战回应协议,以挑战运营者的不当行为。
数据可用性请求
因为数据并不是广播到网络上的,所以用户必须检索和维护退出 commit-chain 所需的数据。
根据不同的实现,当数据不可用时,要么用户会被强制退出 (就像在 Plasma 中) 或者运营者会被要求提供必要的数据 (就像在 NOCUST 中)。
遇到作恶的行为时,允许用户带着他们最后确认的余额退出。
中心化但无需信任的中介
中心化运营者从不持有托管资金,所以如果运营者不可用,最坏的情况只是用户无法再进行链下交易,但他们在任意时间退出并转移到另一条 commit-chain 上。
交易敲定
与支付通道不同,commit-chain 运营者不需要链上抵押品来安全地在用户之间进行支付。
Commit-chain 交易不像支付通道那样提供即时的交易敲定,但是提供链上检查点之后的最终敲定。
然而,如果运营者选择为每个用户分配抵押品,实质上是在 commit-chain 上实现一个支付通道,那么就有可能实现即时的交易敲定。
减少路由需求
单个 commit-chain 有可能承载数百万名的用户,所以我们设想用几个静态连接的 commit-chain 来产生稳定的网络,并降低路由的复杂性。目前还没有人提出原子式跨 commit-chain 交易。
Commit-chain 的安全属性
用户端的安全属性可以概括如下:
商定的转换
Commit-chain 交易至少需要发送方和 commit-chain 的运营者同意。
余额安全
诚实的用户总是可以利用链上争议从 commit-chain 上撤回商定的余额。
即使运营者和所有其他 commit-chain 用户串通,也能够为诚实用户提供余额安全保障:因为只有当发送者和运营者同意某笔支付,并通过定期的链上检查点验证时,交易才可以被敲定。
状态发展
用户任何时候都可以在链上强制执行链下的状态转换。
证明的完整性
由于 commit-chain 没有固定的 3 个阶段的生命周期,commit-chain 的用户能够在任意时间点验证运营者的证明完整性,并强制运营者操作并回滚到之前的定期证明中。
NOCUST commit-chain
概述
“NOCUST commit-chain” 的概念是由 Liquidity Network 以及他们的同行在一篇学术论文中首次提出。
NOCUST 是一种基于账户的 commit-chain,在 NOCUST 中,一个链上地址与一个 commit-chain 账户相关联。
NOCUST 链上合约期望能够定期从运营者 (该运营者包含了抵押池中的每个用户账户) 中接收证明,这是一个 commit-chain 账本状态的恒定大小的证明。
自由建立
用户可以在合约中存入任意数量的代币,并对其他用户进行任意面额的 commit-chain 支付。而用户可以不需要链上交易就可以自由加入 commit-chain,用户可以要求运营者签名,然后立即接收 commit-chain 交易。
商定的转换
NOCUST 内的交易是由发送者和运营者共同签名而执行的,以预防潜在的双花情况。
即时的交易敲定
只有当运营者将抵押品抵押给接收者时,才有可能实现状态发展。NOCUST 规定了一种机制,即在恒定大小的链上证明中向所有 commit-chain 的用户分配抵押品,这能够实现特定数量的即时交易敲定。
在每个链上检查点之后,分配的抵押品是可以重复使用的,在这一点上,交易吞吐量只受运营者的带宽和计算吞吐量限制 —— 与检查点证明的间隔无关。
证明的完整性
每个用户只需向运营者请求数据,并在定期的时间间隔内将其与本地存储的状态进行比较来观察完整性,从而验证自己余额证明。
遇到作恶行为时,用户可以使用 NOCUST 智能合约提出挑战。如果运营者返回的无效信息或者不回应,用户就能够证明其不当行为。
NOCUST 通过 zkSNARKs 支持可证明的一致操作模式。底层智能合约将验证 Layer-2 状态转换,如果不停止,运营者将无法验证无效的状态转换。
比较 commit-chains
将 NOCUST commit-chain 与 Plasma Cash 进行比较,后者是一份最全面的 Plasma 实现的运行草图。
比较数据基于 知识学术论文的系统化,并来源于与 Georgios Konstantopoulos 的讨论。
一般属性 | Plasma Cash | NOCUST |
---|---|---|
安全证明 | ✕ | ✓ |
链下交易接收 | ✓ | ✓ |
同质化代币的支付 | ✕ | ✓ |
客户端可以保持离线状态 | ✕ | ✕ |
安全大批量退出 | ✓ | ✓ |
即时的交易敲定 | ✕ | ✓ |
代币支持 | ✓ | ✓ |
非同质化代币 (NFT) | ✓ | ✕ |
可证明的一致的状态 (ZKP) | ✕ | ✓ |
Commit-chain swaps | ✕ | ✓ |
Plasma 是基于 UTXO 的 commit-chain,而 NOCUST 是基于账户的 commit-chain。
在 Plasma Cash 中,一枚代币是通过链上存款铸造的,不能与 commit-chain 上的另一枚代币合并或拆分,因此它只对 NFT 有用,但不可以作为一个支付系统来使用。
NOCUST 使用 ZKPs 在链上执行一致的状态转换,Plasma Cash 利用默克尔根证明,它不要求用户参与挑战回应协议以挑战运营者的不正当行为。
参考资源
- Commit-Chains: Secure, Scalable Off-Chain Payments Academic Paper
- Systemization of Knowledge: Off The Chain Transactions Academic Paper
- Liquidity Network Research Papers