科普 | 带你探索去中心化交易所架构的奥秘(上)

“去中心化交易所”一词通常指分布式分类账本协议和应用程序,使用户能够在无需信任中心化实体中介或其加密货币托管人的情况下,进行加密货币交易。

前言:近期,币安下架BSV事件在币圈引起了激烈的讨论,人们关于中心化交易所集权主义及易操控的担忧愈演愈烈,去中心化交易所的落地需求显得更加及急迫。为了解除大家的疑惑,本文将剖析去中心化交易所的整体构架,由于篇幅较长故分为上下文,下文将在明日进行发布,敬请期待。本文作者Lindsay X. Lin, 是Interstellar和Stellar Development Foundation的法律顾问,由头等仓进行翻译。

科普 | 带你探索去中心化交易所架构的奥秘(上)

去中心化交易所正在成为买卖越来越多加密货币的重要工具。“去中心化交易所”一词通常指分布式分类账本协议和应用程序,使用户能够在无需信任中心化实体中介或其加密货币托管人的情况下,进行加密货币交易。

去中心化交易的优势

(1)降低了交易对手风险(即无需信任中心化交换器来保护和管理私钥);

(2)降低交易费用;

(3)交易对组合多样化,解锁对风险更高或流动性更差的加密货币的访问。随着对这些特性需求的增加,未来几年去中心化交易所技术在使用、开发和采用方面可能会出现巨大的增长。

去中心化交易所的劣势

(1)各种加密货币的数量激增,使全面上市不切实际;

(2)上市中心化交易所的货币面临监管风险;

(3)用户为了避免中心化交易所的“了解你的客户”(KYC)对更多私人和更少审查交易的需求。

去中心化交易所在技术、去信任、安全性、法律影响、经济影响等方面存在显著差异。这些差异使得一些交易所或多或少适合于特定的用例。本文目的是解释去中心化交易所的体系结构,以及各种体系结构的性能和安全性权衡。通过理解这些技术差异,读者将更好地理解针对不同用例的去中心化交易所。

去中心化交易所的架构

 “去中心化交易所” 通常用于描述基于区块链的交换协议,以及利用这些协议的应用程序。换言之,去中心化交易所协议就是那些被托管在一个或多个分布式账本(例如以太坊)上或集成到其中的软件程序,该程序支持在分布式账本上自动结算点对点交易。在整个交易处理过程中,用户保留对私钥唯一保管权。

去中心化交易所应用程序构建在去中心化交易所协议的基础上,并添加链上或链下订单数据库和图形用户界面(GUI)或API,以便访问信息。

总的来说,去中心化交易所应用程序可以分解为以下组件:

1.区块链平台及技术实现;

2.交易对手发现机制;

3.顺序匹配算法;

4.交易结算协议;

去中心化交易所应用程序的4个组件可能不全部去中心化。对于许多去中心化交易所应用程序,一个或多个组件可能是链下/中心化的,或者以其他方式提供经济激励,从而促进中心化的趋势。

我们将一一讨论这些组件,并提供一些去中心化交易所协议实现这些组件的示例。

1. 平台与技术的兼容性

通常,大多数去中心化交易所协议使用具有相同技术实现的代币进行操作,这些代币属于相同的分布式账本平台。例如,AirSwap、EtherDelta和0x是独立的协议,只能在以太坊上使用标准ERC-20代币进行操作。在以太坊之外,Stellar的去中心化交易所可以操作Stellar网络上发布的代币,而BitShares的OpenLedger去中心化交易所只能操作在BitSharess区块链平台上发布的代币。链下的加密货币和资产也可以通过Stallar或OpenLedgerd的去中心化交易所进行交易,前提是“锚定(anchor)”在网络上发行的代币,代表链下加密货币定义单位的所有权。然而,这要求让用户相信有足够的链下加密货币储备,来满足所有赎回代币的需求。

一些去中心化交易所开始使用原子交换,使用户能够交易存储在不同区块链网络上的加密货币(例如将比特币交换来自不同区块链的狗狗币)。然而,原子交换仍然需要交易的加密货币遵守某些公共技术标准。例如,在BarterDEX(一种跨链的去中心化交易所,允许用户从不同区块链交易加密货币)中,原子交换仅适用于那些实现了与比特币参考实现相对应功能的加密货币,如BIP65 (检查时间锁验证Check LockTime Verify)和其他标准的比特币API方法。实际上,这意味着基于比特币参考实现构建的加密货币,如莱特币和狗狗币,或者从比特币派生的加密货币,如比特币现金和比特币黄金,将最容易兼容比特币进行的原子交换。

像Polkadot和Cosmos这样的跨链交易所技术也正在构建工具和协议,最终将其集成到去中心化交易所应用程序中,这些应用程序可以自动交换不同区块链的代币。然而,由于大多数跨链原子交换当前的延迟(交易确认依赖于两个加密货币的底层区块链的确认时间),大多数流行的去中心化交易所应用程序目前只专注于一条链的代币交易。随着PolkaDot、Cosmos等跨链交换工具和协议的改进和开发,以及闪电、雷电等增强交易性能的升级,总有一天用户会享受到高流动性和低延迟的跨链去中心化交易所。

2. 交易对手发现机制

交易对手发现机制使买方能够发现在双方都能接受的条件下愿意执行交易的卖方。在传统的加密货币交易所(如Binance、Bittrex和Kraken)中,用户可以同时提交市场订单和限价订单,这些订单通过交易所的中心限价订单簿集中所有用户订单,自动匹配身份不明的交易对手。

大多数去中心化交易所也有订单簿。这些订单簿可能存在于由分布式分类账本本托管的链上或由第三方托管的链下。大多数去中心化的订单簿显示的是每个交易对手的个人订单,不是所有交易对手的汇总订单。用户通常需要识别特定的订单,从而确定特定的交易对手,以便进行交易。

一些去中心化交易所没有订单簿,而是采用基于储备的模式。准备金提供各种代币的供求关系,这些代币可以根据准备金对该代币的买入和卖出报价随时调整供求。准备金由链上的智能合约创建,强制执行交易和结算流程。交易价格也可以由智能合约以编程方式确定。

在本文的其余部分中,“制造者”术语将指提供订单的一方,“接受者”术语将指填写订单的一方。

链上订单簿如何运转?

链上订单簿被直接托管在分布式分类账本上:所有订单都提交到分布式分类账本网络,并由网络确认。任何人都可以托管和访问订单簿的副本,并且只要分布式分类账本是公开的,任何人都可以提交自己的订单,添加进订单簿中。

链上订单簿的例子包括BitShares和Stellar去中心化交易所。在Stellar网络中,用户提交的订单被托管在Stellar分布式账本中一个持久且公共的链上订单簿上。将广播有关此订单的信息到所有Stellar验证器节点,并可由公众查看。当两个订单的价格相交时,Stellar网络自动执行和结算。BitSharess去中心化交易是在类似的模式下进行的,但针对的是BitSharess区块链和网络。

好处:

·审查较少:较少依赖中心化的一方来托管和操作订单。订单簿可能有一个中心化的GUI,但是任何独立的一方都可以创建单独的GUI,并用链上数据进行填充。假设订单的托管和操作分布在独立的、非合谋的验证器节点上,那么就不存在集中的攻击点、折衷点或责任点,不会导致订单被关闭或特定的订单被集中的一方限制的情况。

·需要的信任更少:去中心化的、链上订单簿托管意味着无需依靠中心化的、链下参与者来准确可靠地发布或广播订单簿。

权衡:

·订单簿继承底层区块链的性能、成本和安全性特征:在链上订单簿上提交或删除报价的速度和成本受到与底层区块链交互速度和成本的限制。用户必须为网络上的每个订单更新支付费用,等待网络就其更新达成共识,然后等待安全确认更新。如果区块链受到攻击,则订单簿也可能受到攻击。因此,较慢和较高费用的区块链不太适合托管用户友好的链上订单簿。

·更新较慢:在缺乏第二层技术(如闪电网络或雷电网络)的情况下,链上订单通常根据最新区块或分类账本中包含的信息进行更新。这将产生延迟,根据不同的平台,延迟的范围可能从几分钟到几秒不等。相反,由于大多数只需要更改中心化的数据库来更新,链下订单簿可以几乎支持即时的更新。

·陈旧的订单:链上的去中心化交易所通常支持休眠订单,在休眠订单中,价格和数量由制造者在创建报价时确定。在休眠状态下,如果制造者不希望按照这些条款进行交易(例如价格发生了巨大变化),那么他必须主动取消报价。由于底层网络的交易验证速度会导致延迟对链上订单的更新,因此链上订单可以创建一个环境,在价格波动较大的情况下使用休眠订单。然而,随着链上订单的使用越来越多,我们希望交易工具(如交易机器人)出现增加和采用,以帮助用户在市场价格变化时以编程方式自动提交和取消订单。

链下订单簿如何运转?

链下订单簿是指由分布式分类账本之外的中心化实体托管的订单簿。中心化实体帮助各方发现对资产进行报价的其他各方,并限制查看或提交订单的权限。

链上或链下订单簿的实用性在很大程度上取决于链的性能。去中心化交易所通常不使用链上订单,因为每个订单和对链上订单的调整都需要更新区块链,从而产生交易费用和等待时间。在某些链中,交易费用可以忽略不计,等待时间以秒为单位。在这种情况下,链上订单簿适用于中等数量的间歇订单。相比之下,在以太坊区块链上,交易费用昂贵,等待时间以分钟为单位。使用以太坊的链上订单可能会产生昂贵的交易费用和极短的等待时间。基于这个原因,以太坊——0x、AirSwap、EtherDelta和idex这四家最著名的去中心化交易所都使用了链下订单。截至2018年10月,0x、AirSwap、EtherDelta和IDEX支持ERC-20代币。

· 在0x生态系统中,称为“中继者”的实体承载、管理和发布链下订单。制造者直接向中继者提交买卖订单,中继者把收到的所有订单汇总到其订单簿中。接受者通过查询中继者的订单簿来发现制造者的订单。在找到合适的订单后,接收者根据以太坊区块链上的0x交换合约的0x协议提交的信息来填写订单。由于所有中继者都使用0x协议进行结算,中继者可以选择与其他中继者共享其订单簿,从而解锁更多的订单簿和更大的流动性。

· 在AirSwap平台上,制造者将向一个名为“索引器”的实体提交特定交易对的“交易意向”。索引器将汇总有关庄家及其交易意图的信息。想要交易某个交易对的接受者将查询索引器以发现合适的庄家的身份,使用索引器作为交易对手发现机制。一旦接收者找到合适的制造者,他们就会在场外就交易条款进行谈判,可能会使用场外“预言机”的输入,为交易提供公平的定价建议。一旦制造者的回应令接受者满意,接受者将把命令提交给以太坊块链。

· 在EtherDelta网页应用程序上,为了完成订单,制造者和接受者将从以太坊钱包存入代币到EtherDelta的链上智能合约中。制造者将提交订单到EtherDelta的链下订单簿中,并广播订单簿,订单簿将并入区块链,验证制造者在智能合约中是否有足够的余额来完成订单。然后,接受者将选择一个订单并在网页应用程序上单击“购买”,从而用EtherDelta智能合约执行交易。

· 在IDEX 网页应用程序上,为了完成订单,用户将从以太坊钱包中存入代币到IDEX智能合约中。然后,用户使用IDEX应用程序界面将买卖订单放到链下订单簿上。IDEX和EtherDelta具有类似的结构,它们都将链下订单与链上智能结算合约集成在一起,但IDEX增加了一个“交易处理仲裁器”,帮助管理待定交易订单,以便以正确的顺序确认交易。因此,当用户进行交易时,IDEX应用程序界面将实时更新显示的余额,但由于交易需要排队,因此链上结算可能会延迟。通过控制交易顺序,IDEX将交易执行与交易结算分离开来,使用户体验更加顺畅。

拥有一个链下订单既有好处也有坏处。

好处:

· 性能改进:链下订单簿能更好地适应快速的订单周转。链下服务可以几乎在瞬间更新总账,而不是等待挖出和确认一个区块(或者更新一个分类账本)来更新订单簿。

· 改善成本:提交或更新订单无需支付交易费用。

· 订单簿拥有更少的区块链原生风险:托管订单簿是在链下进行托管的,订单不会受到区块链原生漏洞如51%攻击(用户可能反向交易)、老鼠仓(用户可以提交更高的交易费用为他们提供更快的打包或更新速度)。

· 兼容所有ERC-20代币:任何具有ERC-20技术实现的代币都可以在这些去中心化交易协议上进行交易。代币不一定需要经过任何人的批准、审计或审查才能进行交易。

权衡:

· 需要更高程度的信任:用户必须依赖链下订单簿的主机来正确地广播订单。但链下主机可能无法准确显示和更新订单,这样用户就无法依赖这些主机来发现交易对手。最糟糕的是,这些主机可以任意审查有效订单,或者通过有策划地显示不准确或过时的订单来操纵市场。此外,黑客可以改变链下订单界面,操纵用户将加密货币发送到黑客的加密货币账户。

· 更大的限制:作为一个中心化的实体,操作链下订单可能要服从更大的法律和监管要求,如了解你的客户需求的实现,取得交易分类为证券所需的必要授权和许可证,以及执行抵抗市场操纵的规则和策略。虽然这些要求有助于防止订单的非法和滥用使用,但可能会引起对交易隐私、开放可访问性和用户体验的关注。

· 订单不准确:由于制造者提交订单和接受者完成订单的时间不匹配。在接受者想要填写订单时,链下订单簿上显示的所有给定订单可能都已过时。例如,制造者可能已经撤回了她想要进行交易的代币,但是她的订单仍然通过中继者在发布中。因此,接收者可能试图通过向区块链提交交易来填写订单,但最终发现订单失效了。这可能会延迟接受者,并消耗大量的交易费用。

除了链上订单与链下订单外的其他方法——无(或隐藏)订单:流动性储备

为了解决低流动性的问题,一些去中心化交易协议,如KyberNetwork、Bancor和Omega One,建立或利用流动性储备,当用户希望交换代币时,这些储备很容易获得。这些模型的性能取决于储备深度/广度和精确报价。

· 在KyberNetwork中,“储备贡献者”贡献代币来构建各种代币的“储备”。对于每个交易对,各个储备都有一个转换率,由储备管理器动态管理。如果用户想用代币a交换代币B,她会将代币发送给KyberNetwork智能合约, KyberNetwork会根据储备管理器为她找到最优惠的兑换率。如果该速率满足用户预先定义的最低要求,智能合约将向发送方的预先指定地址发送相应数量的代币B。用户也可以在发送任何代币之前查看和批准最坏情况的速率。

· 在Bancor中,用户可以通过被称为“智能代币”的智能合约将代币交换为其他代币,智能代币存储ERC-20代币和ether。为了说明这一点,希望用代币A交换代币B的用户需要找到一个储备AB代币的智能合约(即智能代币AB)。用户将代币A发送到智能代币AB,从而根据代币A的公式化价格购买一定数量的智能代币AB。接下来,用户将发送智能代币AB到其智能合约中,从而销毁这些代币,并根据代币B的公式化价格取出大量的B代币。价格以编程的方式用一个公式确定,该公式将每个代币的储备供应与恒定的准备金率结合起来。

· Omega One的目标是通过将整个中心化和去中心化交易所环境作为潜在储备,来聚合加密货币交易所之间的流动性。想用代币A交换代币B的用户将在Omega One的链上智能合约中存储代币A,并根据时间和价格限制向交易代币B提交订单。然后,Omega One将使用自己的中心化和去中心化交易所帐户购买代币B,并通过智能合约与用户交换代币A。

优点:

· 交易摩擦更少:由于供求双方都有固定的交易条款(例如储备),而且可以随时按这些条款进行交易,储备模型使用户能够更容易地进行交易。这消除了在发现交易对手和进行谈判时可能出现的摩擦。

权衡:

· 需要信任智能合约或第三方:该模型要求一方信任正在履行预订或执行订单功能的智能合约,或信任第三方的安全性、准确性和公平性。由于智能合约复杂、难以审计,并且可能存在未预料的安全漏洞,如果智能合约被黑客攻击或自身作弊,用户可能会损失资金。依赖第三方提供流动性的模型,如KyberNetwork和Omega One,要求用户相信这些第三方能够可靠和公平地行事。

 ·定价不确定:由于代币价格的波动性很大,一些模型要求用户信任一个中心体来提供公平和定价更新。同时,依赖确定性定价算法的模型很容易被套利者利用。

· 倾向于支持大的储备贡献者:因为较低的交易利差将要求更高的交易量才能盈利,比起拥有较少储备贡献者,依赖于用户提供资金的储备模型可能会更多地激励较大的储备贡献者。在这种情况下,用户可能需要依靠大量型储备者的参与来获得流动性,从而对储备供给被更加集中的控制。

· 可能只有最受欢迎的代币才有储备和流动性:新的或外来的代币可能没有可用的储备,或者可能没有足够的储备来完成基于用户期望的价格和数量交易。只有经常交易的代币才有可能拥有深厚的流动性储备。

本文来源:头等仓https://first.vip/shareNews?id=1073&uid=50386

原文出处:https://stanford-jblp.pubpub.org/pub/deconstructing-dex

本文来自于Lindsay X. Lin,由头等仓进行翻译。如需转载,请注明出处!

生成图片
5

发表评论

科普 | 带你探索去中心化交易所架构的奥秘(上)

星期三 2019-04-24 19:20:11


前言:近期,币安下架BSV事件在币圈引起了激烈的讨论,人们关于中心化交易所集权主义及易操控的担忧愈演愈烈,去中心化交易所的落地需求显得更加及急迫。为了解除大家的疑惑,本文将剖析去中心化交易所的整体构架,由于篇幅较长故分为上下文,下文将在明日进行发布,敬请期待。本文作者Lindsay X. Lin, 是Interstellar和Stellar Development Foundation的法律顾问,由头等仓进行翻译。

科普 | 带你探索去中心化交易所架构的奥秘(上)

去中心化交易所正在成为买卖越来越多加密货币的重要工具。“去中心化交易所”一词通常指分布式分类账本协议和应用程序,使用户能够在无需信任中心化实体中介或其加密货币托管人的情况下,进行加密货币交易。

去中心化交易的优势

(1)降低了交易对手风险(即无需信任中心化交换器来保护和管理私钥);

(2)降低交易费用;

(3)交易对组合多样化,解锁对风险更高或流动性更差的加密货币的访问。随着对这些特性需求的增加,未来几年去中心化交易所技术在使用、开发和采用方面可能会出现巨大的增长。

去中心化交易所的劣势

(1)各种加密货币的数量激增,使全面上市不切实际;

(2)上市中心化交易所的货币面临监管风险;

(3)用户为了避免中心化交易所的“了解你的客户”(KYC)对更多私人和更少审查交易的需求。

去中心化交易所在技术、去信任、安全性、法律影响、经济影响等方面存在显著差异。这些差异使得一些交易所或多或少适合于特定的用例。本文目的是解释去中心化交易所的体系结构,以及各种体系结构的性能和安全性权衡。通过理解这些技术差异,读者将更好地理解针对不同用例的去中心化交易所。

去中心化交易所的架构

 “去中心化交易所” 通常用于描述基于区块链的交换协议,以及利用这些协议的应用程序。换言之,去中心化交易所协议就是那些被托管在一个或多个分布式账本(例如以太坊)上或集成到其中的软件程序,该程序支持在分布式账本上自动结算点对点交易。在整个交易处理过程中,用户保留对私钥唯一保管权。

去中心化交易所应用程序构建在去中心化交易所协议的基础上,并添加链上或链下订单数据库和图形用户界面(GUI)或API,以便访问信息。

总的来说,去中心化交易所应用程序可以分解为以下组件:

1.区块链平台及技术实现;

2.交易对手发现机制;

3.顺序匹配算法;

4.交易结算协议;

去中心化交易所应用程序的4个组件可能不全部去中心化。对于许多去中心化交易所应用程序,一个或多个组件可能是链下/中心化的,或者以其他方式提供经济激励,从而促进中心化的趋势。

我们将一一讨论这些组件,并提供一些去中心化交易所协议实现这些组件的示例。

1. 平台与技术的兼容性

通常,大多数去中心化交易所协议使用具有相同技术实现的代币进行操作,这些代币属于相同的分布式账本平台。例如,AirSwap、EtherDelta和0x是独立的协议,只能在以太坊上使用标准ERC-20代币进行操作。在以太坊之外,Stellar的去中心化交易所可以操作Stellar网络上发布的代币,而BitShares的OpenLedger去中心化交易所只能操作在BitSharess区块链平台上发布的代币。链下的加密货币和资产也可以通过Stallar或OpenLedgerd的去中心化交易所进行交易,前提是“锚定(anchor)”在网络上发行的代币,代表链下加密货币定义单位的所有权。然而,这要求让用户相信有足够的链下加密货币储备,来满足所有赎回代币的需求。

一些去中心化交易所开始使用原子交换,使用户能够交易存储在不同区块链网络上的加密货币(例如将比特币交换来自不同区块链的狗狗币)。然而,原子交换仍然需要交易的加密货币遵守某些公共技术标准。例如,在BarterDEX(一种跨链的去中心化交易所,允许用户从不同区块链交易加密货币)中,原子交换仅适用于那些实现了与比特币参考实现相对应功能的加密货币,如BIP65 (检查时间锁验证Check LockTime Verify)和其他标准的比特币API方法。实际上,这意味着基于比特币参考实现构建的加密货币,如莱特币和狗狗币,或者从比特币派生的加密货币,如比特币现金和比特币黄金,将最容易兼容比特币进行的原子交换。

像Polkadot和Cosmos这样的跨链交易所技术也正在构建工具和协议,最终将其集成到去中心化交易所应用程序中,这些应用程序可以自动交换不同区块链的代币。然而,由于大多数跨链原子交换当前的延迟(交易确认依赖于两个加密货币的底层区块链的确认时间),大多数流行的去中心化交易所应用程序目前只专注于一条链的代币交易。随着PolkaDot、Cosmos等跨链交换工具和协议的改进和开发,以及闪电、雷电等增强交易性能的升级,总有一天用户会享受到高流动性和低延迟的跨链去中心化交易所。

2. 交易对手发现机制

交易对手发现机制使买方能够发现在双方都能接受的条件下愿意执行交易的卖方。在传统的加密货币交易所(如Binance、Bittrex和Kraken)中,用户可以同时提交市场订单和限价订单,这些订单通过交易所的中心限价订单簿集中所有用户订单,自动匹配身份不明的交易对手。

大多数去中心化交易所也有订单簿。这些订单簿可能存在于由分布式分类账本本托管的链上或由第三方托管的链下。大多数去中心化的订单簿显示的是每个交易对手的个人订单,不是所有交易对手的汇总订单。用户通常需要识别特定的订单,从而确定特定的交易对手,以便进行交易。

一些去中心化交易所没有订单簿,而是采用基于储备的模式。准备金提供各种代币的供求关系,这些代币可以根据准备金对该代币的买入和卖出报价随时调整供求。准备金由链上的智能合约创建,强制执行交易和结算流程。交易价格也可以由智能合约以编程方式确定。

在本文的其余部分中,“制造者”术语将指提供订单的一方,“接受者”术语将指填写订单的一方。

链上订单簿如何运转?

链上订单簿被直接托管在分布式分类账本上:所有订单都提交到分布式分类账本网络,并由网络确认。任何人都可以托管和访问订单簿的副本,并且只要分布式分类账本是公开的,任何人都可以提交自己的订单,添加进订单簿中。

链上订单簿的例子包括BitShares和Stellar去中心化交易所。在Stellar网络中,用户提交的订单被托管在Stellar分布式账本中一个持久且公共的链上订单簿上。将广播有关此订单的信息到所有Stellar验证器节点,并可由公众查看。当两个订单的价格相交时,Stellar网络自动执行和结算。BitSharess去中心化交易是在类似的模式下进行的,但针对的是BitSharess区块链和网络。

好处:

·审查较少:较少依赖中心化的一方来托管和操作订单。订单簿可能有一个中心化的GUI,但是任何独立的一方都可以创建单独的GUI,并用链上数据进行填充。假设订单的托管和操作分布在独立的、非合谋的验证器节点上,那么就不存在集中的攻击点、折衷点或责任点,不会导致订单被关闭或特定的订单被集中的一方限制的情况。

·需要的信任更少:去中心化的、链上订单簿托管意味着无需依靠中心化的、链下参与者来准确可靠地发布或广播订单簿。

权衡:

·订单簿继承底层区块链的性能、成本和安全性特征:在链上订单簿上提交或删除报价的速度和成本受到与底层区块链交互速度和成本的限制。用户必须为网络上的每个订单更新支付费用,等待网络就其更新达成共识,然后等待安全确认更新。如果区块链受到攻击,则订单簿也可能受到攻击。因此,较慢和较高费用的区块链不太适合托管用户友好的链上订单簿。

·更新较慢:在缺乏第二层技术(如闪电网络或雷电网络)的情况下,链上订单通常根据最新区块或分类账本中包含的信息进行更新。这将产生延迟,根据不同的平台,延迟的范围可能从几分钟到几秒不等。相反,由于大多数只需要更改中心化的数据库来更新,链下订单簿可以几乎支持即时的更新。

·陈旧的订单:链上的去中心化交易所通常支持休眠订单,在休眠订单中,价格和数量由制造者在创建报价时确定。在休眠状态下,如果制造者不希望按照这些条款进行交易(例如价格发生了巨大变化),那么他必须主动取消报价。由于底层网络的交易验证速度会导致延迟对链上订单的更新,因此链上订单可以创建一个环境,在价格波动较大的情况下使用休眠订单。然而,随着链上订单的使用越来越多,我们希望交易工具(如交易机器人)出现增加和采用,以帮助用户在市场价格变化时以编程方式自动提交和取消订单。

链下订单簿如何运转?

链下订单簿是指由分布式分类账本之外的中心化实体托管的订单簿。中心化实体帮助各方发现对资产进行报价的其他各方,并限制查看或提交订单的权限。

链上或链下订单簿的实用性在很大程度上取决于链的性能。去中心化交易所通常不使用链上订单,因为每个订单和对链上订单的调整都需要更新区块链,从而产生交易费用和等待时间。在某些链中,交易费用可以忽略不计,等待时间以秒为单位。在这种情况下,链上订单簿适用于中等数量的间歇订单。相比之下,在以太坊区块链上,交易费用昂贵,等待时间以分钟为单位。使用以太坊的链上订单可能会产生昂贵的交易费用和极短的等待时间。基于这个原因,以太坊——0x、AirSwap、EtherDelta和idex这四家最著名的去中心化交易所都使用了链下订单。截至2018年10月,0x、AirSwap、EtherDelta和IDEX支持ERC-20代币。

· 在0x生态系统中,称为“中继者”的实体承载、管理和发布链下订单。制造者直接向中继者提交买卖订单,中继者把收到的所有订单汇总到其订单簿中。接受者通过查询中继者的订单簿来发现制造者的订单。在找到合适的订单后,接收者根据以太坊区块链上的0x交换合约的0x协议提交的信息来填写订单。由于所有中继者都使用0x协议进行结算,中继者可以选择与其他中继者共享其订单簿,从而解锁更多的订单簿和更大的流动性。

· 在AirSwap平台上,制造者将向一个名为“索引器”的实体提交特定交易对的“交易意向”。索引器将汇总有关庄家及其交易意图的信息。想要交易某个交易对的接受者将查询索引器以发现合适的庄家的身份,使用索引器作为交易对手发现机制。一旦接收者找到合适的制造者,他们就会在场外就交易条款进行谈判,可能会使用场外“预言机”的输入,为交易提供公平的定价建议。一旦制造者的回应令接受者满意,接受者将把命令提交给以太坊块链。

· 在EtherDelta网页应用程序上,为了完成订单,制造者和接受者将从以太坊钱包存入代币到EtherDelta的链上智能合约中。制造者将提交订单到EtherDelta的链下订单簿中,并广播订单簿,订单簿将并入区块链,验证制造者在智能合约中是否有足够的余额来完成订单。然后,接受者将选择一个订单并在网页应用程序上单击“购买”,从而用EtherDelta智能合约执行交易。

· 在IDEX 网页应用程序上,为了完成订单,用户将从以太坊钱包中存入代币到IDEX智能合约中。然后,用户使用IDEX应用程序界面将买卖订单放到链下订单簿上。IDEX和EtherDelta具有类似的结构,它们都将链下订单与链上智能结算合约集成在一起,但IDEX增加了一个“交易处理仲裁器”,帮助管理待定交易订单,以便以正确的顺序确认交易。因此,当用户进行交易时,IDEX应用程序界面将实时更新显示的余额,但由于交易需要排队,因此链上结算可能会延迟。通过控制交易顺序,IDEX将交易执行与交易结算分离开来,使用户体验更加顺畅。

拥有一个链下订单既有好处也有坏处。

好处:

· 性能改进:链下订单簿能更好地适应快速的订单周转。链下服务可以几乎在瞬间更新总账,而不是等待挖出和确认一个区块(或者更新一个分类账本)来更新订单簿。

· 改善成本:提交或更新订单无需支付交易费用。

· 订单簿拥有更少的区块链原生风险:托管订单簿是在链下进行托管的,订单不会受到区块链原生漏洞如51%攻击(用户可能反向交易)、老鼠仓(用户可以提交更高的交易费用为他们提供更快的打包或更新速度)。

· 兼容所有ERC-20代币:任何具有ERC-20技术实现的代币都可以在这些去中心化交易协议上进行交易。代币不一定需要经过任何人的批准、审计或审查才能进行交易。

权衡:

· 需要更高程度的信任:用户必须依赖链下订单簿的主机来正确地广播订单。但链下主机可能无法准确显示和更新订单,这样用户就无法依赖这些主机来发现交易对手。最糟糕的是,这些主机可以任意审查有效订单,或者通过有策划地显示不准确或过时的订单来操纵市场。此外,黑客可以改变链下订单界面,操纵用户将加密货币发送到黑客的加密货币账户。

· 更大的限制:作为一个中心化的实体,操作链下订单可能要服从更大的法律和监管要求,如了解你的客户需求的实现,取得交易分类为证券所需的必要授权和许可证,以及执行抵抗市场操纵的规则和策略。虽然这些要求有助于防止订单的非法和滥用使用,但可能会引起对交易隐私、开放可访问性和用户体验的关注。

· 订单不准确:由于制造者提交订单和接受者完成订单的时间不匹配。在接受者想要填写订单时,链下订单簿上显示的所有给定订单可能都已过时。例如,制造者可能已经撤回了她想要进行交易的代币,但是她的订单仍然通过中继者在发布中。因此,接收者可能试图通过向区块链提交交易来填写订单,但最终发现订单失效了。这可能会延迟接受者,并消耗大量的交易费用。

除了链上订单与链下订单外的其他方法——无(或隐藏)订单:流动性储备

为了解决低流动性的问题,一些去中心化交易协议,如KyberNetwork、Bancor和Omega One,建立或利用流动性储备,当用户希望交换代币时,这些储备很容易获得。这些模型的性能取决于储备深度/广度和精确报价。

· 在KyberNetwork中,“储备贡献者”贡献代币来构建各种代币的“储备”。对于每个交易对,各个储备都有一个转换率,由储备管理器动态管理。如果用户想用代币a交换代币B,她会将代币发送给KyberNetwork智能合约, KyberNetwork会根据储备管理器为她找到最优惠的兑换率。如果该速率满足用户预先定义的最低要求,智能合约将向发送方的预先指定地址发送相应数量的代币B。用户也可以在发送任何代币之前查看和批准最坏情况的速率。

· 在Bancor中,用户可以通过被称为“智能代币”的智能合约将代币交换为其他代币,智能代币存储ERC-20代币和ether。为了说明这一点,希望用代币A交换代币B的用户需要找到一个储备AB代币的智能合约(即智能代币AB)。用户将代币A发送到智能代币AB,从而根据代币A的公式化价格购买一定数量的智能代币AB。接下来,用户将发送智能代币AB到其智能合约中,从而销毁这些代币,并根据代币B的公式化价格取出大量的B代币。价格以编程的方式用一个公式确定,该公式将每个代币的储备供应与恒定的准备金率结合起来。

· Omega One的目标是通过将整个中心化和去中心化交易所环境作为潜在储备,来聚合加密货币交易所之间的流动性。想用代币A交换代币B的用户将在Omega One的链上智能合约中存储代币A,并根据时间和价格限制向交易代币B提交订单。然后,Omega One将使用自己的中心化和去中心化交易所帐户购买代币B,并通过智能合约与用户交换代币A。

优点:

· 交易摩擦更少:由于供求双方都有固定的交易条款(例如储备),而且可以随时按这些条款进行交易,储备模型使用户能够更容易地进行交易。这消除了在发现交易对手和进行谈判时可能出现的摩擦。

权衡:

· 需要信任智能合约或第三方:该模型要求一方信任正在履行预订或执行订单功能的智能合约,或信任第三方的安全性、准确性和公平性。由于智能合约复杂、难以审计,并且可能存在未预料的安全漏洞,如果智能合约被黑客攻击或自身作弊,用户可能会损失资金。依赖第三方提供流动性的模型,如KyberNetwork和Omega One,要求用户相信这些第三方能够可靠和公平地行事。

 ·定价不确定:由于代币价格的波动性很大,一些模型要求用户信任一个中心体来提供公平和定价更新。同时,依赖确定性定价算法的模型很容易被套利者利用。

· 倾向于支持大的储备贡献者:因为较低的交易利差将要求更高的交易量才能盈利,比起拥有较少储备贡献者,依赖于用户提供资金的储备模型可能会更多地激励较大的储备贡献者。在这种情况下,用户可能需要依靠大量型储备者的参与来获得流动性,从而对储备供给被更加集中的控制。

· 可能只有最受欢迎的代币才有储备和流动性:新的或外来的代币可能没有可用的储备,或者可能没有足够的储备来完成基于用户期望的价格和数量交易。只有经常交易的代币才有可能拥有深厚的流动性储备。

本文来源:头等仓https://first.vip/shareNews?id=1073&uid=50386

原文出处:https://stanford-jblp.pubpub.org/pub/deconstructing-dex

本文来自于Lindsay X. Lin,由头等仓进行翻译。如需转载,请注明出处!