-

DeFi: 怎样设想一个 Compound 整理机器人?

来源: 数字货币 时间:2020-09-28 08:09:44
导读: Compound 项目在此背景下应运而生,该项目是一种基于供求关系的分布式协议,设计了一种基于货币市场设定利率的算法,实现了用户无时间摩擦地交易以太坊资产


如何制作和销售自己的NFT?Rarible使用指南

NFT的风慢慢地吹了过来,我很喜欢NFT,因为我本人对收藏小物件很是喜欢。书桌上黄花梨外壳的签字笔,紫铜的指尖陀螺已经被我把玩儿出了漂亮的包浆

区块链数字资产和加密钱银市场已生长成为一个充满活力的金融生态体系。但相较于传统金融市场,绝大多数项目的设想思绪都是基于数字资产或加密钱银在空间上的转移,而金融自身仍作为时候订价的东西,塑造了一个关于可量化、可生意业务的时候维度。Compound 项目在此背景下应运而生,该项目是一种基于供求关系的分布式协定,设想了一种基于钱银市场设定利率的算法,完成了用户无时候磨擦地生意业务以太坊资产

本文分为三部份,第一部份扼要引见该项目中与整理相干的基本概念,第二部份经由过程示例解说整理流程,第三部份引见怎样设想一个整理机器人。

整理的基本概念

Compound 项目中与整理相干的基本概念重要包含:cTokenComptrollerLiquidityClose factorLiquidation Incentive

//cToken

Compound 协定现在支撑 Erc20 和 Ether 两类基本资产,cToken 是两类基本资产在 Compound 上的集成,转换公式为 cToken = 基本资产 / 当前汇率。cToken 在 Compound 上有两种作用,分别是作为利钱的衡量标准和贷款的典质物。有别于传统银行的盘算体式格局,利率是经由过程复利的情势增进的。cToken 在 Compound 协定中作为度量衡运用。

//Comptroller

Comptroller 经由过程 collateral factor 对 Compound 协定举行风险治理,即 Comptroller 为协定的风险治理层。每类基本资产都有互相自力的 collateral factor,其数值大小依据基本资产的流动性和市值范围在0~90%浮动。流动性越强,市值范围越高数值越大。若 collateral factor 为0,该类基本资产不能用作典质或许在整理中举行抵扣。Compound 依据 collateral factor 肯定用户所需典质品代价以及该用户是不是可以被整理。

//Liquidity

Liquidity 是 Compound 协定整理的标志位。当账户的 Liquidity 不为正数时,将被该协定的其他用户整理,直到将 Liquidity 从新设置为正数。账户 Liquidity 盘算由以下公式(1)、(2)、(3)求得:

个中,tokensToDenom 是将其他资产价钱转换为ETH价钱的汇率,oraclePrice 是从预言机中取得的单价。为处置惩罚在源码中 Liquidity 是 uint 范例、没法示意负数的问题,源码中定义 shortfall = sumBorrowPlusEffects – sumCollateral。许多整理程序为一致示意,将 Compound 协定整理标志位设为 health。Health 小于1,则示意该账户须要被整理。

//Close Factor

Close factor 是须要被整理的部份占未了偿贷款的百分比,即基本贷款须要被整理的部份。例,一个须要被整理的账户 close factor 为0.1,那末须要整理其贷款的10%。假如用户具有多种借入资产,close factor 是某一资产的属性,并不是该用户总资产的属性。

//Liquidation Incentive

Liquidation incentive 是为整理人供应分外的典质品,以勉励整理人对 underwater 账户举行整理。比方,Liquidation incentive 为1.1,则整理人会取得乞贷典质品10%的嘉奖。现在 Liquidation incentive 在1.3~1.5之间。假定 Liquidation incentive 为1.05,可以运用公式(7)盘算在整理完成时整理人的收益。

整理流程

为保证 Compound 体系安稳运转,该协定设想了一套完整的风险和整理划定规矩。为了下降贷款风险,Compound 协定在每类资产中增添了 collateral factor 属性。该属性定义了某类资产单元典质物可以借贷其他资产的数目。即,典质率的一种示意体式格局。现在的重要借贷协定都是经由过程逾额典质的体式格局乞贷,一般要求典质率低于 150% ,比方:到场市场的典质率为150%,用户在 Compound 逾额典质 ETH 借出一笔 DAI 贷款,但不巧的是,在贷款时期恰逢 ETH 的价钱大幅下跌,使得该乞贷人的典质品代价跌破了对 ETH 要求的典质品比率 150%。

假如没有补足或许出卖典质品,就会触发整理程序,另外,乞贷人还要交纳整理罚金,这个时候整理人可以触发 Compound 整理程序,可以以低于市场价钱 3% -5% 的折扣取得ETH典质品,这部份差价就是 Liquidation Incentive 的由来。由此,乞贷人了偿了 Compound 体系的贷款,防止 Compound 平台涌现债权和坏账,保持了体系的偿付能力,同时,整理人也取得了单笔3%~5%的收益,类似于矿工费,整理人取得了收益,平台也行以一般运转。

在 Compound 的整理机制中,只需整理人经由过程监控合约发明乞贷人的典质率太低,一旦触发整理程序,整理人就会马上启动整理。

怎样设想整理机器人?

整理机器人的总体设想原则为更快地发明 Liquidation incentive 高、且须要被整理的 underwater accounts,从而取得更高的整理收益

怎样发明 underwater accounts

Account API 可以完成与 Compound 协定交互种种账户信息,可以运用此 API 按地点检索特定用户的数据,或猎取 unhealthy accounts 列表。Compound 协定 API 的输入输出花样是由 Protocol Buffers 指定的。与典范的 protobufs 差别的是,Compound 除了支撑 protobufs 二进制花样外,还支撑JSON花样。若在输入输出中都运用 JSON 花样,须要在要求中标明“Content-Type: application / json”和“Accept: application / json”。

决议整理人整理的要素

必需有 unhealthy accounts 才举行整理,这是整理的前提条件。

在整理时,应只管挑选可在生意业务所轻松整理的典质品作为典质的账户举行整理。流动性高的典质品更轻易完成数字资产的钱银化;

应只管挑选典质品和债权集合在少数几类资产的 unhealthy accounts 举行整理。若 unhealthy accounts 的典质品和债权疏散在浩瀚资产上,每次挪用 liquidateBorrow 生意业务时都需指定一个 debt contract 和一个 collateral contract,以至于须要屡次挪用才完成整理,增添整理的本钱;

Ethereum 虚拟机(EVM)是一个全局状态机,必需按次序处置惩罚 liquidateBorrow 事件。因而,整理人要想取得更高收益,须要更快地发明并整理 unhealthy accounts;

假定某个 unhealthy accounts 全局 close factor 为0.5,并具有N个债权和M个典质资产,要最大水平地增添整理量。这是一个背包问题的详细运用,行将每一个项目建模为元组,项目总数为N * M。债权权重必需小于即是 close factor,且最大化典质物代价。

寻觅 unhealthy accounts 速率的决议性要素

网络耽误和硬件速率

Gas 消费

运用高 Gas 消费来播送一条整理生意业务优于播送多条。若同时播送多条整理生意业务,大概某一整理生意业务已经在以太坊的有用块中,从而致使区块链打包失利;

应挑选具有充足典质品的 unhealthy accounts 举行整理,如典质品代价不足将致使生意业务失利;

竖立链下缓存程序,该程序将 health 值小于1.2的账户标记为存在整理风险的账户,举行重点监控。一旦满足整理要求第一时候提议整理生意业务,削减与 Compound 协定交互次数。

实行整理的本钱

实行整理是一项资金密集型操纵,为整理100万美元的贷款,整理人须要有100万美元的资金;

整理生意业务是一个高度周期性生意业务行动。币值市场的严重波动会形成整理生意业务集合式迸发,从而增添生意业务本钱,并致使短期内大批被整理人走向破产,进而影响全部 Compound 项目的安稳运转;

为加速发明 unhealthy accounts,须要一个监控程序对大概被整理的账户举行监控,增添了准入的手艺门坎;

Gas 的用度大概会对终究收益发生巨大影响。一切生意业务的基本本钱为21000 Gas,若与合约举行交互会增添响应的 Gas。因而,整理程序须要预先盘算预期收益。

整理与收取典质物最大值盘算体式格局

某些账户的典质品代价大概少于最大整理金额,假如最大整理量或最大可网络典质品代价小于生意业务所消费的 Gas 乘以 Gas 的单价,那末整理生意业务永久不大概赢利。盘算最大整理数目和典质品最大收取量公式以下:

须要注重的是 sum (token_borrow_balance_underlying_in_eth) != total_borrow_value_in_eth。经由过程挪用 Account API 可以取得越发正确的 Oracle Price,但会下降运算速率。为了优化速率,在可以接收的偏差范围内捐躯正确性,运用近似价钱盘算。经由过程 PriceOracle 可以猎取 cToken 的 getUnderlyingPrice 和 liquidateCalculateSeizeTokens,经由过程 cUSDC 合约猎取 exchangeRateStored。经由过程汇率盘算便可以疾速、近似地盘算出所需收取典质物的数目。