YFX去中心化永续合约交易所白皮书

YFX去中心化永续合约交易所白皮书

YFX去中心化永续合约交易所白皮书
YFX.COM YFX.IO
Your Decentralized Futures Exchange.
2020年12月

摘要

该技术白皮书解释了YFX V1跨链去中心化永续合约交易所背后的一些技术设计方案,它涵盖了以太坊Ethereum、波场Tron、币安智能链BSC、火币生态链Heco等公链上的智能合约设计,公允价报价系统,强平穿仓,风险基金之类的技术设计等。允许用户使用Ethereum、Tron、BSC、Heco上的任意币种,包括ETH、TRX、USDT、USDC、WBTC以及各种ERC20、TRC20的Token作为保证金进行交易,交易指数为区块链上的预言机价格指数或者其他的外部市场均价指数。

此外,本白皮书会系统介绍永续合约在区块链上的无穿仓系统设计、自动做市商核心机制,包括做市商风控,资金安全等方案。

一、概述

区块链中心化交易所,充当了传统金融中的券商、交易所、银行的角色,权限非常巨大,造成了平台管理不善、恶意操作、任意收费的风险,如随意插针,平台假币操盘等。同时该行业本身也存在法律约束力弱等特点,如黑客入侵、跑路等乱象。为了解决这些问题,以Uniswap为代表的去中心化交易所,开始解决资金不透明、算法不透明、数据不透明等问题。

YFX是一个基于以太坊Ethereum、波场Tron、币安智能链BSC、火币生态链Heco的完全透明的去中心化永续合约交易平台,提供高达100倍杠杆交易BTC、ETH等资产。YFX采用领先的QIC-AMM做市商池交易方式,为用户提供极高的流动性、极低的交易滑点。YFX上所有的资金都由智能合约托管,所有的智能合约代码都开源并通过专业机构审计和攻击验证。通过智能合约的方式,用户可以随时充入资金、随时提走自己的资金。

QIC-AMM(Quoted Index Price and Constant Integral Based Automated Market Maker)是基于指数报价和恒定积分的动态深度金融衍生品交易协议。

QIC-AMM协议通过中心化指数价格报价,交易者参考该报价直接和自动做市商完成做多或做空成交,交易深度与做市资金池的可用余额成函数关系,做市资金池不存在无常损失。

二、主要交易机制

YFX采用做市商资金池的交易机制,每个交易对对应一个做市商资金池, 用户的所有订单将与做市商资金池成交,用户的盈亏最终将直接与做市商资金池进行结算。在做市过程中,做市商只需要投入一种币种即可参与做市,如果赎回时的净值大于申购时的净值,即可获利。

YFX 同时支持正向合约、反向合约、混合合约的交易。


正向合约
BTC_USDT合约,用USDT作为保证金,采用BTC_USDT的指数价格,最终结算USDT
反向合约
BTC_USD合约,用WBTC作为保证金,采用BTC_USD的指数价格,最终结算WBTC
ETH_USD合约,用ETH或者WETH做为保证金,采用ETH_USD的指数价格,最终结算ETH或者WETH
混合合约
ETH_USDT或者BTC_USDT合约,可以用任何ERC20 或者TRC20的Token来结算盈亏

1.价格机制
YFX采用的报价方式为用户先发送交易上链,平台按交易上链时间的价格上报区块链进行开仓、平仓交易。指数价格源于3个主要的数据来源,平台的指数价格实时对外公开,用户可以查历史任意时刻的指数价格。

1.1采用区块链上的预言机,如ChainLink、JustLink等。预言机合约提供永续合约的底层资产的价格指数,是整个永续合约系统非常关键的环节。YFX的永续合约可使用ChainLink的预言机数据。随行业的整体发展,YFX也会不断使用新的预言机技术以提高永续合约的产品质量和安全性。

1.2采用Uniswap之类的去中心化币币交易所DEX的AMM机制。当前Uniswap的AMM使用了经典的恒定乘积(x*y=k)定价公式。这个公式在Uniswap等DEX项目中得到了充分验证。我们认为使用这一公式作为AMM的起步是一个很好的选择。

在套用这个定价公式时,我们首先令AMM的保证金账户只有多头头寸且总是足额抵押的。这保证了AMM的账户永远不会被清算,即AMM的保证金账户总是安全的。再者,我们将AMM的可用保证金余额代入公式中的x ,AMM账户的多头头寸数量代入公式中的y。当交易员通过AMM做多时,交易员的多头头寸增加,AMM的多头头寸数y减小、可用保证金余额x增大;反之,当交易员通过AMM做空时,交易员的空头头寸增加,AMM的多头数y增大,可用保证金余额x减小。从而该定价公式可以给出与AMM交易的价格。

1.3中心化指数价格报价,指数价格代表了标的资产的市场共识价格;具体而言,指数价格的计算过程由两部分构成:数据可用性验证和参考交易所权重修正。数据可用性验证包括了对其时效性和有效性的判断。而通过可用性验证的参考交易所报价,将会根据其与参考交易所加权均价的差距,得到对应的调整后权重。

指数价格计算细则:以yBTCUSD指数价格为例
.yBTCUSD是这些交易所:Coinbase、Bitstamp和Kraken的加权BTC现货交易价格之和。加权均数是各交易所上一个月的月交易量。

.yBTCUSD = 交易量权重(A)×A报价+交易量权重(B) ×B报价+交易量权重(C) ×C报价
价差=|交易所价格−.yBTCUSD|
通过各个交易所的价差平方后的倒数进行调整,我们就得到了交易所的权重:
指数价格就是由交易所的现货价格乘以各自的交易所权重而得来的,USD指数主要来源于Coinbase、Kraken、Bitstamp等USD交易所,USDT指数主要来源于Binance、Huobi、OKEx、Gate等USDT交易所。

指数价格=(A报价 ×交易所权重A)+(B报价×交易所权重B)+(C报价×交易所权重C)
当以下条件被触发时,YFX会暂时从指数计算中移除交易所:
I.交易所的最新报价超过1分钟没有变化。这样可以剔除流动性不足或服务中断的交易所。
II.交易所的报价与其他4家报价的平均值偏差超过3%。这样可以避免价格异常的发生。
每个数据来源有各自的优势,但是由于合约对当前数据的实时性要求非常高,所以YFX V1版本将主要采用中心化指数价格报价机制,平均每秒钟取1~5次数据进行盘口报价。

1.4仓位模型,YFX仓位模型为分仓模型,不会进行多仓、空仓的单方向合并,也不会进行多空仓位的双向合并,即用户的每一笔订单都是一个独立的仓位,每个仓位独立结算。

2.自动做市动态深度
该系统采用恒定积分公式计算做市商池子动态深度。把LP池子可用余额利用正态分布概率模型计算自动做市商盘口深度,X~N(index_price,500)。

例:当前index_price = 10000,做市商池子可用余额为100000usdt,做市杠杆1倍,用户做多开仓价值1000usdt,那么P(index_price<θ<price) = 1000/(1*100000) =0.01,求price
price = 10001.25
可根据调整标准差调整深度大小。

三、合约交易规则

YFX 合约交易所具有永续合约的大部分规则,针对智能合约做了特定的优化设计,简化了很多永续合约的计算方案。
以开仓价格买入合约做多做空,开仓时保证金余额必须大于初始保证金,当保证金余额低于维持保证金的时候,系统会清算头寸,进行强制平仓。

正向合约的保证金和盈亏计算方法如下:
多仓盈亏 = (平仓价格-开仓价格)*数量
P&L for long position = Quantity * (Average entry price - Average exit price)
多仓强平价 = 开仓价格*(1-初始保证金率)/(1-维持保证金率)
LP for long position = Average exit price *(1-1/Leverage)/(1-MM) 
空仓盈亏 = (开仓价格-平仓价格)*数量
P&L for short position = Quantity x (Average entry price - Average exit price)
空仓强平价 = 开仓价格*(1+初始保证金率)/(1+维持保证金率)
LP for short position = Average entry price *(1+1/Leverage)/(1+MM)
初始保证金 = 开仓价格*数量/开仓杠杆
Initial margin = Average entry price * Quantity /Leverage
维持保证金 = 开仓价格*数量*维持保证金率
Maintenance Margin(MM) = Average entry price *Quantity *Maintenance Margin rate 
反向合约的保证金和盈亏计算方法如下:
多仓盈亏 = (1/开仓价格 - 1/平仓价格)*数量
P&L for long position = Quantity x (1/Average entry price - 1/Average exit price)
多仓强平价 = 开仓价格/(1+初始保证金率)*(1+维持保证金率)
LP for long position = Average entry price *(1+MMR)/(1+1/Leverage)
空仓盈亏 = (1/平仓价格 - 1/开仓价格)*数量
P&L for short position = Quantity x (1/Average exit price - 1/Average entry price)
空仓强平价 = 开仓价格/(1-初始保证金率) *(1-维持保证金率)
LP for short position = Average entry price *(1-MMR)/(1-1/Leverage)
起始保证金 = 1/开仓价格  *数量 *(1/杠杆)
Initial margin = Quantity /(Leverage*Average entry price )
维持保证金 = 1/开仓价格  *数量 *维持保证金率
Maintenance Margin(MM) = Quantity *Maintenance Margin rate /Average entry price

正向合约以USDT、USDC等作为抵押物,反向合约以标的资产作为抵押物。

四、做市商机制

由于区块链本身延时而且性能非常低下,传统的撮合交易在区块链上几乎无法实现,因为委托、取消委托、成交都需要调用智能合约,消耗手续费,但是在极端情况下,委托、取消、成交等操作无法实时确认到区块链中。所以在最新的区块链上的交易解决方案,大多摒弃了撮合交易模式,而采用更确定的做市资金池交易模式。

比如Uniswap,通过简单的两个币的做市资金池,很好的完成做市商和用户之间的币币交换工作,把原本对时间非常敏感的价格机制简化成了一个结果计算公式。

参考Uniswap等的设计机制,YFX也采用了传统金融中常见的做市商制度,用户开仓、平仓都和做市商资金池成交。YFX为每个交易对设置了一个对应的做市商池,用户可以选择做交易或参与做市资金池,参与做市资金池也叫做增加流动性,退出做市资金池也叫减少流动性。用户参与做市商可以获得做市相关的收益,包括提供流动性获得的收益,以及用户交易手续费补偿做市池。

在YFX中,用户和做市商的杠杆率不同,通过参数配置,用户的杠杆一般是做市商的5倍。假设用户付出100USDT保证金,开仓10倍杠杆,开仓总市值1000USDT,此时假设做市商采用2倍杠杆做市,做市商将被冻结500USDT保证金。用户的盈利上限为做市商的保证金500USDT,做市商的盈利上限为用户的保证金100USDT。如果区块链出现极端情况,平台将以某一方的破产价格或强平价进行清算,避免整个系统出现穿仓的情况。

自动做市商(AMM)
1. 增加流动性
任何交易者都可以作为平台流动性提供者。向自动做市商池子增加流动性时,只需向平台的智能合约中存入做市币种,同时获得LP Token作为凭证。目前平台认定的结算币种为USDT、USDC、ETH、TRX、WBTC等,后续可以通过社区治理,添加更多的结算币种,比如其他Token等。
增加流动性时获得LP Token的数量计算(以USDT为例):
AmountLPToken = sentUSDTAmount/LP TokenPrice

2. 提取流动性
LP 通过向自动做市商池子发送 LP Token 提取流动性,获得相应份额的做市币种,其金额可以使用如下公式计算(以USDT为例):
AmountUSDT=sentLPTokenAmount * LPTokenPrice

3. LP Token
LP Token是指提供流动性做市商的凭证,每个交易对有一个独立的LP Token,是高度可分割。LP Token用于跟踪LP池子的市值。
LP TokenAmount = 增加USDT流动性发行的数量 - 提取USDT流动性燃烧的数量
LP池子市值 = LP池子可用余额+仓位保证金+持仓未实现盈亏总和。
LP TokenPrice = LP池子市值/LP TokenAmount

4. LP收益构成
LP选择一个LP自动做市商池完成抵押后,其收益主要由如下几方面构成: 
I.做市商持仓盈亏,包括已结算盈亏和未结算盈亏。
II.交易手续费,详情见手续费机制。
III.其他做市商每次赎回的手续费。

5.自动做市商全局风险参数及边界设置
I.当中心化指数价格在当前所有持仓的破产价以外,系统就会暂停增加和提取流动性。
II.当LP池子的可用余额小于LP池子总市值的40%,用户将不能再下新的订单。

五、手续费机制

YFX的手续费采用开仓预扣除、平仓结算的手续费处理方式,以用户的开仓价值来计算整个手续费,平台预设手续费为0.1%(开仓0.05%,平仓0.05%),此手续费率可以通过平台币治理进行调整。
平台手续费最终会分成以下4份:


比例

分配

说明

30%

用于邀请人返佣

用于奖励邀请人,保证整个市场的快速发展

20%

做市商池Maker手续费补偿

通常情况下,Maker的负手续费在这里补偿,以降低做市的风险

50%

平台运营及回购平台币

其中50%作为平台基本的运营费用,包括上链交易的成本

其中50%用于在UniswapJustswap等平台回购平台币并销毁



用户下单需要付出的成本为:区块链网络手续费 + 交易手续费 + 初始保证金。

六、维持保证金率

参考Bitmex、Binance等永续合约交易所,所有的平台为了避免平台出现极端情况下无法平仓的情况,平台都会设置一个维持保证金率。维持保证金会根据用户的仓位大小、杠杆大小进行变化。一般情况下在小仓位的时候维持保证金率为0.5%,大仓位的时候,维持保证金率可以高达50%。

YFX的维持保证金率采用静态维持保证金率,在某个交易对中,维持保证金率是初始确定的,一般最大100倍杠杆的情况下, 维持保证金率为0.5%,最大为50倍杠杆时,维持保证金率为1%。

七、强平价

当用户当前仓位的保证金率到达维持保证金率的时候(或者指数价格到达用户的强平价时),平台将用超级权限调用智能合约进行合约的强平。强平之后,系统将自动触发盈亏计算,把用户和做市商的资金进行结算。

正向合约强平价:
多仓强平价 = 开仓价格*(1-1/杠杆)/(1-维持保证金率)
LiqPrice for long position = Average entry price *(1-1/Leverage)/(1-MM)
空仓强平价 = 开仓价格*(1+1/杠杆)/(1+维持保证金率)
LiqPrice for short position = Average entry price *(1+1/Leverage)/(1+MM)
反向合约强平价:
多仓强平价 = 开仓价格/(1+1/杠杆) *(1+维持保证金率)
LiqPrice for long position = Average entry price *(1+MMR)/(1+1/Leverage)
空仓强平价 = 开仓价格/(1-1/杠杆) *(1-维持保证金率)
LiqPrice for short position = Average entry price *(1-MMR)/(1-1/Leverage)

八、资金费率

在永续合约中,资金费率用来保证交易价格锚定现货价格进行交易,避免平台出现多空不平衡的情况,以及用于基本的借贷利率差的处理。YFX 为了降低区块链上的计算复杂度, V1 版本不设置资金费率。

九、持仓时间

由于YFX V1版本并未设置资金费率相关的算法,所以失去了永续合约的一些完备性。为了平衡整个交易体系,系统设计了一个最长持仓时间限制,这个限制一般是以持仓区块数为限制。比如在波场上,持仓限制可能是100万个区块,ETH上,持仓时间为20万个区块。大约30天的持仓时间。

十、风险基金

风险基金是永续合约用来解决穿仓风险的主要手段,主要用于在极端行情下弥补用户穿仓导致的系统亏损以及一些不可预测的风险。在用户的仓位被强制平仓时,剩余保证金将注入风险基金。当平台出现穿仓或者其他用户亏损的情况下,平台将启用风险基金弥补相应损失。

风险基金属于整个平台,不属于交易所的收益,为了回馈整个社区用户,在风险基金积累到一定程度的时候,将有一部分会被用于回购平台币。

十一、平台超级权限

永续合约不同于币币换币逻辑,合约本身会有一些中心化的控制系统。为了保证金平台的稳定运行,平台将设置一些超级权限,用于交易所治理和平台参数设置。

平台控制说明:
整个平台充提开关
整个平台交易开关
某个交易对的交易开关
某个交易对交割清算
强制平仓触发
用户订单的指数价格设置
其他

平台参数设置说明:
全站手续费率
全站手续费率分配比例
调整平台维持保证金率
其他交易对、交易所相关的参数

十二、平台币&社区治理

YFX平台将发行治理代币YFX,YFX代币用于整个去中心化平台的治理。YFX采用分期奖励性发放,其中社区通过挖矿或者做市贡献奖励等方式获得,开发团队和前期投资人只拥有少部分币,并且在未来4年时间内线性解锁。

YFX持有人将拥有:YFX治理、YFX社区金库、协议切换费用切换、创建交易对、创建交易区等权利。

十三、风控

YFX永续合约的业务逻辑相对复杂,面对的风险挑战也相对较高。为了最大化保障用户的资金安全,平台采用链上和链下两种方式开展风控工作。
链上风控是一种通过链上智能合约实施的完全去中心化的自动风控机制。链上风控程序由管理员部署,并由管理员授予风控程序“暂停合约功能”的权限。当链上风控策略被触发时,链上风控程序可以暂停整个合约的功能。这之后,管理员可以根据具体情况采取进一步措施。
链下风控是由链下监控程序自动执行的风控机制。链下风控的优势是可以实现各种复杂的风控策略,缺点是这种风控方式的中心化程度相对较高。

十四、免责申明

本文仅供参考。不构成投资建议或购买或出售任何投资的建议或邀请,不应用于评估和作出任何投资决定。不应依赖本白皮书提供审计、法律或税务建议或投资建议。本白皮书反映了作者当前的观点,若所反映的意见如有变更,恕不更新。