闪电贷开发

目前闪电贷是面向开发人员的。 您必须对以太坊,编程和智能合约有充分的了解,才能利用它们。

考虑到闪电贷gas成本,目前建议用是基于AAVE借贷协议开发的闪电贷,支持闪电贷,稳定贷等功能的借贷平台,并且支持批量闪电贷,闪电贷策略合约代码也能够与AAVE的闪电贷代码共用。

概述

对于开发人员,在开发闪电贷策略时,需要考虑以下步骤:

  1. 你的策略合约需要调用LendingPool智能合约,通过flashLoan()接口请求一定数量的闪电贷贷款。

  2. 经过一些合理性检查后,LendingPool将请求的贷款币及一定额度转移到你的策略合同中,然后调用executeOperation()。该函数有操作approve一定量的币(总贷款+手续费)给LendingPool地址。

  3. 策略代码执行完后,LendingPool智能合约会更新存款的相关详细信息,并从策略合约提取闪电贷借款+手续费。

  4. 以上所有操作均发生在1个交易内(因此在单个区块中),之间有任何交易失败都将导致交易回退。

  5. 策略合约记得预留提币接口用来获取闪电贷奖励。

 // LendingPool 闪电贷接口
   function flashLoan(
    address receiverAddress,     // 用来接收闪电贷资金的合约地址
    address[] calldata assets,   // 闪电贷的贷款资产代币地址,支持批量闪电贷
    uint256[] calldata amounts,  // 闪电贷的额度
    uint256[] calldata modes,    // 贷款模式,0为立即还款,1为稳定贷,2为可变贷,闪电贷一般使用模式0即可
    address onBehalfOf,          // 在模式为1或2的情况下,将收到债务的地址
    bytes calldata params,       // 额外信息作为可变参数打包传递给receiver
    uint16 referralCode          // 邀请码,可以忽略
  )
// executeOperation 闪电贷策略合约必须实现的函数,一般用于授权还款额度给LendPool合约地址
  function executeOperation(
        address[] calldata assets,      // 闪电贷的贷款资产代币地址
        uint256[] calldata amounts,     // 闪电贷的额度
        uint256[] calldata premiums,    // 闪电贷手续费
        address initiator,              // call 地址
        bytes calldata params           // 额外信息作为可变参数打包
  )

Last updated