路印协议采用零知识证明技术,允许开发者在以太坊上搭建高吞吐量、低成本、非托管、基于订单本的去中心化交易平台。
路印协议3.0的核心设计目标包括两个:第一是高安全性,第二是高性能。协议设计的很多方面,都是围绕着在各种可能的情况下,为用户提现自己充值的资产提供各种保障。这种保障允许用户在极端情况下,仅提供默克尔证明,不依靠于交易所的任何动作,就可以将资产全部取出。而默克尔证明,则可以通过区块链上的数据可用性计算得到。
为了提高吞吐量,并降低清结算成本,路印协议3.0将几乎全部的计算都迁移到区块链外完成。这种计算会更新中继维护的一棵四叉默克尔树,用以保存每个用户每个币种的余额,以及每个订单的成交历史。 中继批量处理几十到几万个充值提现和交易清结算等请求,并将批量更新后的树根上链。为了保障中继的计算更新方式严格遵循协议的规则,中继必须在一定时间内提供批量处理相关的零知识证明。
路印协议3.0的安全性、高吞吐量、和低成本证明了零知卷叠(zkRollup)思路是去中心化应用扩容的最佳方式之一。二层协议消极依靠底层公有链来扩容是不可取的。
路印协议3.0提供下列四种部署选项用以支持去中心化交易所的协议升级。请注意协议升级的前提是新协议版本的数据结构是向后兼容的。
在这种模式下,当具有兼容性的协议新版本发布后,交易所就会自动升级到使用协议的最新版。交易所和用户对协议的升级没有感知,不会影响用户体验。这种模式也意味着交易所需要信任路印协议后续的版本。
这是我们推荐的部署模式。通过自动升级,交易所可以第一时间获得协议的漏洞补丁和新特性。
手动升级模式依靠于交易所拥有者决定是否升级到具有兼容性的协议新版本。在这种模式下,交易所拥有者无需信任路印基金会以及任何新版协议,他们自行决定是否升级、何时升级、以及升级到哪个版本。
手动升级对交易所用户依然是完全透明且无缝的,因此对用户充值提现以及中继的运行都没有任何影响。
代理模式不支持交易所协议升级,这意味着一旦发现现有版本协议有安全漏洞,交易所运营者只能选择关闭交易所,并帮助用户提现已充值资产。
这种模式的优势是部署非常节省油费,不过我们不建议在产品环境下使用该模式。
该模式也不支持协议的升级,并且部署消耗的油费也很多。这种模式的优点是部署后每笔以太坊转账的费用都是最优的。
如果交易所对协议升级不感兴趣,且想最小化运营成本,可以考虑使用这种模式。
我们建议在节省油费和协议升级之间,选择可升级性。
本文简要介绍路印协议3.0的工作原理,以及我们如何使用零知识证明技术来实现可扩展和安全的DEX。如果想深入学习,您可以在GitHub上查看完整的设计文档。
路印协议3.0解决了去中心化交易所的可扩展性问题。路印协议的早期版本已经实现了链下订单撮合,但还在链上进行交易结算,这意味着链上需要很高的计算和存储成本。为了解决这个问题,路印协议3.0通过使用零知识证明技术将几乎所有的数据和请求计算迁移到链下。
数据存储在默克尔树(Merkle Tree)中,默克尔树(Merkle Tree)使用帐户模型。每个用户都有一个帐户,与他的以太坊地址一对一映射。该帐户可以存储交易所支持的所有代币余额和用户交易历史数据。请求会修改默克尔树(Merkle Tree),并且在链上通过证明来验证状态的转换。
为了提高效率,请求按区块进行批量处理。无论区块中有多少请求,验证证明的成本都保持不变,但是我们会在区块中限制请求的数量,否则链上证明验证将不再有效。区块包含的请求数量取决于请求的复杂性。如果一个区块包含多个请求类型,那么执行每种请求类型的计算需要额外的花费,所以我们现在限制区块为单个请求类型。
目前我们支持5种不同的请求:
构建功能完备的DEX,只有前三个是必需的,后两个为用户和交易所提供了一些额外的灵活性。
一旦DEX运营商(Operator)在链上提交了一个区块,他还需要在限定时间内提交该区块的证明。因为生成证明需要一些时间,区块和证明的提交是分开进行的。一旦生成证明,运营商就可以发送链上的证明,从而验证区块中完成的状态转换。如果运营商不能及时提交有效证明,他将受到处罚,状态将自动恢复为有效状态。
只有默克尔树根 (Merkle tree root )存储在链上,这足以证明用户在DEX持有一定数量的代币。即使DEX运营商不合作,任何用户都可以在提现模式下提取他们的资金。
用户需要创建默克尔证明,因此他们需要访问完整的默克尔树,而不仅仅是默克尔树根。这些数据最好由DEX提供,但不能保证实际情况就是如此。为了确保所有用户都能获得数据,这些数据是在链上发送的,这是使用CALLDATA完成的,而不是存储,这样成本更低且更具前瞻性。目前,以太坊的成本仍然很高(虽然这在未来将有所改善),也限制了可以实现的最大吞吐量,这也是我们支持关闭链上数据可用性的原因,DEX可以自由地实施一些链下解决方案。
交易开始之前,用户首先需要将一些资金充值到智能合约,这是通过链上交易完成的,并且请求会被添加到链上充值队列中。一旦DEX运营商将充值请求放在一个区块中,用户就可以开始交易。
订单撮合完全取决于DEX,但在所有情况下,交易结算都遵守订单创建者的意愿。
DEX通过撮合两个订单和向DEX运营商发送请求,来创建结算请求,该DEX运营商将把请求包含在区块中,以获得指定的费用,然后运营商在链上提交区块。
如果用户想要从交易所提取他们的代币,他们需要做提款请求。如果用户在链上请求提款,DEX需要在一定时间内将请求包含在区块中。如果超过时间限制,我们首先强制运营商通过提交链上提款区块来处理它。如果运营商仍然拒绝处理提款请求,则交易所进入提现模式。提现模式是不可逆的,即使交易所完全关闭,用户仍然可以提取资金,这可确保用户在所有情况下都能完全控制其资金,而无需信任任何人。
免责声明:本文不代表信比特官方立场,且不构成投资建议,请谨慎对待。
微信扫一扫,分享到朋友圈