全球数字财富领导者

巨量资金支配能力——闪电贷

2022-11-08 15:37:52
金色财经
金色财经
关注
0
0
获赞
粉丝
喜欢 20 0收藏举报
— 分享 —
摘要:在区块链世界,闪电贷是一项伟大的金融创新。闪电贷一词常与攻击一同被提及。但究其本质,问题的根源却在于协议本身。 闪电贷只是让人拥有了对于大量资金的控制能力。

假如给你一个亿贷款,但是3秒钟你就必须还回去,你会拿他来做什么?

闪电贷

闪电贷是一种无抵押借贷工具,由于区块链交易的原子性和回滚特性得以诞生。用户需要在一个原子交易内完成借款和还款并且不需要任何抵押品。让用户拥有在接近0成本情况下使用巨量资金的能力。

在大众的认知下,大量的闪电贷被用于攻击各种项目,并被冠以闪电贷攻击的标签。事实上,闪电贷技术并不是用来进行项目攻击。恰恰相反,它是区块链世界一项伟大的金融创新。它让人们拥有了对于大量资金的控制能力,而真正有问题的是它本身各种协议自身的实现缺陷,被不法分子加以利用。

在实际的用途中,闪电贷还有着在借贷市场自我清算、在更换抵押物、债务迁移等用例。协议只关心你是否在你的transaction的最后是否如约归还了你的贷款,而不关心这笔贷款在你的transaction的用途是什么。因此,闪电贷只是一种能力。

在DODO使用闪电贷(0手续费)

DODO是一个由主动做市商(PMM)算法驱动的去中心化交易平台。在用户将流动性聚合到平台时,其提供了去中心化的闪电贷服务。具体而言,我们可以使用闪电贷调用DODO的资金,在使用后注意在操作的最后归还即可,否则这笔原子交易将会判定为失败,之前的所有操作被判定无效,不发生实际价值

如何在DODO借100个BNB并归还,示例代码如下

  1. 在remix编译如下代码:

    VjrJi2kiuGqd1NzuVjf4NCus2uw7J0VN3tVVpkyd.png

    wqAGZAbvrqqdH2l1tzZk00Fm5TOla5xUq40MyuAr.jpeg

    i64GLwcgiohCgpJc5F7Ib0Gvk58N7GCbJ2hM5GxK.jpeg

  2. 链接ganache-cli

Zj01kYCS651jKg8vDr6p3zkyzVO8ozb3Wt20bGbX.png

3.在fork链上部署合约代码并调用dodoFlashLoan方法

elSjXoWe0PX7CnjyMMNsLiIpR4d2gK8SvBeSOJ6n.png

4.通过报错报出本地址的WBNB的amount,证明回调了DVMFlashLoanCall/DPPFlashLoanCall/DSPFlashLoanCall方法且代币已转发到了本地址。

LhV0a4n6jLhzXe78E0ab5IqtijWNIkCOZtYxwS9Q.png

在pancake使用flashloan

如何在pancake-dex借100个BNB并归还,示例代码如下

  1. 在remix编译如下代码:

JdyQhst8AiZe2pzWYxAiQ7r869oJHrLlwy9lBBoL.jpeg

8jmeciauFH7AuQFaIDnxcggUA9eCote08LVIEE7s.jpeg

i55zGobRDaEDQ5h8Skv6irKbq274zTWiSWOVcpQn.jpeg

2.链接ganache-cli

Zj01kYCS651jKg8vDr6p3zkyzVO8ozb3Wt20bGbX.png

3.在fork的私链上部署闪电贷合约,并调用startSwap方法执行闪电贷

UhmHYljmRCdUgHY2QlqmnT65IOTw9KUjT8kXxG1Y.jpeg

4.通过报错报出本地址的WBNB的amount,证明回调了pancakeCall方法且代币已转发到了本地址。

NPLQRZFYN1NCe98c0rtWGu9OZuzIOW4qdwyYKJ8T.png

闪电贷如何保证资金归还

在区块链世界中,一个调用的顺序执行会成为一笔交易,这样的一笔交易具有原子性。最通俗而言若发生异常(EVM操作码REVERT)那么这笔调用会执行失败,前面所有的操作均处于未执行的状态;

M4imQ0vwOWYXgy5FxTKVICDpMHKn3eul6Oho5tYs.png

我们将其在DODO中观察,其在回调DVMFlashLoanCall/DPPFlashLoanCall/DSPFlashLoanCall完成后,返回到上一级函数flashloan并通过require检查是否自己的余额没有减少,否则主动抛出REVERT:

nnmKDFG1q9y63Jtm6P4VTjGWWMvOZQ16K38eU7Ba.png

同样的,对pancake而言,其swap回调pancakeCall后也检测了余额和储备的关系,同时swap也是交换的核心函数,这也是笔者认为该协议设计的神来之笔(设计取自Uniswap)

bTlTlqk1nLKe2Uc19wR3Ef2jeKjpNt4Km9uhEmrW.png

后记

本文中我们讲述了闪电贷的价值和具体实例,结合函数报错我们将借来的WBNB进行了显示,证明了WBNB已在该步骤发送到了执行合约。在借来贷款的后续步骤用户可具体利用该WBNB用于相应的套利/自我清算/更换抵押物/债务迁移并在最后进行归还。否则在回调完成回到上级函数时在检查闪贷池子余额时将会主动回滚,由于函数调用的原子性,若回滚后这些所有借取操作将不复存在。

来源:金色财经

1. 欢迎转载,转载时请标明来源为FX168财经。商业性转载需事先获得授权,请发邮件至:media@fx168group.com。
2. 所有内容仅供参考,不代表FX168财经立场。我们提供的交易数据及资讯等不构成投资建议和依据,据此操作风险自负。
go