0
+
35,126
微信扫码分享

如何设置一个AAVE的清算机器人?

Oct 15, 2020 8:46:44 AM
加密谷Live
+关注
因此系统中需要清算人这一角色。清算人对不太健康的借贷(健康系数<1)进行清算,并为此获得抵押物总价值5%-15%的奖励。

AAVE 是一个 DeFi 去中心化贷款协议,人们可以使用多种加密资产作为抵押,向其申请贷款。目前能够作为抵押资产的加密资产包括 ETH、DAI、USDT、LINK 等十几种。

作为一个贷款协议,系统本身运行健康与否很大程度上取决于使用该协议进行的各种贷款是否健康。当所有的借款人都有足够的抵押品抵押时,整个系统拥有足够的偿还能力,系统是健康的;而一旦有借款人抵押不足时,整个系统就会增加风险,而一旦这样的借款人过多,整个系统的风险将进一步扩大。因此系统中需要清算人这一角色。清算人对不太健康的借贷(健康系数<1)进行清算,并为此获得抵押物总价值5%-15%的奖励。该奖励措施能够鼓励清算人及时清算不健康的贷款,从而保障整个系统的金融安全。

清算人参与清算有三种方式:

使用 AAVE 应用程序中的清算模块:https://app.aave.com/liquidations直接调用智能合约中的 liquidationCall() 方法创建自己的自动化系统或者机器人来对贷款进行清算

鉴于方法一较为简单,按照应用内提示进行操作即可,本文重点讨论后两种。其中方法三也使用到了二的方法,即调用了智能合约中的 liquidationCall()。

触发清算的先决条件

在调用 liquidationCall() 方法时,我们需要知道几个条件:

健康因素低于1的账户。只有健康因素低于1的账户才会被清算。其中健康因素的计算方式为:

其中:

-  Collateral[i] in ETH: 折合成 ETH 计算的抵押的资产i的值

-  Liquidation Threshold[i]: 清算阈值,最大借出资产/总抵押资产

-  Total Borrows in ETH: 折合成 ETH 的借出的资产额度

-  Total Fees in ETH: 折合成 ETH 计算的所有费用

AAVE 采用的是 Chainlink 的喂价机制。

公式可总结为:健康因子与抵押物总和成正比,与借出物总额成反比。抵押物越多,健康因子越大,借款人偿付能力越强,该笔借贷越健康。反之借出物越多,健康因子分母越大,值越小,则表示借款人偿付能力越低,该笔借贷越不健康。只有健康因子低于1的账户才会被清算。

有了低于1的健康因子就可以触发清算条件。要清算某条具体的贷款,还需要知道该笔贷款的借款人地址、贷款金额和资产金额,确保自己有足够的余额帮助贷款人偿还债务。

要被清算的账户

只有健康系数低于1的账户才会被清算。有多种方式可以获到用户的健康系数:

使用链上监控

        i. 监控 AAVE 协议发出的时间,并在本地保持用户数据的最新状态。每当用户和 AAVE 协议进行交互时(存款、还款、借用等),都会发出时间,这可以在链上监控到;

        ii. 监控到用户地址后,就可以使用该用户的地址,在链上调用直接调用查询接口即可查询到 getUserReserveData()。

使用项目方的 API 进行查询(稍有延迟)

项目方提供了查询的 API:https://protocol-api.aave.com/liquidations?get=proto

执行清算

查询到要清算的账户后,我们就能计算可以清算的抵押物的数量。执行清算一般有两种方法:

编写一个智能合约,在智能合约中直接调用 AAVE 中的 liquidationCall() 执行清算使用 Web3.js 等软件包进行调用

此处以 web3.js 为例:

// Import the ABIs,see:https://docs.aave.com/developers/developing-on-aave/deployed-contract-instancesimport DaiTokenABIfrom "./DAItoken.json"importLendingPoolAddressesProviderABI from"./LendingPoolAddressesProvider.json"importLendingPoolABI from "./LendingPool.json"// ... The rest ofyour code ...// Input variablesconstcollateralAddress = "THE_COLLATERAL_ASSET_ADDRESS"constdaiAmountInWei = web3.utils.toWei("1000","ether").toString()const daiAddress ="0x6B175474E89094C44Da98b954EedeAC495271d0F" // mainnet DAIconst user ="USER_ACCOUNT"constreceiveATokens = trueconstlpAddressProviderAddress = "0x24a42fD28C976A61Df5D00D0599C34c4f90748c8" //mainnetconst lpAddressProviderContract= new web3.eth.Contract(LendingPoolAddressesProviderABI,lpAddressProviderAddress)// Get the latestLendingPoolCore addressconst lpCoreAddress= await lpAddressProviderContract.methods.getLendingPoolCore().call().catch((e) => {throw Error(`Errorgetting lendingPool address: ${e.message}`)})// Approve theLendingPoolCore address with the DAI contractconst daiContract =new web3.eth.Contract(DAITokenABI, daiAddress)awaitdaiContract.methods.approve(lpCoreAddress,daiAmountInWei).send().catch((e) => {throw Error(`Errorapproving DAI allowance: ${e.message}`)})// Get the latestLendingPool contract addressconst lpAddress =await lpAddressProviderContract.methods.getLendingPool().call().catch((e) => {throw Error(`Errorgetting lendingPool address: ${e.message}`)})// Make the deposittransaction via LendingPool contractconst lpContract =new web3.eth.Contract(LendingPoolABI, lpAddress)awaitlpContract.methods.liquidationCall(collateralAddress,daiAddress,user,daiAmountInWei,receiveATokens,).send().catch((e) => {throw Error(`Errorliquidating user with error: ${e.message}`)})

(编辑注:此处代码不完整,请查阅更多内容)

设置一个清算机器人

以上即为清算的逻辑,在设计清算机器人时,按照以下步骤即可:

清算前需要计算,确保机器人自己有足够的资金能帮贷款人还清债务,也要计算能够获得足够的资金作为报偿;考虑清算最有利可图的抵押品,不仅要考虑到贷款债务的金额,还需要把 gas 的成本计算在内,以此判断是否有足够的获利能力;确保机器人访问的是最新版本的 AAVE 协议;其他系统故障和资产安全等。

计算收益

获取抵押品的详细信息,例如抵押的用户、清算奖励比率等获取抵押品的数量,并从预言机中获取到抵押品当前的总价值

最大清算奖励=抵押品总价值*清算奖励比例计算交易需要的 gas 费用最大获利=最大清算奖励减去gas 费用

清算奖励比例根据币种的不同而有所变化,一般来说,稳定币清算奖励相对较低,非稳定币价格则更高。

  • DeFi
加密谷Live
+关注
评论

精选专题

204,262人看过
9篇文章
Filecoin主网上线
Filecoin主网上线
664,261人看过
28篇文章
2020上海区块链国际周全程报道
2020上海区块链国际周全程专题报道。
349,325人看过
13篇文章
Uniswap发币“狙击战”
Uniswap发币“狙击战”
91,269人看过
5篇文章
ETH 2.0
ETH 2.0
版权申明
1、本网(www.PANewsLab.com)所有内容,凡注明"来源:PANews"的所有文字、图片和音视频资料,版权均属PANews所有,任何媒体、网站或个人在转载本站内容时必须注明"稿件来源:PANews",违者本网将依法追究责任。
凡本网注明"来源:XXX(非PANews) "的文/图等稿件,本网转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。
2、除注明"来源:PANews"的内容外,本网以下内容亦不可任意转载:(a) 本网所指向的非本网内容的相关链接内容;
(b) 已作出不得转载或未经许可不得转载声明的内容;
(c) 未由本网署名或本网引用、转载的他人作品等非本网版权内容;
(d) 本网中特有的图形、标志、页面风格、编排方式、程序等;
(e) 本网中必须具有特别授权或具有注册用户资格方可知晓的内容;
(f) 其他法律不允许或本网认为不适合转载的内容。
3、转载或引用本网内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本网内容原意进行曲解、修改,同时必须保留本网注明的"稿件来源",并自负版权等法律责任。
4、转载或引用本网内容不得进行如下活动:
(a) 损害本网或他人利益;
(b) 任何违法行为;
(c) 任何可能破坏公秩良俗的行为;
(d) 擅自同意他人继续转载、引用本网内容;
5、转载或引用本网版权所有之内容须注明“转自PANews”字样,并标明本网网址www.PANewsLab.com
(a) 转载或引用本网中的署名文章,请按规定向作者支付稿酬。
(b) 对于不当转载或引用本网内容而引起的民事纷争、行政处理或其他损失,本网不承担责任。
(c) 本网以“法定许可”方式使用作品,已与知识产权所有者签署合作协议并支付报酬。如有未尽事宜请相关权利人直接与本网媒体合作部联系,联系邮箱:info@panony.com
(d) 对不遵守本声明或其他违法、恶意使用本网内容者,本网保留追究其法律责任的权利。
我知道了
用户协议
欢迎您使用PANews软件及相关服务!
用户在接受PANews服务之前,请务必仔细阅读本条款并同意本声明。
用户直接或通过各类方式(如站外API引用等)间接使用PANews服务和数据的行为,都将被视作已无条件接受本声明所涉全部内容;若用户对本声明的任何条款有异议,请停止使用PANews所提供的全部服务。

隐私政策
本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。

适用范围
(a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息;
(b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;
(c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。

您了解并同意,以下信息不适用本隐私权政策:
(a) 您在使用本应用平台提供的搜索服务时输入的关键字信息;
(b) 本应用收集到的您在本应用发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;
(c) 违反法律规定或违反本应用规则行为及本应用已对您采取的措施。

信息使用
(a) 本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息,除非事先得到您的许可,或该第三方和本应用(含本应用关联公司)单独或共同为您提供服务,且在该服务结束后,其将被禁止访问包括其以前能够访问的所有这些资料。
(b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。
(c) 为服务用户的目的,本应用可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,或者与本应用合作伙伴共享信息以便他们向您发送有关其产品和服务的信息(后者需要您的事先同意)。

信息披露 在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:
(a) 经您事先同意,向第三方披露; (b) 为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;
(c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;
(d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露;
(e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;
(f) 在本应用平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本应用有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。
(g) 其它本应用根据法律、法规或者网站政策认为合适的披露。信息存储和交换本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。

Cookie的使用
(a) 在您未拒绝接受cookies的情况下,本应用会在您的计算机上设定或取用cookies ,以便您能登录或使用依赖于cookies的本应用平台服务或功能。本应用使用cookies可为您提供更加周到的个性化服务,包括推广服务。
(b) 您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式拒绝接受cookies。但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的本应用网络服务或功能。
(c) 通过本应用所设cookies所取得的有关信息,将适用本政策。

信息安全
(a) 本应用帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本应用将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”。
(b) 在使用本应用网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对本隐私政策的更改。
(c) 如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。
(d) 本公司保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。
不同意
同意
免密码登录
密码登录
社交账号登录