XVG币购买平台|实现首笔闪电贷合约

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册
币安app

binance币安交易所

币安交易所app是全球排名第一的虚拟货币交易所,注册领取盲盒礼包!

APP下载   官网注册

从技术角度理解闪电贷最基本的方法和原理,并学会如何代码实现。

原文标题:《实现你的第一笔闪电贷合约》撰文:谈国鹏,Ownbit创始人

闪电贷(Flashloan)是DeFi中一个独特的产品,在传统金融活动中没有与之对应的事物。会编写和使用闪电贷也是一项很重要的技能。

概念闪电贷是一种无抵押、借贷金额无上限(可以借光池中所有的钱)的贷款。它要求借贷人快借快还,快到还款和借款在同一个交易内(同一个以太坊transaction)。

闪电贷要求每笔借款在归还时,除了归还本金,还要支付一定利息。该利息(或称手续费)由系统动态计算。

实现很多人对理解闪电贷有一定的难度。因为这需要了解智能合约执行原理和以太坊状态变化的机制。我们通过自己编写一个闪电贷合约,来理解其背后的运行原理。

以使用Aave提供的闪电贷为例,编写一个你自己的合约非常简单,你只需要实现一个叫executeOperation的方法。

executeOperationexecuteOperation方法参数中_reserve是所借代币的合约地址,如果是ETH则是一个特殊的地址(在Aave中用0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE来表示ETH),_amount是借款的金额,_fee是本次借款要偿还的利息。_params暂时可忽略。

functionexecuteOperation(address_reserve,uint256_amount,uint256_fee,bytescalldata_params)external{require(_amount<=getBalanceInternal(address(this),_reserve),"借款失败");//用借来的ETH去赚取更多的ETH//还款uinttotalDebt=_amount.add(_fee);transferFundsBackToPoolInternal(_reserve,totalDebt);}

当代码执行到executeOperation时,你已经拿到了借来的钱,你主要是写如何利用这些钱赚取更多钱的逻辑。例如你发现同一个交易对A/ETH在DEX1(价格低)和DEX2(价格高)的价格差较大,那么你的赚钱逻辑为:已借得100ETH;在价格低的DEX1中买入A;在价格高的DEX2中卖出A;卖得110ETH。

开始借款executeOperation是借款成功后要执行的逻辑。而开始借款的逻辑需要用户自己触发(通过发送交易调用合约),或者直接写在合约的构造函数里。例如:

functionflashloanpubliconlyOwner{bytesmemorydata="";uintamount=100ether;addressasset=address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);//借ETHILendingPoollendingPool=ILendingPool(addressesProvider.getLendingPool);lendingPool.flashLoan(address(this),asset,amount,data);}

flashLoan是真正的借款函数,例子中是借入100ETH。闪电贷由此方法触发(开始),也由此方法结束。要完全理解它,我们需要看看flashLoan的内部逻辑。我们摘取最重要的部分。

flashLoan内部逻辑flashLoan中首先进行各项数据验证,然后便借款给你,紧接着调用你的executeOperation的赚钱逻辑,最后验证你是否归还了本金加利息。主要逻辑如下所示:

//各种数据验证,池中是否还有足够的钱可以贷出?计算手续费等等//将借款转给你core.transferToUser(_reserve,userPayable,_amount);//执行你的合约的赚钱逻辑(步骤1中所写的函数)receiver.executeOperation(_reserve,_amount,amountFee,_params);//检查目前池中余额uint256availableLiquidityAfter=_reserve==EthAddressLib.ethAddress?address(core).balance:IERC20(_reserve).balanceOf(address(core));//通过池中余额变化来确认你是否已经归还了借款+利息require(availableLiquidityAfter==availableLiquidityBefore.add(amountFee),"Theactualbalanceoftheprotocolisinconsistent");

如果require验证失败,它将revert整个交易,让借款无效,从而保证借出方总是安全的。

结语以上解释了实现第一笔闪电贷最基本的方法和原理。编译源码,以及部署到线上,大家可以参考Aave相关官方文档,这里就不一一介绍了。

编写闪电贷合约总体并不复杂。使用闪电贷风险也比较小。如果赚钱逻辑失败,变成了亏钱逻辑,不能完成还款,那么也不用担心借来的巨款(如1万ETH)无力偿还。整个交易将会执行失败,就如同借款从来没有发生过一样。

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://czxurui.com/zx/72077.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年08月25日
下一篇 2023年08月25日

相关推荐

  • 比特币可以拿去做什么,给你一个闪电比特币

    一、给你一个闪电比特币***你会拿去做什么查了一下LBTC今天的价格:23元。那,拿着23块钱我能做什么?我会去做什么?其实可以做很多好玩的事,或者有价值的事。可以到麦当劳肯德基买个汉堡套餐,一杯冰可乐;可以到电影院买个打折的电影票,看看星球大战或者变形金刚;可以到

    2025-04-04 04:00:01
    28 0
  • 闪电网络速度是多少,什么是闪电网络

    一、什么是闪电网络闪电网络是一种基于比特币的二层扩展解决方案,旨在解决比特币区块链上的可扩展性和交易速度问题。接下来详细解释闪电网络的概念与特点:首先,闪电网络通过创建离链交易通道来实现快速交易。与传统的比特币交易在区块链上进行不同,闪电网络的交易在多个用

    2025-03-25 04:30:02
    18 0
  • 闪电比特币哪里交易,比特币和闪电比特币有什么区别

    一、闪电比特币是什么闪电比特币还没有被大家所熟知,那是因为他是一个比特币的分叉币,币圈的许多的用户都本能对这类的通证产生厌恶情绪。分叉币现在已经俨然成为了圈钱,跑路的代名词。但是有一点各位可能不知道,所有比特币的分叉币在国外的监管者眼里都可以叫做是货币。美

    2025-03-24 07:00:01
    33 0
  • 闪电网络是什么意思,什么是闪电网络

    一、闪电网络代币叫什么闪电网络代币莱特币,英文名为Lightning Labs。莱特币是比特币的直接竞争对手之一,莱特币的交易费是非常低的。一旦比特币成为闪电网络的主流货币,莱特币的交易费用优势将成为劣势。2017年11月Lightning Labs宣布,他们将通过跨链进行原子代币交换的首

    2025-03-24 02:30:02
    29 0
  • 比特币网络怎么运行,比特币闪电网络是如何运行的

    一、比特币机器是怎么运转的很多朋友对于比特币的算力比特币的矿机矿场以及挖矿的回报率都是比较陌生的,下面我们就详细科普一下比特币以及区块链记录之间的运行机制。首先解释一下什么叫区块链?我们可以把它看成是分布式的账本以及构成的一个相对应的信用网络,在这个网络中

    2025-03-20 04:30:01
    21 0
  • 闪电网络节点是什么,闪电网络代币叫什么

    一、比特币的闪电网络是什么闪电网络被誉为当前正在开发的最有效的加密货币扩展解决方案之一。该方案在2015年被提出,基于一个位于比特币区块链顶端的网络,并最终落实在该网络上。该网络由用户生成的渠道组成,这些渠道以安全且无信任的方式来回发送付款。例来说,假设我想为

    2025-03-16 01:30:01
    43 0

发表回复

8206
验证码

评论列表(0条)

    暂无评论

ok交易所
已有100万用户加入ok交易所

立即下载