第142篇 合约安全-重入锁

本文介绍了重入攻击,一种针对智能合约的常见攻击方式,它曾导致以太坊分叉。通过“黑客抢bank”的故事,解释了重入攻击的工作原理,并提供了一个简单的bank合约和攻击合约的示例。预防重入攻击的方法包括采用检查-影响-交互模式和使用重入锁。建议在编写智能合约时,尤其要注意这些潜在的安全风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇介绍最常见的一种智能合约攻击-重入攻击,它曾导致以太坊分叉为 ETH 和 ETC(以太经典),并介绍如何避免它。

1.重入攻击

重入攻击是智能合约中最常见的一种攻击,攻击者通过合约漏洞(例如fallback函数)循环调用合约,将合约中资产转走或铸造大量代币。

著名的重入攻击事件:2016年,The DAO合约被重入攻击,黑客盗走了合约中的 3,600,000 枚 ETH,并导致以太坊分叉为 ETH 链和 ETC(以太经典)链。

距离 The DAO 被重入攻击已经6年了,但每年还是会有几次因重入漏洞而损失千万美元的项目,因此理解这个漏洞非常重要。

0xAA 抢bank的故事

为了让大家更好理解,这里讲一个"黑客0xAA抢bank"的故事。

以太坊bank的柜员都是机器人(Robot),由智能合约控制。当正常用户(User)来bank取钱时,它的服务流程:

  1. 查询用户的 ETH 余额,如果大于0,进行下一步。
  2. 将用户的 ETH 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wonderBlock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值