23

引介 | 闪电贷:一笔以太坊交易能做什么?

 4 years ago
source link: https://ethfans.org/posts/flash-loans-as-an-example-what-can-a-transaction-reach
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

标题:Flashloans,魔法互联网货币的新发明

链圈一直声称要变革金融业,最近终于开始有点迹象了,因为年轻的银行家跟技术人员开始结盟了。

最新的一种玩法叫做 “闪电贷(flash loan)”,就是说,你可以用代码来指定一系列的操作,只要你的操作能保证在一笔交易内完成还款,你就可以无条件地贷款。

区块链上的一笔 “交易”(transaction)里可以做很多事情;你不仅可以转一次账,你甚至可以在一笔交易中完成 50 笔资金转移。因为智能合约就跟计算机程序一样,你发交易,就等同于 “调用某个智能合约里的某个函数”;一笔交易中可以调用很多个函数,自然也就能完成很多操作。

“闪电贷” 所要求的是,所有的操作都必须在一笔交易内完成(如果不能在一笔交易内还款就不能贷出资金)。所以你必须把所有步骤都编程到一笔发往智能合约的交易里,把 “借款、转移(执行)、还款” 都包括进去。

如果交易结束时你不能还款,则交易就会失败,就像所有事情都没有发生过一样。

假设,一开始闪电贷合约给了你 1 万 ETH,如果交易结束时没有还上 1 万 ETH,那就相当于你从来没借出过 1 万 ETH,因为当节点在执行交易时,只要交易失败,则这笔交易中的所有操作都会全部回滚,就像没事发生过。

很反直觉对吧?要是没有执行所有操作并成功返回足够的资金,那些 ETH 就跟没有动过一样。

好吧,我们也觉得这就是魔法。这种魔法是一个图灵完备的网络(图灵完备的编程语言 + 可自动执行的 “账户” 即智能合约)上的最新发明。

所有运行以太坊软件的计算机节点都运行着这个闪电贷智能合约,当这个程序(智能合约)被上链的的交易激活之后,就相当于合约在执行这笔交易指定的操作,如果最后能完成还款,则合约传出 “执行成功”,整个网络的状态完成更改;而如果不能完成还款,合约传出 “失败”,交易影响到的其它合约状态更改失败,被改变的只有闪电贷合约的状态。

你要是听得云里雾里,那也正常,因为这是一个全新的领域。你得懂编程才能使用这种合约,因为你需要连贯地指定每一个步骤。不过,如果你愿意花几周学习 Solidity 教程 ,你也可以拿到免费的资金用于套利,用于捕捉一切可以用连贯的一系列步骤来完成的获利机会。

举个例子,有个家伙 一把赚了 36 万美元 ,就一笔交易!这一事件也让闪电贷抓住了所有人的眼球。

但这并不是去中心化领域的唯一发明。比如,Fulcrum 具有超强的流动性;dYdX 智能合约支持免费的闪电借贷(flash borrowing),跟 flash loan 是一样的。一个新的 DeFi 项目,Aave,也在用 flash loan 的名义提供这样的功能。

还有一种 观点 认为,可以把 CDP(MakerDAO 单质押品稳定币系统中用户的稳定币债仓)这样有点近似于永久贷款的债,变成一种像期票的 token 。(译者注:在 MakerDAO 系统升级(2019 年 11 月)以前,只要你提供质押品,你就可以贷出 DAI,利息不会实时偿还,只在你还款时偿还,所以只要你的质押品足够多,你可以借钱借到永久,因此近似于永续债务。)

……

原文: Trustnodes.com

标题:闪电男孩

所谓套利,就是利用不同市场上的价格差来赚钱。套利的机会在所有金融市场上都存在,数字资产也不例外。套利活动可以帮助减小一种资产在不同市场上的价格差,因为套利活动也可以增加流动性

……

闪电贷的设计本意是让开发者可以任意借贷而无需提供质押物。整个借贷、偿还的过程都会在一笔交易内完成!开发者可以从 Aave 协议的储蓄资金池中贷出资金,条件是交易结束后,从资金池中借出的流动性会原样返回到池中去。如果不能返回那么多流动性,交易就会失败、回滚,保证储蓄资金池中的资金不受损失。

闪电贷由很多有趣的用途,包括:

  • 在去中心化交易所之间套利
  • 在多种借贷平台(Compound、dYdX 等)上平仓
  • 再平衡,例如:从 Aave 协议中借出 DAI、关闭你的 MakerDAO 质押债仓并取回你的质押品,把这些质押品存入 Compound,借出 DAI,然后把 DAI 及一些手续费归还给 Aave

如此一来,就有更多人可以参与套利和清算,因为 没有初始资本要求 。套利一般来说没有什么资本要求(100 美元到 1 万美元都有),但清算则要求大量资本来平掉债务人的仓位。Compoud 和单质押品 DAI(即 SAI)中的平仓常常要投入价值超过 100 万美元的 ETH 或者 DAI。

……

为展示闪电贷无可限量的潜力,我们做了一次套利,但实际上它可以用在很多别的地方。你可以查查我们发出的这笔交易:

< https://etherscan.io/tx/0x4555a69b40fa465b60406c4d23e2eb98d8aee51def21faa28bb7d2b4a73ab1a9 >

E3m6beE.png!web

6NJnm27.png!web

(译者注:从上面两张图中可以看出,交易所包含的操作是连贯性的,从 A 地址转移资金到 B 地址,又从 B 地址转移到 C 地址,最终回到合约地址)

……

原文: Flash Boy

2 月 15 日,有一位黑客动用借贷得来的大笔资金,先后使用 Compound 协议置换资产、干扰 Uniswap 市场上的资产价格、影响 Kyber 的报价,并最终通过 bZx 提供的杠杆交易功能获利,这一切,都是在一个区块内完成的。更准确地说,这是在一笔交易内完成的,所用的正是上文提到的、由 dYdX 协议提供的闪电贷款功能。

具体经过,在此不表,可见由 PeckShield 和 Hydro 社区提供的详尽分析:

从这些详尽的分析中我们可以知道,这位黑客获利的关键一环在于,他用借来的资金操纵了 Uniswap 及 Kyber 上的资产价格,而 bZx 协议正是使用 Kyber 作为其价格信息提供机制(也称 “预言机”),并最终在杠杆功能中给了黑客非常多的 token,黑客拿到这些资产后卖出,就能偿还一开始闪电贷的贷款。当然,黑客没有平掉自己在 bZx 协议的杠杆,也就是没有还钱。

事情出来以后,bZx 团队动用管理密钥,把黑客的收益冻结了。

这件事在整个圈子里引发了很多讨论,包括但不限于:bZx 的处理方式是否合理?DeFi 协议应不应该留有管理员密钥?去中心化的预言机到底安不安全?闪电贷的出现是好事还是坏事。

我们在此不想复盘这些讨论,只想讨论一个简单的问题,可能也是大家最感兴趣的问题:闪电贷到底意味着什么?

计算机科学里面有个术语叫做 “原子化”,指的是处理事务时,能否保证相关的操作总是同时成功、同时失败,而绝不会陷入某些操作成功,某些操作失败的境地;如果能,那就是保证了 “原子性”。

如果换一个具体的例子,你会发现这个概念绝不陌生:你想去某个地方旅游,你总是希望交通和住宿能够同时确定,比如,如果你抢得到高铁票,你想挑一个离高铁站近一些的酒店 A;但如果你不能抢到高铁票,你会想要挑另一家酒店 B,甚至你会考虑换一个旅游地点。

这时候你会发现,如果每个事项都得分别确定,你就只能安装很多个 APP 并且在它们之间不断切换,非常麻烦。比如,如果不预订 A,又怕订不上酒店;预订了 A,如果票抢不到,你又得退订。

但如果这两件事情的处理具有原子性,你可以直接做一个操作同时抢票和预定酒店,到了时间如果抢票失败,也会自动退订酒店。这可以带来极大的便利。

同理,当你需要换乘才能到达目的地时,你也会希望路程上的多个车票要么一次买齐,要么全部不买,免得还要手动退票。

说起来很简单,也符合大家的愿望,但这种东西在我们的生活中仍然是极为罕见的。我们还是得下载很多个 App,关注很多个公众号和小程序。

但以太坊不是这样。把以太坊当成一台计算机,把智能合约都当成程序,用户发起的交易就像你在操作电脑一样,能够包含在一笔交易中的操作天然就具有原子性。程度的多寡是一回事,但 —— 你真的可以一次性把这些程序用个遍,而且一旦某个操作没有得到自己预期的结果就可以撤销自己所有的操作,像没事发生过一样。

美好、强大到有点不真实。

提起 DeFi,很多人会提到可组合性(composability)。一开始大家想的是,(举例而言)有了 MakerDAO,我们就有了稳定币 DAI;有了 DAI 就可以做借贷市场啦,还可以做保证金交易(提供杠杆)。大家的想象有两种,一种是:这些产品是可以自由结合的,而且互相都没有准入措施,这样功能当然会更强大,当然能创造价值;另一种是:这意味着,DeFi 具有创造性的潜力,从长期来看它必定会越来越繁荣,因为互相结合总能孕育出更为强大的功能。

但这两种想法都几乎没有指明不同协议相结合时的具体样貌,也没有指明这种结合发生时候的时间概念。换句话来说,更多是从功能互补的角度来想象及阐述的,不是从计算机的角度来想象的。

但是,原子性(闪电贷)的概念意味着:任意多的合约可以在一笔交易中要么一起工作,要么一起无动于衷。要么真的在一瞬间组合,要么一起当没事发生过。

我忍不住想说,闪电贷就是 “可组合性” 最极端的形态,极端到一切只在一瞬发生。

人们终于发现,一个协议最真实的样貌,是要从 “交易这一瞬” 的维度去思考的,就像 dForce 项目创世人民道老师举的例子,用闪电借贷可以瞬间化身为 Uniswap 的流动性提供者、做完自己想要的交易再闪电撤资,这样可以把手续费从 0.3% 降低到 0.05%;协议的安全性,也要从 “一瞬” 的粒度去设计,否则就会出现 bZx 这种情况,直接被闪电击穿。

现在人们知道了,价值的无缝流动,既是美酒也是毒药,DeFi 协议,要么在美酒下强身健体,要么肝肠寸断。

还有两个有趣的事情。

一,很多朋友都感受到了闪电贷的破坏力,认为大额的闪电贷就像一把丢在街上的上膛武器。但也有一些朋友认为,这是好事,因为进步的最好方法就是直接淘汰掉不行的东西;因为,早点发现问题可以避免累积出系统性风险。

没错,现在已经有了一座人人皆可踊跃尝试的大炮,瞄准了 DeFi 协议构成的城池,不能组合成铁壁防御的协议都会被大炮击穿。搭的不好,奇形怪状的货币积木,你们有难了。但是,可以相信,剩下的都是铜墙铁壁。

二,闪电贷概念最早应该是 Marble 项目 提出的,那是在 2018 年中。但因为这个项目不赚钱,创始团队已经被其它项目收编了(感谢 Tina@Yello Hat DAO 的线索)。一年之后,这个概念才开始发挥威力。

所以还是要有点耐心啊。

译文及撰文: 阿剑


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK