免责声明:金色财经所有资讯仅代表作者个人观点,不构成任何投资理财建议。 举报

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

    假如给你一个亿贷款,但是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用于相应的套利/自我清算/更换抵押物/债务迁移并在最后进行归还。否则在回调完成回到上级函数时在检查闪贷池子余额时将会主动回滚,由于函数调用的原子性,若回滚后这些所有借取操作将不复存在。

    jinse.com
    好文章,需要你的鼓励
    jinse.com
    好文章,需要你的鼓励
    参与评论
    0/140
    提交评论
    文章作者: / 责任编辑: 我要纠错

    声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。

    提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

    金色财经 > 知道创宇区块链安全实验室 > 巨量资金支配能力——闪电贷
    • 寻求报道
    • 金色财经中国版App下载
      金色财经APP
      iOS & Android
    • 加入社群
      Telegram
    • 意见反馈
    • 返回顶部
    • 返回底部