为什么Cardano没有闪电贷攻击

Why Are There No Flash Loan Attacks On Cardano? | Cardano Explorer (cexplorer.io)

以太坊平台上的许多黑客都使用了闪电贷。 攻击者可以在没有抵押品的情况下借入巨额资金,用它来赚取利润,然后在同一笔交易中偿还贷款。 在这篇文章中,我们将解释为什么我们在卡尔达诺的 DeFi 中没有看到这种攻击。 您将了解 UTxO 模型的优点之一。

闪电贷的原理
闪贷是在同一笔交易中借入并偿还的贷款。 这是一种无需拿自己的钱去冒险就能获得可观收益的方法。

我们大多数人都熟悉正常贷款。 贷方将钱借给借款人,最终全额偿还。 贷款通常必须在数月或数年内稳定偿还。 贷方通常要求借款人提供抵押品,以确保即使借款人无法偿还贷款,贷方仍然能够收回资金。 这是有担保的贷款。

闪电贷款是无抵押的,因为不需要抵押品。 缺乏抵押品并不意味着贷方无法收回资金。 借款人不需要提供抵押品,而是需要立即还款。 这可以通过智能合约来保证。

闪电贷款是即时的。 通过利用以太坊上交易的原子性,闪电贷使用户能够在单笔交易中执行多个操作,只要交易时间不超过区块时间。

这种原子性概念对于闪贷的运作至关重要。 闪电贷的智能合约通常涉及借入资金、执行一些操作(如套利或清算),然后偿还贷款,所有这些都在一次交易中完成。 如果在交易结束时贷款仍未偿还,则整个交易将被逆转,就好像贷款从未发生过一样。 这确保了贷款人不会损失资金,即使贷款没有抵押。

换句话说,原子性确保了事务的全有或全无的性质。

最好用例子来解释。 假设我们涉及三个参与方:借贷协议 (A)、借款人 (B) 和目标协议 C。这三个操作发生在单个交易中:借入、操作和偿还。

借款:借款人 (B) 通过从借贷协议 (A) 借入资金来发起交易。 这会借记 A 的余额并贷记 B 的余额。
行动:借款人 (B) 然后使用这些借来的资金与另一个协议 C 进行交互。这可以用于套利、清算或任何其他可以产生利润的操作。 这会借记 B 的余额并贷记 C 的余额。
偿还:最后,借款人(B)向借贷协议(A)偿还贷款,加上任何费用或利息。 这会借记 B 的余额并贷记 A 的余额。
当交易结束时,资金似乎并未被借入。

以太坊上的智能合约可以是复杂的自主程序,可以执行广泛的操作并与其他合约交互。 这允许在单个交易中多个智能合约之间进行复杂的交互,这是执行闪电贷款的关键要求。 另请注意,在闪贷交易中,涉及多个余额。 每个余额可以在一次交易中多次借记和贷记。

其中许多概念与 Plutus 脚本和 UTxO 模型的简单性有着根本的不同。 这就是卡尔达诺尚未遭受闪电贷攻击的原因。

为什么卡尔达诺没有闪电贷攻击?
卡尔达诺上的验证器脚本和以太坊上的智能合约的目的和功能不同,这会影响闪电贷的实施。

Cardano 上的验证器脚本用于确定是否可以使用 UTxO。 他们通过检查是否满足某些条件来做到这一点。 如果不满足条件,则交易不会被验证,并且 UTXO 保持未花费状态。

Cardano 更高安全性的其他原因之一是 UTxO 模型。

每个 UTxO 都是一个独立于其周围环境的单独对象。 与以太坊使用的基于账户的模型不同,UTxO 模型没有余额的概念。

一个或多个 UTxO 可以作为交易的输入,在该交易中它们只能被完全使用一次。 新的输出 UTxO 将从输入 UTxO 中创建。

卡尔达诺交易可以被视为一个简单的函数,它消耗输入 UTxO 并产生输出 UTxO。 进入交易的UTxO是不可变的,并且可以确保独占访问。 在交易中,确保所有输入 UTxO 的价值与所有输出 UTxO 的价值相同(这也是智能合约实现闪贷的条件)。

在以太坊中,交易是有状态的,这意味着它们可以改变系统的状态。 这是单笔交易中多个智能合约之间复杂交互的必要先决条件,也是执行的关键要求。

UTxO 模型更加无状态。 在交易验证期间,脚本只能访问输入 UTxO、交易上下文、Datum 和 Redeemer。 例如,该脚本不具备与系统中的其他 UTxO 交互的能力。

Cardano 和以太坊之间的主要区别在于,在 Plutus 脚本验证期间不可能将 UTxO 多次移动到不同的地址。 此外,与以太坊不同,卡尔达诺不支持在单个交易中链接智能合约。 它们可以通过一系列交易进行链接。

卡尔达诺同时处理交易中的操作。 单个卡尔达诺交易代表同时发生的活动,而不是连续发生的活动。 这意味着,由于这些限制,以太坊闪电贷的传统概念(即在单笔交易中借入和偿还资金)并不能直接转化为卡尔达诺。

闪电贷无法在卡尔达诺上创建,因为借入资金、使用资金和偿还资金活动需要使用多个交易。 卡尔达诺故意不允许用户创建闪电贷。

是否有可能以某种方式在卡尔达诺上创建闪电贷款?

验证器脚本的逻辑必须如下:允许在将 UTxO 花回同一脚本地址的条件下使用该 UTxO。 然而,这是没有意义的。 UTxO 不能在交易中临时借用。 交易对手将无法使用 UTxO。

结论
在本文中,我们负面地谈论闪电贷,因为它们经常被用于攻击。 可以公平地说,对于具有必要技术技能和知识的交易者来说,闪电贷是一个强大的工具。 以太坊也是如此。 对于某些用例,开发人员可以在一笔交易中链接智能合约是有利的。

SC 平台只是工具,它们可以用来构建有用的金融服务,也可以被黑客利用。 整个行业的目标是创建这样一个平台,在此平台上可以创建可靠且安全的服务。 卡尔达诺在设计上是安全的,但与以太坊相比,有些事情实施起来更加费力和复杂。 始终要找到适当的平衡。