LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 白皮书翻译:Kyber—链上流动性协议

白皮书翻译:Kyber—链上流动性协议

2020-05-22 灰狼 来源:区块链网络

Kyber: 链上流动性协议

2019年4月22日

v0.1

摘要

本文介绍了Kyber,这是一种完全链上的流动性协议,用于在任何启用了智能合约的区块链上以去中心化方式实现即时加密货币代币交换。

Kyber设计允许任何一方为每个区块链内的流动资金池做出贡献,同时为购买者提供一个单一端点,以使用最佳可用汇率执行交易。我们设想了一个连通的流动性网络,该网络将促进跨不同链上基于Kyber的网络之间的无缝、去中心化跨链代币交换。

本文提供了在支持智能合约的区块链上实现时要遵循的协议的技术规范和关键设计原则。它还包括针对流动性提供方或购买者参加任何给定实现规范。

I.介绍

多年来,在中心化交易所进行的加密货币交易被证明容易受到网络安全黑客攻击和内部欺诈的影响,其中最臭名昭著的黑客攻击是Mt.Gox和Coincheck。此外中心化的交易与DeFi应用程序不兼容,因为在技术上不可能在不损害信任模型的情况下在去中心化应用和中心化服务器之间建立桥梁。

无论如何,DeFi应用都需要获得良好的流动性资源,这是提供优质服务的关键组成部分。当前,去中心化流动性由各种来源组成,包括去中心化交易所(Uniswap、OasisDEX、Bancor)、去中心化基金和其他金融应用。来源越分散,任何人越难找到最适合自己交易的汇率,甚至难以找到满足其需求的足够流动性。

Kyber是一个完全链上流动性协议,可以在任何启用智能合约的区块链上实现。Kyber的解决方案允许将不同来源的流动性聚合到一个单一网络中,这反过来又为购买者提供了一个单一端点,以便在单个区块链交易中无缝地执行多个代币交易。终端用户、DApp或任何其他方只需查询此单一端点即可获得其交易的最佳可用汇率。

该协议为流动性提供者提供了广泛的实现可能性,允许广泛的实体提供流动性,包括终端用户、去中心化交易所和其他去中心化协议。在购买者方面,终端用户、加密货币钱包和智能合约能够以各种来源中可用的最佳费率执行即时和去信任的代币交易。

链上即时交易属性对于实现广泛的去中心化用例(包括金融协议和加密货币支付)至关重要。人们会期望在其他公链上使用Kyber协议的不同实现方式,以使链上即时交易可用于这些区块链上的各种用例和应用。

有许多其他区块链具有不同的功能集,解决不同的用例,从而导致了大量不同的新兴数字生态系统。为了支持这些新兴的生态系统,Kyber协议将通过促进各自生态系统中不同利益相关者之间的流动性,在这些区块链中发挥关键作用。此外,通过标准化基于储备的流动性模型的设计,并积极研究诸如PeaceRelay和Waterloo中继桥之类的跨链解决方案,我们设想在不同的链上实现一个连通的流动性网络。

随着时间的推移,我们设想协议贡献者、网络维护者和KNC代币持有者社区共同治理Kyber。随着Kyber规模的扩大,适当去中心化的治理框架对于决定重要的升级,资金分配和协议的其他功能以及实现的关键方面的标准化至关重要。特别是,Kyber将支持每个区块链的一个主要实现,该实现遵循确切的协议规范、KNC治理和实用程序。

II.协议架构

2.1设计属性

在设计的核心,协议智能合约提供了一个单一的接口,以便从不同来源的集合流动性池中获取最佳可用的代币汇率。

●汇总流动性资金池。该协议将各种流动性来源聚合到一个流动性池中,使购买者很容易找到一个函数调用提供的最佳汇率。

●多元化的流动资金来源。协议允许插入不同类型的流动性来源。流动性提供者可以采用不同的策略和不同的实现来为协议提供流动性。

●无许可。协议设计为无许可模式,任何开发人员都可以建立各种类型的储备,任何终端用户都可以提供流动性。实现时需要考虑各种安全要素,例如保留垃圾邮件,但可以通过质押机制来减轻。在维护人员对这些考虑因素有把握之前,我们可以期望最初允许许可。

Kyber协议促进的核心特性是购买者和流动性来源之间的代币交换。协议旨在为代币交易提供以下属性:

●即时结算。由于交易匹配和结算发生在单个区块链交易中,因此购买者不必等待订单完成。这使得交易成为在单个智能合约功能中发生的一系列操作的一部分。

●原子性。当购买者提出交易请求时,他们的交易要么被完全执行,要么被还原。这一“全部或无”特点意味着,购买者不会面临部分交易执行的风险。

●公开费率验证。任何人都可以通过查询智能合约来核实储备提供的利率,并让他们的交易立即结算。

●易于集成。可以将去信任和原子代币交易直接轻松地集成到其他智能合约中,从而使多个交易可以在智能合约功能中执行。

2.2概述

该协议被实现为符合要求的任何区块链上的一组智能合约。下图概述了协议实现中涉及的各种角色。


图1:协议实现中角色的概览

我们简要定义角色如下。每个角色的工作方式的详细信息在“网络角色”部分中指定。

1.购买者是指可以直接调用智能合约功能来交易代币的任何人,例如终端用户、DApp和钱包。

2.储备是指希望提供流动性的任何人。 他们必须实现在reserve接口中定义的智能合约功能才能进行注册并列出其代币交易对。

3.注册储备是指为匹配购买者的请求而循环使用的储备。

4.维护者是指有权访问用于添加/移除储备和代币交易对的功能的任何人,例如DAO或协议实现的团队。

5.总之,它们由网络组成,网络是指协议任何给定实施中所涉及的所有参与者。

协议实现需要具备以下条件:

1.购买者检查汇率和执行交易的功能

2.维护者注册/删除储备金和代币对的功能

3.储备接口,定义储备需要实现的功能

2.3网络角色

2.3.1Kyber核心智能合约

Kyber核心智能合约是该协议的一种实现,该协议具有主要的协议功能,以允许参与者加入网络并与之交互。

例如,Kyber 核心智能合约通过为储备提供清晰的接口以使其能够注册到网络并添加对新交易对的支持,从而提供了将储备和交易对挂牌和退市的功能。 此外,Kyber 核心智能合约还为购买者提供了一项功能,以查询所有已注册储备中的最佳汇率,并以相应的汇率和储备进行交易。

交易对包括报价代币和储备希望支持的任何其他代币。报价代币是针对所有交易进行交易的代币。例如,Kyber协议的以太坊实现使用以太坊作为报价代币。

为了搜索最佳速率,将遍历所有支持请求的代币交易对的保留。因此,Kyber核心智能合约需要实现这种搜索算法。

Kyber核心智能合约中实现的关键功能如下图2所示。我们将访问并在规范部分解释每个功能的实现细节和安全注意事项。


图2:Kyber 核心智能合约OOP(面向对象程序设计)图

2.3.2购买者(takers)

购买者通过调用协议智能合约中的trade()函数从一个代币到另一个代币进行交易来获取注册储备所提供的流动性的实体。购买者可以是任何区块链实体,包括终端用户地址、去中心化交易所或任何智能合约。

在调用trade()函数时,购买者需要指定源代币和目标代币,以及购买者的最低可接受率,并发送相应数量的源代币。成功完成交易后,购买者将立即收到目标代币,否则源代币将全部退还。

2.3.3储备(reserves)

储备是网络中的流动性来源,可根据代币库存和智能合约的价格提供流动性。 通过实现Reserve接口,如下图3所示,储备可以注册到协议智能合约,并为购买者提供其流动性。

储备如何确定价格和管理其库存的详细信息不在协议中规定,并且完全由储备自己决定,只要实现符合Reserve接口即可。这开辟了可以作为网络的一部分的广泛的储备类型,包括手动管理的储备(即让做市商主动管理价格和库存),自动做市储备以及许多其他链上流动性来源。

购买者发送请求后,协议智能合约将查询保留智能合约中的相应函数(例如getConversionRate()查询价格,trade()执行交易)。值得注意的是,在协议的无许可实现过程中,可能必须考虑如何防止潜在的攻击,这些攻击会导致执行交易的成本高,甚至阻止交易成功执行,例如储备垃圾邮件攻击(即攻击者设置并注册大量储备)或恶意实现储备(如储备不遵守引用的汇率)。


图3: Reserve 接口OOP图

III.执行序列图

执行一项交易时,Kyber的主合约会调用一些功能来遍历所有列出的储备,以找到并选择提供最佳汇率的储备。源代币已从购买者转移到该储备,而储备的目标代币已转移到指定的目标地址。

3.1基本代币交易

基本代币交易是将报价代币作为交易请求的源代币或目的代币的交易。下图描述了基本代币交易的执行流程,此处以购买者想以BAT代币交换ETH为例。交易发生在单个区块链事务中。


图4:基本代币交易执行流程

1.购买者发送1ETH到协议合约,并且希望收到BAT返回。

2.协议合约查询其ETH到BAT汇率的第一笔储备。

3.储备1提供800BAT/1ETH汇率。

4.协议合约向第二储备查询其ETH到BAT的汇率。

5.储备2提供820BAT/1ETH的汇率。

6.其他储备继续执行此过程。遍历之后,发现储备2提供了最佳的ETH/BAT汇率。

7.协议合约发送1ETH储备2。

8.储备将820BAT发送给购买者。

3.2币币交易

币币交易是报价代币既不是交易请求的源代币,也不是交易请求的目标代币的交易。下图描述了币币交易的交易流程,此处以购买者想将BAT代币交易为DAI为例。交易发生在单个区块链中。


图5: 币币交易执行流程

1.购买者将50 BAT发送到协议合约,并希望收到DAI返回。

2.协议合约向储备发送50 BAT,以提供BAT到ETH的最佳汇率。

3.协议合约获得1 ETH作为返回。

4.协议合约向储备发送1 ETH,以提供ETH到DAI的最佳汇率。

5.协议合约将获得30 DAI作为返回。

6.协议合约将30 DAI发送给用户。

虽然图中描述了为代币交易选择的2个储备,但是也可能选择了相同的储备。

3.3储备注册

下图显示了协议合约如何与储备智能合约进行交互,以便将其添加到储备网络中或从储备网络中删除,列出其用于交易的代币,以及读取其代币汇率。储备有很多可能的实现方式。

任何人都可以创建新的储备,只要储备智能合约包含“供给汇率和提供流动性”部分中指定的方法即可。需要将储备添加到储备网络中,以便为购买者交易请求选择储备。


图 6: 储备与协议的交互

1.协议合约将储备添加到网络中。

2.协议合约启用储备的代币交易对。

IV.在基于Kyber的网络之间连接流动性

目前,Kyber网络已在单个以太坊区块链上充分开发,拥有强大的用户群和DApp生态系统。在本文中,我们概述了迄今为止如何通过Kyber探索的几种在各种启用智能合约的区块链之间建立流动性联系。通过允许流动性以便在不同链之间自由和(某种程度上)透明地流动,Kyber使得各种区块链生态系统之间的流动性网络之间的连接更加紧密。


通过Kyber实施的去中心化跨链互换的互联流动性网络

4.1链间实用中继

对于启用智能合约的链,最实用的互操作性实现是将轻客户端作为智能合约在两个区块链上实现,并且可以使用高效算法以最小的计算成本验证两个区块链的哈希函数。在我们的Waterloo项目中,我们提出了概念验证(PoC),以证明在以太坊和EOS之间进行实际中继的可行性。在PeaceRelay项目中我们还展示了类似方法连接以太坊和以太坊经典(ETC)。

我们希望上述通用方法适用于任何启用了智能合约的区块链,其中轻客户端可以作为该链上的智能合约实现。


中继是在两个区块链之间实现块头双向中继。在这样的桥梁中,区块链A的区块头被不断提交给区块链B中的智能合约,该合约实现了轻客户端逻辑来验证区块头的有效性。类似地,来自区块链B的区块头被提交到区块链A中的智能合约。在我们所知道的所有区块链协议中,区块头包含该区块中每个交易的数学可验证见证。通常,这是所有包含的事务的merkle根的形式。因此,验证块头的智能合约也可用于验证该块头中是否存在事务。

一旦智能合约可以验证事务,它也可以验证通过此事务完成的操作,例如代币流转。每个区块链上的智能合约充当轻客户端,因此不会验证区块内容的有效性,而只验证区块头。

中继将用于在不同区块链之间资产流转,以在跨链进行交易活动的同时利用每个区块链的独特优势。例如,EOS链的优势在于其每秒的事务率更高,从而能够实现更高频率的交易,而整个加密社区认为以太坊链更安全,并且目前提供更受欢迎的具有高级金融原语的资产,例如DeFi项目。

当跨链交易发生时,任何人都可以查看跨链转换相应事务哈希。通过协议转移的每个代币在发生代币交易的所有链上都是可验证的。

4.2中继网络

在不同区块链中的两个网络之间实现去中心化代币交换的第一个关键是为每个单向跨链链接创建中继,并具有实体来中继和验证跨链通信。每个单独的Kyber网络部署都链接到启用智能合约的区块链上的中继和验证网络。可以将中继设计为开放且去信任化,以便任何人都可以加入并中继事务、链之间的资产,从而消除潜在的故障中心。


上图显示了中继网络的一种潜在链拓扑,其中以太坊位于中心,连接其他链。该中继网络将是一个活跃的研究领域,我们希望在以后的更新中分享其成果。

4.3非启用智能合约区块链上的资产

对于原生不支持智能合约的区块链加密货币,可以采用类似于Wrapped BTC(WBTC)的方法。通证化的加密货币或包装的代币利用托管模型在启用智能合约的区块链上实现诸如比特币或门罗币之类的加密货币的通证化。对于启用智能合约的区块链上存在的每个包装代币,将以1:1的比例保有等量的相同加密货币。这种方法的好处是易于透明,所有托管资金都可以在链上完全验证。包装代币方法是一种实用的方法,它代表着去中心化交易所、DApp和其他智能合约的直接好处,没有任何限制。

V.Kyber Network Crystal(KNC)的用途

Kyber Network Crystal(KNC)是Kyber协议的组成部分,将在该协议的所有实现中为关键的经济、治理和财务功能提供服务。没有将KNC作为公用事业和治理中使用的关键部分的网络将不会被考虑,项目或社区也不会给予支持。

KNC在不同链中的确切用法取决于具体的实现方式。关键细节包括不同链的特定特征,以及生态系统和协议实现的成熟度。预计网络维护者将首先做出这些决定,并且在实施达到一定成熟阶段之后,我们期望将由KNC持有者社区做出这些决定。

因此,我们可以期望看到协议维护者和网络维护者之间的区别,协议维护者侧重于协议级别的治理,如统一的KNC供应,而网络维护者侧重于其链上实现的经济性和技术特征。


协议级别和网络级别的维护者

5.1KNC使用的主要领域

以下是我们希望使用KNC的3个主要领域:

5.1.1经济便利化

KNC将用作事务的一部分,以促进持续的系统操作。例如,获得储备以每笔交易的形式在KNC中支付费用,成为他们进行清洗交易的屏障。这笔费用可以并入他们的价差中。此外,需要即时流动性的用户可以支付手续费,以促进交易。

随着Kyber范围的扩大,有几种可能的机制可以利用KNC作为一种抵押机制来充当恶意行为者的屏障以及维护Kyber生态系统的完整性。例如,作为储备的要求将KNC视为网络的一部分,或者作为对中继器和验证器的要求,以促进不同链上基于Kyber的网络之间的跨链交易。

5.1.2治理通证

KNC将用于协议级别的治理以及不同链上的网络。对于协议级别的规范和计划,我们希望有一个基于KNC的总体DAO,它将有助于为总体规范和提案资金做出决策。

对于各个链上的单个实现,将有大量的通证经济参数、升级决策、代币列表,KNC权益持有人将可以投票决定。

5.1.3国库资金

除了KNC的经济和治理外,我们希望有一个基于KNC的国库,网络维护者和DAO成员可以通过公开赠款计划和提案来利用其资金来为Kyber协议的开发、营销和增长提供资金 。

这将使最重要的贡献者网络,推动应用和建立核心平台的人能够通过KNC赚取部分收入。通过将KNC交到贡献者手中,并使他们对平台的成功产生经济利益,我们朝着可持续的去中心化社区和系统迈进。

5.2KNC作为一个单一代币

虽然KNC将在不同的链上的(通过中继)代表,但在统一供应、可互换性以及用于协议治理和国库方面,它将作为一个单一的代币进行管理。


5.2.1跨链统一供应

KNC供应将作为一种经济概念进行管理。任何可能需要将KNC从以太坊链转移到另一条链或更改统一供应的事件都必须得到DAO /协议维护者的批准,并且仅在协议在链上实现时才会发生。

5.2.2链之间的互换性

我们正在努力实现链之间的互换性,以便可以轻松地将KNC代币从一个链转移到另一个链。因此,我们正在探索各种跨链技术(例如PeaceRelay和Waterloo),这些技术可以以技术上可行的方式实现此功能。

5.2.3协议级治理和国库

除了管理统一的KNC代币供应并就协议规范做出决策外,协议维护者还管理国库,以资助研究和开发工作以在不同的区块链上采用该协议,或用于KNC代币互操作性和其他原因。

5.3向前迈进

随着Kyber系统和社区的发展,KNC将在确保Kyber继续发展成为具有凝聚力的经济和目标社区方面发挥越来越重要的作用。

我们希望在以后的文章中包含有关KNC的更多详细信息,特别是协议级别的治理,管理KNC账本和跨链供应以及DAO和国库的技术工作。

VI.技术规范

6.1协议功能

以下方法均在智能合约中实现,并用于与协议智能合约进行交互。

6.1.1代币交易

下面的合约功能由购买者执行,以查看预期的代币汇率并提出交易请求。

getExpectedRate

调用getExpectedRate()函数以查询源代币到目标代币的预期和滑点(slippage)代币汇率。

汇率为零表示当前无法进行从请求的源代币数量到目标代币的交易。

无论源或目标的代币小数如何,返回的速率均为精度值。 我们在下面举一个例子。

例子

假设购买者查询GTO到ZIL的转换汇率,并且返回数字1219076623416000000。 我们假设精度值为1018。1219076623416000000 /(10 18)= 1.219这意味着可以将1个GTO代币交换为1.219 ZIL代币。因此,我们看到即使源和代币的小数位不同,返回的汇率仍是精确值。

trade

调用trade()函数从一个代币交易到另一个代币。转换后的代币将发送到目标地址(destAddress)。

此功能的实现应考虑所有安全检查,以防止对储备进行汇率操纵和/或对储备的不正确使用,以确保交易按照购买者的预期进行。


6.1.2添加和删除储备和代币交易对

执行以下功能以添加或删除新的储备,以及启用或禁用代币交易。

addReserve

调用addReserve()函数以将储备添加为流动性提供者。

removeReserve

调用removeReserve() 函数来从协议中删除储备

listPairForReserve

调用listPairForReserve()函数以表示每个列出的储备支持哪些代币交易对。

6.2Reserve接口

想要为协议用户提供流动性的任何储备都需要实现2种方法以连接到主协议合约。

getConversionRate

getConversionRate()函数由主协议合约的储备金实现,以获取代币汇率。


如上面在getExpectedRate()函数中所述,无论源或目标的代币小数如何,返回的转换率均为精确值。

此外,如果储备无法满足交易要求(例如,持有的代币数量不足以供购买者兑换),则预期返回的转换率为零。

trade

选择储备来填充用户交易订单时,主协议合约将调用trade()函数。请注意,此功能不同于接受订单的功能。

由于它是一个接口,因此网络合约期望保留实现该trade()函数的功能,以便实际使用网络发送给其的srcToken的srcAmount,计算有关conversionRate的destToken的数量并将其发送到 `destAddress`,`validate`参数取决于要使用的储备。


一旦服务被添加,并且其代币交易对上市交易,它就变成储备网络的一部分。

官方原文地址:Kyber协议白皮书

—-

编译者/作者:灰狼

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...