20221229-国盛证券-通信区块链行业专题研究_Web3底层语言(二)_Move如何避免闪电贷重入攻击__9页_835kb
报告摘要
区块链:Move如何避免闪电贷重入攻击?
核心内容
本报告聚焦于区块链底层语言Move在实现闪电贷时如何避免以太坊Solidity中常见的重入攻击问题。通过对以太坊和Move两种语言在闪电贷实现机制上的对比,分析其在安全性上的差异,并指出Move在设计上的优势。
主要观点
- 闪电贷的特性:闪电贷是一种无抵押的快速借贷方式,允许用户在同一笔交易中完成借贷、套利、偿还等操作,实现无本金套利。
- 以太坊的安全隐患:以太坊使用Solidity语言,支持动态调用和可重入,这使得闪电贷流程中存在控制权转移和状态同步信息差,从而导致重入攻击的风险。
- Move的安全优势:Move语言禁止动态调用和可重入,其“烫手山芋”模式通过资源的不可复制性和一次性销毁机制,确保闪电贷流程的原子性和安全性。
- 行业风险提示:区块链商业模式和监管政策仍处于发展初期,存在落地不及预期和政策不确定性等风险。
关键信息
以太坊闪电贷机制
- 动态调用与可重入性:以太坊合约允许函数在调用过程中被多次调用,导致控制权转移,为重入攻击提供了可能。
- 套利流程示例:通过FURUCOMBO平台,用户可以借入DAI,兑换成sUSD,再兑换回DAI并偿还贷款,实现套利。
- 重入攻击案例:如TheDAO攻击事件,黑客利用合约漏洞反复调用函数,实现资产盗取。
- 漏洞原因:以太坊账户资产以数值余额形式存在,允许重复调用和修改,存在双花风险。
Move闪电贷机制
- 烫手山芋模式:Move通过“烫手山芋”模式实现闪电贷,该模式不允许动态调用和可重入,所有操作必须在单个交易中完成。
- 资源不可复制:Move中的资产以资源类型存在,不可复制、丢弃或重用,确保了资产转移的真实性和不可篡改性。
- 收据销毁机制:套利者在使用贷款资金后,必须将资金和收据(receipt)一并归还给闪电贷合约,收据被销毁后交易才算完成。
- 原子性保障:流程结束的前提是正确还款和收据销毁,确保整个交易的原子性,避免资产被恶意修改或重复使用。
闪电贷实现对比
| 特性 | 以太坊(Solidity) | Move |
|---|---|---|
| 动态调用 | 允许 | 禁止 |
| 可重入 | 支持 | 不支持 |
| 资产形式 | 数值余额 | 资源类型 |
| 收据处理 | 可复制、可重用 | 必须销毁,仅使用一次 |
| 安全性 | 高风险(易受重入攻击) | 高安全性(避免重入攻击) |
| 流程控制 | 控制权可转移 | 控制权不可转移,流程必须一次性完成 |
风险提示
- 区块链商业模式落地不及预期:由于技术尚处于初期,存在商业模式难以落地的风险。
- 监管政策的不确定性:各国对区块链项目的监管政策尚不成熟,存在政策变化带来的不确定性风险。
总结
Move语言通过其独特的“烫手山芋”模式,从根本上避免了以太坊中因可重入性带来的闪电贷攻击风险。该模式利用资源不可复制和收据销毁机制,确保闪电贷流程的原子性和安全性。相比之下,以太坊的Solidity语言虽然提供了更高的合约可组合性,但也带来了重入攻击的隐患。随着Web3生态的发展,底层语言的安全性和合规性将成为关注的核心,Move的这一特性可能成为其在DeFi领域的竞争优势之一。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载