Solidity极简入门|第二十六讲:删除合约

selfdestruct命令用于删除智能合约并转移剩余ETH,它作为合约出错时的应急措施。使用示例包括定义合约、转移ETH、调用自毁函数,从而销毁合约并清空变量。此功能在TheDAO攻击事件中显示出其重要性。
摘要由CSDN通过智能技术生成

selfdestruct

selfdestruct(自毁)命令可以用来删除智能合约,并将该合约剩余 ETH 转到指定地址。selfdestruct 是为了应对合约出错的极端情况而设计的。它最早被命名为 suicide(自杀),但是这个词太敏感。为了保护抑郁的程序员,改名为 selfdestruct。

如何使用 selfdestruct

selfdestruct 使用起来非常简单:

c36e9f4bfefafca9a13f45e70e37122c.jpeg

其中_addr 是接收合约中剩余 ETH 的地址。

例子  

a3d6454ce4a0223178170df8c2e5d8e4.jpeg

在 DeleteContract 合约中,我们写了一个 public 状态变量 value,两个函数:getBalance() 用于获取合约 ETH 余额,deleteContract() 用于自毁合约,并把 ETH 转入给发起人。

部署好合约后,我们向 DeleteContract 合约转入 1 ETH。这时,getBalance() 会返回 1 ETH,value 变量是 10。

当我们调用 deleteContract() 函数,合约将自毁,所有变量都清空,此时 value 变为默认值 0,getBalance() 也返回空值。

总结

selfdestruct 是智能合约的紧急按钮,销毁合约并将剩余 ETH 转移到指定账户。当著名的 The DAO 攻击发生时,以太坊的创始人们一定后悔过没有在合约里加入 selfdestruct 来停止黑客的攻击吧。

e440f3cd0d0897f4bbe8e632fd39b2a7.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值