市值: $2.194T -0.11%
成交额(24h): $64.9084B 1.19%
恐惧与贪婪指数:

38 - 恐惧

  • 市值: $2.194T -0.11%
  • 成交额(24h): $64.9084B 1.19%
  • 恐惧与贪婪指数:
  • 市值: $2.194T -0.11%
加密货币
话题
百科
资讯
加密话题
视频
热门加密百科

选择语种

选择语种

选择货币

加密货币
话题
百科
资讯
加密话题
视频

什么是智能合约中的重入攻击?

Reentrancy attacks exploit Ethereum’s external call mechanism, allowing malicious contracts to recursively drain funds before state updates—famously enabling The DAO hack.

2025/12/24 02:20

了解重入攻击

1. 当恶意合约在初始执行完成之前重复回调另一个合约的易受攻击的函数时,就会发生重入攻击。

2. 此漏洞利用以太坊智能合约中的外部调用机制,在状态更改最终确定之前将控制权转移到外部地址。

3. 攻击者部署一个包含回退或接收函数的合约,该函数会触发目标提款或转账逻辑的递归调用。

4. 由于以太坊以单线程、同步的方式执行调用,并且默认情况下不强制执行原子状态更新,因此在回调窗口期间余额或标志可能保持不变。

5. 因此,在没有适当检查的情况下,资金可能会从同一余额中多次被耗尽,从而违反了系统预期的经济不变性。

著名的历史例子:DAO 黑客事件

1. 2016 年 6 月,名为 The DAO 的去中心化自治组织被盗走约360 万枚 ETH ,当时价值超过 5000 万美元。

2. 该漏洞存在于分割函数中,该函数允许用户在提案通过后撤回其份额,但在转移资金更新了贡献者的余额。

3. 攻击者部署了一个带有后备函数的合约,该函数在余额更新发生之前递归调用 split 函数。

4. 每次递归调用都会读取原始余额值,从而可以从相同的分配金额中重复提取。

5. 该事件引发了以太坊区块链的硬分叉,导致以太坊和以太坊经典成为两条独立的链。

实现可重入的技术条件

1. 对不受信任地址的外部调用必须先于关键状态修改,例如余额更新或访问标志切换。

2. 合约必须依赖反映所有权或权利的可变存储变量,而不强制执行重入防护。

3. 缺乏互斥模式(例如使用锁定的布尔值或重入修饰符)会使嵌套调用上下文中的入口点不受保护。

4. 由于缺乏gas补贴限制和自动恢复行为,使用call()等低级调用而不是transfer()send()等更安全的替代方法会增加风险。

5. 从过时或未经审核的库继承的合约可能会无意中暴露具有继承的可重入表面的函数。

今天部署的缓解策略

1. 检查-效果-交互模式要求验证条件、更新内部状态,然后才执行外部调用。

2. 重入防护(例如 OpenZeppelin 的ReentrancyGuard )使用锁定的布尔值来防止活动执行期间函数重入。

3. 使用transfer()send()代替原始call()会强制执行2300-gas 限制,使得后备函数无法执行复杂的逻辑,包括进一步的可重入调用。

4. Slither 和 MythX 等静态分析工具可检测开发和 CI 管道期间潜在的重入向量。

5. Certora 和 KEVM 等正式验证框架在任意调用序列(包括嵌套外部调用)下验证契约不变量。

常见问题解答

Q1.重入攻击会发生在以太坊以外的区块链上吗? A1。是的。如果合约复制相同的有缺陷的交互模式,任何与 EVM 兼容的链(包括 BNB Chain、Polygon 和 Arbitrum)都同样容易受到影响。具有类似外部调用语义的非 EVM 链,例如 Solana 在某些条件下的跨程序调用,也面临类似的风险。

Q2。使用 require() 语句足以防止重入吗? A2。不需要。Require 语句验证先决条件,但不会阻止重新输入。它们在状态改变之前运行,并且一旦发生外部调用就无法限制后续回调。

Q3。基于代理的可升级合约是否会引入额外的可重入表面? A3。是的。如果实现合约缺乏重入保护,并且代理在不拦截或验证调用深度的情况下转发调用,则可升级模式可以继承或放大现有漏洞。

Q4。即使没有恶意合约,闪电贷也能触发重入吗? A4。是的。闪电贷攻击通常将价格预言机操纵与重入结合起来,以耗尽流动性池或贷款协议,如针对 dYdX、Harvest Finance 和 BurgerSwap 的攻击——所有这些都依赖于关键路径内不受保护的外部调用。

免责声明:info@kdj.com

所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!

如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。

相关百科

什么是区块链安全?用户如何避免加密货币诈骗?

什么是区块链安全?用户如何避免加密货币诈骗?

2026-07-26 04:40:10

了解区块链安全基础知识1. 区块链安全依赖于加密哈希来确保链中每个区块的数据完整性。 2. 每个块都包含一个唯一的哈希值,该哈希值源自其内容和前一个块的哈希值,形成一个不可变的序列。 3.分布式账本架构意味着不存在单点故障——每个节点都维护账本的完整副本。 4. 工作量证明和权益证明等共识机制在添加...

什么是加密货币空投?用户如何获得奖励资格?

什么是加密货币空投?用户如何获得奖励资格?

2026-07-29 06:20:01

定义和核心目的1. 加密货币空投是一种分配机制,区块链项目将免费代币直接分配到符合条件的钱包地址。 2. 这些代币不是出售,而是作为激励授予,通常与用户行为、持有量或参与里程碑挂钩。 3. 主要目标是培育流动性、扩大网络覆盖范围并刺激去中心化生态系统的有机采用。 4. 与代币销售不同,空投绕过了传统...

什么是代币销毁?为什么项目要销毁代币?

什么是代币销毁?为什么项目要销毁代币?

2026-07-22 10:39:51

定义和技术执行1. 代币销毁是指通过将数字代币发送到不可访问的地址(通常称为销毁地址或吞噬者地址)来不可逆转地从流通中删除数字代币。 2. 这些地址没有私钥,使得任何转移的代币永久无法使用,并从功能性供应指标中有效删除。 3. 在基于以太坊的网络上,经常使用零地址(0x000…dead);在 BSC...

什么是循环供应?为什么代币供应很重要?

什么是循环供应?为什么代币供应很重要?

2026-07-21 13:40:08

什么是循环供应? 1. 流通量是指当前可在公开市场上交易和使用的代币数量。 2. 这些代币已分发给用户、交易所或公共钱包,并且没有被锁定、保留或保存在不可访问的合约中。 3. 如果分配给团队成员、顾问或基金会的代币仍处于归属计划或智能合约锁定状态,则不包括这些代币。 4. 循环供应是一个动态指标——...

什么是加密货币市值?它是如何计算的?

什么是加密货币市值?它是如何计算的?

2026-07-24 21:40:18

市场波动模式1. Bitcoin的价格波动通常与美国通胀报告和美联储利率决策等宏观经济指标相关。 2. 山寨币的走势经常跟随Bitcoin的走势,但在低流动性时期表现出更大的波动性。 3. 交易所交易基金(ETF)的流入和流出直接影响现货市场深度,改变短期价格发现机制。 4. 鲸鱼钱包活动(以超过 ...

什么是加密货币的流动性?为什么会影响交易?

什么是加密货币的流动性?为什么会影响交易?

2026-07-30 23:19:48

加密货币流动性的定义1. 加密货币的流动性是指在不引起重大价格波动的情况下买卖数字资产的难易程度。 2.反映了市价单的深度——各个交易所在不同价格水平上存在多少买入和卖出限价单。 3. 高流动性意味着大量订单、较小的买卖价差以及执行过程中最小的滑点。 4. 低流动性表现为订单簿薄、价差大、即使交易规...

什么是区块链安全?用户如何避免加密货币诈骗?

什么是区块链安全?用户如何避免加密货币诈骗?

2026-07-26 04:40:10

了解区块链安全基础知识1. 区块链安全依赖于加密哈希来确保链中每个区块的数据完整性。 2. 每个块都包含一个唯一的哈希值,该哈希值源自其内容和前一个块的哈希值,形成一个不可变的序列。 3.分布式账本架构意味着不存在单点故障——每个节点都维护账本的完整副本。 4. 工作量证明和权益证明等共识机制在添加...

什么是加密货币空投?用户如何获得奖励资格?

什么是加密货币空投?用户如何获得奖励资格?

2026-07-29 06:20:01

定义和核心目的1. 加密货币空投是一种分配机制,区块链项目将免费代币直接分配到符合条件的钱包地址。 2. 这些代币不是出售,而是作为激励授予,通常与用户行为、持有量或参与里程碑挂钩。 3. 主要目标是培育流动性、扩大网络覆盖范围并刺激去中心化生态系统的有机采用。 4. 与代币销售不同,空投绕过了传统...

什么是代币销毁?为什么项目要销毁代币?

什么是代币销毁?为什么项目要销毁代币?

2026-07-22 10:39:51

定义和技术执行1. 代币销毁是指通过将数字代币发送到不可访问的地址(通常称为销毁地址或吞噬者地址)来不可逆转地从流通中删除数字代币。 2. 这些地址没有私钥,使得任何转移的代币永久无法使用,并从功能性供应指标中有效删除。 3. 在基于以太坊的网络上,经常使用零地址(0x000…dead);在 BSC...

什么是循环供应?为什么代币供应很重要?

什么是循环供应?为什么代币供应很重要?

2026-07-21 13:40:08

什么是循环供应? 1. 流通量是指当前可在公开市场上交易和使用的代币数量。 2. 这些代币已分发给用户、交易所或公共钱包,并且没有被锁定、保留或保存在不可访问的合约中。 3. 如果分配给团队成员、顾问或基金会的代币仍处于归属计划或智能合约锁定状态,则不包括这些代币。 4. 循环供应是一个动态指标——...

什么是加密货币市值?它是如何计算的?

什么是加密货币市值?它是如何计算的?

2026-07-24 21:40:18

市场波动模式1. Bitcoin的价格波动通常与美国通胀报告和美联储利率决策等宏观经济指标相关。 2. 山寨币的走势经常跟随Bitcoin的走势,但在低流动性时期表现出更大的波动性。 3. 交易所交易基金(ETF)的流入和流出直接影响现货市场深度,改变短期价格发现机制。 4. 鲸鱼钱包活动(以超过 ...

什么是加密货币的流动性?为什么会影响交易?

什么是加密货币的流动性?为什么会影响交易?

2026-07-30 23:19:48

加密货币流动性的定义1. 加密货币的流动性是指在不引起重大价格波动的情况下买卖数字资产的难易程度。 2.反映了市价单的深度——各个交易所在不同价格水平上存在多少买入和卖出限价单。 3. 高流动性意味着大量订单、较小的买卖价差以及执行过程中最小的滑点。 4. 低流动性表现为订单簿薄、价差大、即使交易规...

查看所有文章

User not found or password invalid

Your input is correct