去中心化交易所(DEX)将是区块链生态最重要的基础设施,也会是区块链技术应用落地的下一个爆发点。其实去中心化交易目前是很静的蓝海,但未来这个领域将是暴风骤雨,是“兵家必争之地”。
区块链行业里曾经有不少项目打着DEX旗号进行私募,我也遇到过不少做DEX的团队,但两年左右的光景就让其中的多数人不再发声了。其实对去中心化交易真正理解的人并不多;而真正懂的人也不想做太早的分享——与其授人以渔,不如自己多花时间把网织好。
今天为什么决定要做这个分享,讲去中心化交易的技术发展趋势呢?原因之一是我希望系统性地,而不是东拼西凑,就能让对DEX感兴趣的普通投资者和专业投资者了解什么是好的去中心化交易技术,做更好的投资判断;原因之二我想让路印社区和LRC持有者知道我们对DEX是有深刻思考的,想的到,看的到才可能做的到;原因之三是魔笛手技术社区的Claire女士邀请我在她的社区做个相关的分享。她的邀请是我写这篇文章的推动力,否则写作这件事在我的工作列表里会排在较后的位置。
目标受众
你需要对去中心化这个理念有一定的理解。我希望你认同去中心化本身不是目的,而是为了实现资产安全的方案——而且是目前我们唯一有的一种技术方案。我也希望你认同我的另一个小观点,即去中心化不是非黑即白。去中心化技术用得好,可让一个系统接近比特币的安全级别——目前还没有高于比特币安全级别的资产;但如果用的不好,去中心化系统会比很多中心化系统还不安全,而这恰恰是很多公有链真实的处境。
你需要意识到区块链的维护是有成本的。比如以太坊,这个成本就是转账或运行智能合约时候给矿工的油费(即gas)。你也需要对智能合约(smart contract)有所了解。它们是在区块链上的“小程序”,可以被用户的交易触发运行。你还需要有一些订单交易的经验,比如你买卖过股票,或者在中心化交易所上面买卖过虚拟资产。
如果你没有上述的知识,接下来的内容有可能会让你云里雾里,我建议你可以停下来。最近有个连续剧,叫《长安十二时辰》,很不错,大陆的朋友可以看看。
交易模式
很抱歉我在切入正题前还需要铺垫地讲一下去中心化交易的一些不同的模式,避免后续我们拿苹果和橘子做比较。
传统的交易模式是非常多样的,每一种模式都可以通过区块链和智能合约技术来做一定程度的去中心化,加上区块链本身赋能了全新的交易模式,因此DEX的种类很多而且会越来越多。我们在做DEX比较的时候,如果不是基于同一个分类,比来比去就没有太大意义。
路印协议的目标是用区块链技术提供与股票市场现货交易模式类似的去中心化交易解决方案。换句话说,是基于订单撮合的现货DEX。我们相信链上资产现货交易不仅未来的交易总量是巨大的,也是相关衍生品交易最主要的数据源之一。这种DEX的技术难度是最大的,特别涉及到吞吐量需求和成本控制的时候。这个挑战至少目前可以被比喻成皇冠上最大的宝石。与路印目标相似的项目做的比较好的是0x和StarkDEX。我们熟知的其它几个DEX和路印就不属于同一个分类,比如Kyber,Uniswap,DutchX。我简单介绍下这三个项目你就会知道其中的区别。
Kyber和很多机场的货币兑换服务商模式相似。作为客户,你去兑换货币的时候,可以根据自己的买入或卖出量询问他们的实时报价,但是无法协商价格,也不会有所谓挂单一说。Kyber的背后是多个做市商,他们根据其它交易所的市场价格和订单深度信息为Kyber的用户提供报价,报价都是有时效性的,过期作废。有一点很重要:Kyber的做市商需要在其它交易所上通过订单撮合买卖套利。也就是说,Kyber依然要依赖订单撮合类型的交易模式支持其流动性。
Uniswap其实也是一种做市商提供流动性的模式,只不过这个做市商是一个数学算法。它根据做市资金池的金额和买入卖出量,通过一个价格曲线,自动计算每一笔买卖的价格。Uniswap的流动性和价格幅度取决于做市资金池的规模,规模越大价格浮动越小。
DutchX是基于荷兰式拍卖的交易模式,通过预先设定的价格曲线,和买方的参与度来决定最终的成交价格。DutchX和路印的模式相比,DutchX保证特定时间内一定会成交,但不保证交易具体价格;路印这种订单撮合模式保证价格,但不保证一定成交或者成交时间。
在本文后续的段落中,当我说去中心化交易所的时候,指的是路印协议这种基于订单撮合的去中心化交易技术。你脑海中可以想想股票交易所,我们就是要做区块链上的类似股票交易所的技术和产品方案。
终于可以进入正题了。我把截止到今天的去中心化交易技术划分为三个阶段。大家已经看到了前两个阶段技术的落地,一些人也看到了第三个阶段技术落地的曙光。基于第三阶段技术,我会畅想接下来发展的三个可能的方向。
在总结每个阶段主要的技术特点时,我还会提及每个阶段技术的安全性。毕竟资产安全是去中心化交易的最大前提,避而不谈安全而只提其它的指标是没有意义的。
DEX经历的三个技术阶段
第一阶段
去中心化交易技术始于以太坊的诞生。如果你非说从比特股(BitShares)或者瑞波币(Ripple)就开始了,我也不反对,前后其实没差多少时间,没必要纠结在这个时间点上。至少在以太坊上,第一批DEX开发者几乎都是抱着写HelloWorld的心态写智能合约的,也就是说更多是在乎并试图证明逻辑的正确性,而几乎完全忽略落地后大量用户参与时的性能问题。在这种开发理念下,智能合约被严重滥用了:中心化交易系统的主要模块都被搬到了DEX智能合约里,包括订单本(Order Book),撮合引擎(Match Engine),清结算子系统(Settlement Subsystem),账号子系统(Account Subsystem),以及充值提现子系统(Deposit & Withdrawal)。
第一阶段的技术有几个特点。首先它非常简单。以太坊上的EtherDelta就是这种技术的代表,它的主合约只有三百多行代码。另外它也没有任何链外系统做辅助,全部的逻辑都在区块链上运行,因此它和以太坊主网的去中心化程度一样,安全性也和以太坊的安全性高度一致(前提是智能合约没有安全漏洞)。另外它还有个理论上的优势,就是可以汇聚整个网络的全部流动性。但实际应用中,这个优势其实是纸上谈兵,完全没有用武之地。
第一阶段技术致命缺点是吞吐量太低,而费用又太高了。原因很明显:每次提交和取消订单都需要消耗一个以太坊交易。在提交订单的交易里,还要触发订单匹配。如果订单恰巧匹配到了一个或者多个对手单,就要做清结算,记录成交历史,做内部转账;如果订单不能匹配任何对手单,就需要把订单写入订单本。总之,在智能合约层面的逻辑实在是太多,任何合约的代码优化都是杯水车薪。
你可能会想:等以太坊2.0扩容后,允许合约的费用降低了不就没什么问题了吗?别忘了,除了多个去中心化交易所,还有许多应用也在等待以太坊扩容。无论以太坊如何扩容,都会有更多的去中心化应用来竞争资源,而资源的价格会根据供求关系不断调整,直到供求达到平衡点。即使以太坊2.0扩容一千倍,也会有万倍甚至十万倍更多的应用来竞争区块链资源。我认为去中心化应用完全依靠底层区块链的升级来扩容是一种不可取的态度,至少这样的应用没有相对竞争优势,而几乎所有的商业化竞争,都是在拼相对优势。
第二阶段
大约是2017年年初,当开发者们意识到第一阶段技术的缺陷时,他们开始尝试去做进一步的优化。路印就是这个时候开始研发自己协议的。实际上路印后来陆续发布的1.0,1.5, 和2.0三个版本都属于第二阶段这个范畴。
这个阶段优化的思路其实很直接:尽量把与资产安全相关度低的模块从智能合约中移除,放到链外的中心化系统中去运行,这样就可以避免对区块链的过渡依赖,从而提高吞吐量并降低成本。包括路印在内的许多DEX项目把这个链外的中心化系统称为中继(Relayer)。从智能合约中移除的子系统包括:订单本,撮合引擎。账号子系统和充值提现子系统则被去掉,转而使用以太坊地址作为账号。留在智能合约中的就只有清结算子系统了,这个子系统的主要逻辑是验证订单和撮合的正确性,计算成交量,更新成交记录,并进行资产在链上的原子互换。
第二阶段的DEX产品理论上依然可以汇集整个网络的所有订单,但订单的管理和撮合由于是在中心化系统中完成的,因此就不再是“去中心化”交易所了。但开发者和社区依然把这种技术归类于去中心化技术,其主要原因有两个,第一是用户交易的资产依然是掌握在用户自己的地址中,因此从资产安全的角度讲,依然是“去中心化”,和以太坊的安全性一致的;第二是用户的订单可以被多个中继同时匹配,因此流动性是可以去中心化共享的。对这一阶段技术和产品更准确的一种描述应该是“非托管中心化交易所”技术。但业界也没人纠结于这一点,何况从市场角度出发,持续使用同一个术语更容易被非技术社区接纳。
第二阶段技术的优化结果如何呢?假设以太坊15秒出一个块,理论上这种技术每秒可以成交(吞吐量)2到3笔,每个交易消耗的油费大约等值13美分左右 — 这个成本和以太坊价格成正比,13美分是以太价格190美金计算得到的,如果我们期待以太价格未来会更高,那么撮合的成本也会同样增加。这个成本还和中继使用的gas价格相关。
知道了第二阶段技术的性能,如果还有人告诉你这个阶段的去中心化交易所将取代像币安,Coinbase这样的中心化交易所,你会认同吗?我觉得用蚍蜉撼树来比喻也不为过。吞吐量还是太小,成本还是太高了。
如何才能进一步实现DEX的优化性能(这里专指吞吐量和成本)而不依赖于以太坊本身的扩容呢?这是个巨大的挑战。多数的DEX项目到第二阶段就无法实现技术上的突破了,等待主网扩容,成了他们唯一救命稻草。
第三阶段
2019年,有两个项目从第二阶段,跨入了第三个阶段。一个是旧金山的StarkWare公司(他们借鉴了0x第二阶段的技术);另一个就是我们路印协议。其实这两个项目思路十分相似:进一步把逻辑从智能合约中移除,放到链外的中心化系统中去运行;路印协议甚至是将除了转账之外的几乎所有链上逻辑,全部转移到链外的中继里(区块链上的转账是无法移到链外的)。
“等一下”,你可能会惊叹,“那不就和中心化交易所一样了吗?”
如果只是简单粗暴地那么做,可不就变成中心化交易所了!但是第三阶段技术的一个核心潜台词是“可信计算”。换句话说,我们需要通过技术,证明在链外运行的代码逻辑是百分百可信的。这个信任最主要是针对链上对应的智能合约而言,只有智能合约信任链外的计算结果,才做链上的转账。如果智能合约信任链外计算结果,那么用户也就应该可以信任中继的计算结果,进而从总体上信任这种去中心化交易技术。
这里“可信计算”其实没有一个严谨的定义,我是想通过这个比较容易理解的概念,来强调第三阶段技术的一个关键点。目前看来实现可信计算的方式主要由两种:第一种是通过硬件,利用CPU中的可信任计算环境(Trusted Execution Environment,或者叫TEE,有时候也叫Enclave)实现。这种实现方式本质上是基于信任链,而信任链的最顶端是CPU的生产厂家。第二种是通过零知识证明(Zero-Knowledge Proofs,或者叫ZKP)实现,即ZK Rollup。这是基于数学无需信任的一种技术方式。
路印倾向于现在和未来都不信任硬件厂商,原因再简单不过了:我们假设Intel自己做了一个中心化交易所,我们会信任这个交易所吗?如果CPU厂商值得信任,我们是不是就不该浪费生命开发DEX了,直接把交易所这个商机让给CPU厂商不就完了?
那么第三阶段技术和第二阶段比起来有什么不同呢?这个值得说一说,否则当我们说到第四代,第五代技术的时候就无从下笔了。
第一个不同点是:清结算也转移到了链外的中继里。从用户体验角度,最直接的不同是交易几乎是实时完成的,这一点和中心化交易所几乎是一样的。另外在第二阶段主要消耗油费的结算子系统也不再消耗那么多费用了。进而实现了两个重要的特点:1)用户感知的交易所实时性,和2)交易成本的降低。
第二个不同点是:只需要把可信计算的证明(proof)数据存储到区块链上。这个证明其实很小,而且只需要定期地给一大批交易生产一个证明。比如在路印3.0最新的beta3版本中,可以为10万个交易只生成一个256字节的零知识证明。如果定性说第二阶段技术是每笔交易清结算都上链,那么第三阶段就是大批量交易的证明上链。不管从存储角度,还是从计算角度,第三阶段对区块链的使用都降低了数十倍,甚至数百倍,数千倍,因此极大提高了区块链的使用效率。
第三个不同点是:订单,即流动性,再也无法跨中继共享了。第三阶段的订单必须指定只有特定的中继才能去做可信计算。这是为了性能而做的取舍,否则多个中继协调起来就无法做到用户感知的交易所实时性,同时也会极大增加系统的复杂度。但这个缺点后续并非不可解决。
第四个不同点是:中继在区块链外维护了一个交易账号系统,用户需要对该系统做充值才可以下单做交易,交易后可以提现获取区块链上真正的资产。这个改变的缺点是用户需要充值提现;但它同时也恰恰是个优点,因为这种交互模式和中心化交易所的用户体验是完全一致的。用户甚至还有个交易密码用来对订单进行签名,也就是交易过程中,甚至可以不解锁私钥。另外即使忘记交易密码,也不会损失任何资产。
特别需要做个说明:这个交易账号系统其实是维护在一个叫“树”的结构中的。每个交易所一棵树,这棵树里面记录了每个用户的交易密码对应的公钥,每个用户每种资产的余额,以及每个订单的历史成交量等信息。这棵树其实就是第三阶段DEX链外的“世界状态”,我们可以称之为“世界状态树”。
第三阶段技术的安全性如何呢?它和以太坊主网安全性依然是高度一致的。我们在设计路印协议的时候,一直需要做个假设 :去中心化交易所的拥有者和运营者从第一天起就是想要作恶的。第三阶段技术保证在这个最坏假设下,用户的资产依然百分百和以太坊主网一样安全。在最坏情况下,用户只是在一段时间内无法使用自己充值在DEX中的资产,但过了一小段时间,就可以通过第三方工具将资产全部取回。而基于这种技术的交易所运营者,一旦作恶,只会大量损失自己抵押的信用资产,得不偿失。当然路印3.0设计时也考虑了交易所运营者面对的风险,特别是当中继完全被黑客控制后,我们的技术确保交易所的损失应该只是几天内需要使用的以太坊交易油费的总和。这个损失小到三五千人民币,大到三五万人民币,对一个公司来说,是完全可以承受的。
读到这里,我希望你还没被弄糊涂。你可以在脑海里,这样勾勒出第三阶段技术的一个画面:一个DEX包含以太坊上的一组智能合约,用来验证可信计算的证明,并在必要的时候做充值提现的转账;它还包含一个在中心化中继系统里的一个很大很大的树,里面包含这个DEX的所有重要信息。
第三阶段技术的性能怎么样呢?这取决于上面提到的那棵树的容量,容量越大,吞吐量越小,成本越高。路印3.0最新版本采用了四叉树结构(也就是每个节点有四个子节点),在高度设置为21的情况下,最高级别资产安全的情况下每秒交易吞吐量最高是290笔;如果我们稍微降低安全性到联盟链级别,每秒交易吞吐量可达5200笔,而且我们还在近一步优化吞吐量。
每笔交易的成本大约只有人民币5–10分 , 这个取决于我们所用的云计算服务的费用,因此其变化幅度较大。很重要的一点是,这个费用与以太的费用相关性就更小了,以太价格对整体费用的影响大约是八分之一到十分之一左右。
我们觉得协议这样的吞吐量和交易成本即使和最主流的中心化交易所比也非常有竞争力,毕竟从安全角度看,第三阶段DEX技术依然保障资产和以太坊主网一样安全。不过为了让整个DEX产品的吞吐量上去,还需要努力改进中继的吞吐量 — 一个去中心化交易所真正的吞吐量是协议吞吐量和中继吞吐量的最小值。
2019年下半年将是路印3.0协议落地最关键的时期,我们相信基于第三阶段DEX技术的去中心化交易所,应该有很大的机会能与主流的中心化交易所竞争。第三阶段技术已经不再是纸上谈兵,蚍蜉撼树了。但不得不说,真的把这种技术转化成好的产品,依然是一个巨大的挑战,特别是中继的开发难度很大,中间也许还是有些坑要踩的。
下面我来聊聊在第三阶段技术的基础上,DEX有可能往哪三个方向发展。这三个方向有可能在时间上是部分重合,甚至是并行的。它们之间没有明显的依赖关系,却又可能组合在一起。
DEX技术可能的三个发展方向
方向一
第一个方向是第三阶段技术的通用化。目前路印在做的是现货交易,但其实第三阶段技术实际上提供了一种通用的dApp扩容方案。说的更明确点:这种技术不仅仅可以用来给DEX扩容,还可以用来给几乎所有类型的dApp扩容。如果你改变链外世界状态树的逻辑本质上是用户资产互换,那么你就做了一个去中心化交易所;如果你改变树的逻辑是一个用户给另一个用户付款,那么你就做了一个可以和闪电网络竞争的,资金利用率更高的支付系统;你还可以做物流追踪,做任何图灵完备的dApp。如果我们只把场景限制在有交易属性的dApp内,那么你可以做衍生品交易,做另一个版本的Kyber,Uniswap,和DutchX。
一种对世界状态树改变比较有趣的模式是引入了隐私保护的模式。基于此可能会实现类似Zcash的那种隐私支付,或者带隐私的资产交易。
方向二
第二个方向是支持跨链的去中心化交易协议。我之前一直强调:跨链和交易是两个层面的技术,不应混为一谈。不过我们发现,基于路印3.0的技术应该可以做跨链交易协议,这又是怎么回事呢?
我们假设把路印协议3.0部署到以太坊上,对应有一个世界状态树A;再把同一个协议部署到另两个支持以太坊虚拟机的公有链上(比如Qtum,波场,或者wanchain),对应有另一个世界状态树B和C。
那么是不是可以把A、B、C三棵树合而为一,变成树D呢?这样我们就可以通过可信计算,更改D这棵树里面两个用户的不同的资产,其中一个资产在以太坊上,另一个资产在另一条链上,这不就实现了跨连交易了吗?其实就是这样。我们意识到这个可能性是在几乎做完了路印3.0 beta2 的时候,这的确让我兴奋了很久。当然,工程上需要很多仔细的设计,特别是因为不同的公有链的安全特点不一样,这棵世界状态树在更新维护时候,要特别考虑到每条链重构(reorganization)的影响。
这种技术不仅仅可以跨支持以太坊虚拟机的公有链,还可以跨任何支持图灵完备智能合约和以太坊这种账户体系(Account Model)的公有链。但后者需要重新开发一套对应的智能合约代码。
这种跨链技术与其他基于中间链的跨链技术不同的地方在于:1)中继完全不需要任何信任,因为可信计算保证了这一点。而基于中间链的跨链技术的安全性取决于中间链本身的共识安全级别 — 你应该知道,绝大多数这些中间链的共识是高度集中的,因此非常不安全;2)这种跨链不涉及在一个链上生成另一个链上某个币的替身(好比BTC和以太坊上的WBTC的关系一样)。
方向三
第三个方向是中继或者说世界状态树本身的去中心化。当我们审视这个架构的时候,我们会问自己:哪些模块还是中心化的,是否可以通过使用区块链技术来进一步去中心化呢?显而易见,是中继本身了!如果我们把中继这个中心化系统改造成一个联盟链或者公有链会怎样呢?
我们会获得一些中继去中心化后带来的好处。一个好处撮合算法的统一加共识:当把中继变成一条链,我们称其为中继链(这里的概念不应和其它场景下的同名概念混淆)。这条链的所有出块节点就变成了中继链节点。这些节点就必须基于同一套代码来完成撮合,而不是像上述的第三阶段技术后面的中继的撮合逻辑完全是定制化,中心化控制的。撮合算法的统一和共识实际上可以把DEX在撮合规则上做到更加公开,公平,和公证。还可以做到更好的容错,进而保证整个DEX是个杀不死的小强,不怕IP被封。这种DEX的去中心化程度反而更像第一阶段的DEX产品那也,没有任何个人或实体作为拥有者需要承担任何法律责任。
当更多中继链节点加入这个区块链挖矿以后,也就间接实现了流动性的共享。也就是说,一个订单,可以被所有的中继链节点撮合,而且中继链节点之间是存在竞争关系的,订单撮合的越多,费用也就越高。因此一个有效订单被被忽略的情况就不会出现。
中继链的挖矿可以在两个维度上进行,一个维度是撮合订单,另一个维度是生成可信计算的零知识证明。中继链上甚至可以没有一个原生虚拟货币,正如中继本身也不需要一个DEX结算用的费用代币一样。
如果将我们世界状态树内部的建模方法加以改进,比如改成UTXO模型,也许方向三会与Plasma技术相遇在某处。不过Plasma设计的一个重要目标是把非常多个区块链放到一个树状的宏观结构中,进而对区块链进行类似于MapReduce的彻底扩容,而以太坊是其宏观结构中的根区块链(Root Blockchain)。
不同方向的结合
中继链可以与第一个发展方向结合,实现一个通用的dApp中继链。这样的中继链的优点是开发高性能的dApp相对就比较简单,不用像路印这样一点点从头开发,只需要用特别的编程语言在合约里实现对世界状态树的修改逻辑即可。它的缺点是无法为特定应用提供极致的优化,所以性能也无法做到最优。另一个方案是提供一个任意dApp中继链的开发框架,可以做简单开发就可以发布某个dApp特定的中继链。
中继链也可以和方向一结合,支持跨链。我们甚至可以把这三个方向都结合在一起,不过这种技术真正落地复杂度很大,而复杂度本身会带来安全风险。因此这种技术的落地需要更久的时间。
总结
今天我斗胆分享了我理解的DEX技术截止目前的三个阶段和未来可能的三个发展方向。其实这也是路印自身的经历和未来可能的发展。由于学识眼界的限制,我这里讲的肯定有不准确甚至完全错误之处。各位见笑了。如果您有关于本文的疑问或反馈,请发电子邮件联系我。
过去的两年里面,路印的工程师几乎每天都在解决问题,但每天又会遇到新问题。每次试错都是一次经验积累,每次突破都是一次能力的升华。我们的动力源于我们的信念:我们坚信去中心化交易这个趋势,也看到了其中巨大的商机。
另外,路印协议过去、现在、以及未来的所有版本的价值,都会集中体现在LRC代币上,对任何人和组织都不会有例外,包括路印自己的工程团队。我会在未来和大家分享路印的工程师如何通过使用自己的技术,布局去中心化交易生态。
评论
查看更多