让小白用户也能搭建去中心化交易所

栏目: 数据库 · 发布时间: 5年前

在这两个月,我们有幸见证了路印 3.0 的协议发布,并于 Github 上开源了其 最新技术设计 和相关实现。这次 3.0 的发布是路印在去中心化交易网络协议中的一个大进步,它结合了创新的区块链技术和零知识证明( ZKPs )加密大幅提高吞吐量,并且可以部署在任何支持智能合约的平台上。

相比于 2.0 设计, .0 提供了 2 种模式的去中心化协议,分别是开启数据可用性和关闭数据可用性模式,前者提高了 40 倍吞吐,后者提高了 225 倍。

除了 3.0 以外,还发布了一个新型拍卖协议 Oedax ,这两者正在为去中心化交易所的扩容探索新的路径。

本文将从技术逻辑和技术细节入手,让小白用户也能快速搭建去中心化交易所。

一、使用新型 Merkle Tree 保存账户、余额、成交历史

Merkle Tree 广泛应用于众多分布式应用中,早在比特币时代,就被用来做交易的 SPV 证明,方便轻节点校验交易存在性。而在许多可编程智能合约平台里,比如以太坊, Merkle Tree 还常常用来存放智能合约数据。

3.0 的设计中,为了更好的支持 Off-chain On-chain 两种模式,开发人员设计了一个新型 Merkle Tree ,主要用来组织 Account Balance 以及 TradeHistory 三者之间的关系和数据,并提供快速验证的能力。

让小白用户也能搭建去中心化交易所

从上图不难发现,一个账户下可以支持多种 Token ,而 Loopring 生态系统中的每个参与者都在同一个树中拥有一个账户。同时 3.0 中采用账户级别的 nonce 设计,而不是 Token 级别的 nonce 设计。

事实上,在以太坊的账户模型里,也是使用账户级别的 nonce 设计, nonce 值可以简单理解为该账户所有的交易数量。但是不同于以太坊,路印的 Merkle Tree 和账户模型中考虑了多种 Token 以及 Off-chain 请求。

每一次交易都会为用户修改 3token 余额,包括 tokenS tokenB tokenF 。该设计带来的最大好处就是每次交易操作的代价都较低。对于每一笔交易,账户本身所在的 Merkle Tree 修改只涉及到一条 Merkle Path 。虽然 Balance Tree 需要修改 3 次,但是由于 Balance Tree 本身比较小,代价同样较低。

二、三种 Block 状态

为了让 Merkle Proof 的证明生成并行化, 3.0 的架构中给区块设定了三种状态,分别是 Committed Verified Finalized

其中, CommitedBlock 表示该区块已经上链,但是未能被 ProvenVerified Block 表示该区块已经提交并通过验证,但是尚未验证此块之前的所有块,而 Finalized Block 则表示该区块和该块之前的所有块都应被验证。我们会在 第五节 的案例中为大家介绍如何利用这些 Block 的特性创建一个去中心化交易所。

3.0 的设计中, Proof 可以不按顺序提交。 Proof 随时可以生成,但是直到最大证明生成后才真正有效。比如在比特币里,我们需要在至少 6 个块以后才能认为交易的 SPV 证明是不可篡改的,在以太坊里由于出块速度的不同,这个最大证明时间可能为 12 个区块以上。

或许有部分用户担心资金丢失的风险, 3.0 的设计架构中,最差的情况也就是发生区块和状态回滚。所有之前请求的块和对应交易内容需要被重新执行,证明也会重新生成。但是相比于 Merkle Proof 并行化带来的收益,这点回滚成本可以忽略。同时, Merkle Tree 的回滚可以通过内容寻址的特性来快速完成,浪费的代价仅仅是少部分的存储容量。

三、五种 Circuit 排列

3.0 的设计中,还支持 5Circuit 排列:

Ring Settlement

Deposit

Off-chain withdrawal

On-chain withdrawal

Order Cancellation

这五种 Circuit 覆盖了所有 Circuit ,不管是否支持链上数据可用性。同时,为了减少证明时间,还为这几种 Circuit 设计了动态的 Block 配置。

四、性能测试结果

根据官方的测试结果,我们可以发现, 3.0 的性能相比于 2.0 有了一个甚至两个数量级的提升,而每笔交易的 Gas 费用则减少到了原来的几十分之一甚至 1% 以下。这对于去中心化交易所来说无疑是具有致命诱惑的。

让小白用户也能搭建去中心化交易所

五、基于 3.0 快速搭建去中心化交易所

第一步,设置交易所

Loopring 合约提供了完备的接口,你只需要发送一笔交易调用 Loopring 合约上的 createExchange ,就可以创造出一个全新的交易所合约。

第二步,交易

用户可以使用交易所账户创建订单,订单将会被添加到 DEX 的订单薄中。

②DEX 将订单与另一个订单进行匹配,并使用 ring-matcher 私钥和订单的 dual-author 密钥进行环签名。

Ring Settlement 结束后,订单可以显示为已填写,但尚未验证状态。

④DEXRing 发送给交易所的运营商,由于这些 Ring 将要在合理时间内完成,因此运营商架将会在收到 Ring 之后立刻调用 commitBlock 操作。

操作员在允许的最大时间内生成证据并调用 verifyBlock 接口。

⑥DEX 现在可以显示额外的 已验证 表示以填写订单。

第三步,订单状态与不可逆

每个订单都会有以下几种状态:

· Unmatched :不与某一个订单簿匹配

· Matched :与 DEX 匹配

· Commited :已经调用 commitBlock 并成块

· Verified :在一个块中验证

· Finalized :该块包括其之前的所有块都被证明

只有处于最后一个 Finalized 状态的数据才是真正不可逆的。我们可以从上面的流程发现,相比于 2.0 的协议, 3.0 在交易所的部署上越发简单快捷, 甚至小白用户都可以部署自己的去中心化交易所!

随着 3.0 的发布和相关合约的升级, TPSGas 费用不再是制约发展的主要瓶颈,现有的 TPS 已经可以满足大部分的去中心化和中心化交易所的场景。

-END-

作者:区块链技术专员

声明:本文为作者独立观点,不代表区块链研习社立场,亦不构成任何投资意见或建议。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C# 6.0本质论

C# 6.0本质论

[美] Mark Michaelis(马克·米凯利斯)、[美] Eric Lippert(埃里克·利珀特) / 周靖、庞燕 / 人民邮电出版社 / 2017-2-1 / 108

这是C#领域中一部广受好评的名作,作者用一种易于理解的方式详细介绍了C#语言的各个方面。全书共有21章和4个附录(其中哟2个附录从网上下载),介绍了C#语言的数据类型、操作符、方法、类、接口、异常处理等基本概念,深入讨论了泛型、迭代器、反射、线程和互操作性等高级主题,还介绍了LINQ技术,以及与其相关的扩展方法、分部方法、Lambda表达式、标准查询操作符和查询表达式等内容。每章开头的“思维导图”......一起来看看 《C# 6.0本质论》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具