闪电贷开发
目前闪电贷是面向开发人员的。 您必须对以太坊,编程和智能合约有充分的了解,才能利用它们。
考虑到闪电贷gas成本,目前建议用是基于AAVE借贷协议开发的闪电贷,支持闪电贷,稳定贷等功能的借贷平台,并且支持批量闪电贷,闪电贷策略合约代码也能够与AAVE的闪电贷代码共用。
概述
对于开发人员,在开发闪电贷策略时,需要考虑以下步骤:
你的策略合约需要调用
LendingPool
智能合约,通过flashLoan()
接口请求一定数量的闪电贷贷款。经过一些合理性检查后,
LendingPool
将请求的贷款币及一定额度转移到你的策略合同中,然后调用executeOperation()
。该函数有操作approve
一定量的币(总贷款+手续费)给LendingPool
地址。策略代码执行完后,
LendingPool
智能合约会更新存款的相关详细信息,并从策略合约提取闪电贷借款+手续费。以上所有操作均发生在1个交易内(因此在单个区块中),之间有任何交易失败都将导致交易回退。
策略合约记得预留提币接口用来获取闪电贷奖励。
// 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
Was this helpful?