原文标题:《Solidity 极简入门: 26. 删除合约》
原文作者:0xAA
我最近在重新学 solidity,巩固一下细节,也写一个「Solidity 极简入门」,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。
所有代码和教程开源在 github:github.com/AmazingAng/WTFSolidity
selfdestruct(自毁)命令可以用来删除智能合约,并将该合约剩余 ETH 转到指定地址。selfdestruct 是为了应对合约出错的极端情况而设计的。它最早被命名为 suicide(自杀),但是这个词太敏感。为了保护抑郁的程序员,改名为 selfdestruct。
selfdestruct 使用起来非常简单:
其中_addr 是接收合约中剩余 ETH 的地址。
在 DeleteContract 合约中,我们写了一个 public 状态变量 value,两个函数:getBalance() 用于获取合约 ETH 余额,deleteContract() 用于自毁合约,并把 ETH 转入给发起人。
部署好合约后,我们向 DeleteContract 合约转入 1 ETH。这时,getBalance() 会返回 1 ETH,value 变量是 10。
当我们调用 deleteContract() 函数,合约将自毁,所有变量都清空,此时 value 变为默认值 0,getBalance() 也返回空值。
selfdestruct 是智能合约的紧急按钮,销毁合约并将剩余 ETH 转移到指定账户。当著名的 The DAO 攻击发生时,以太坊的创始人们一定后悔过没有在合约里加入 selfdestruct 来停止黑客的攻击吧。
原文链接
欢迎加入律动 BlockBeats 官方社群:
Telegram 订阅群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方账号:https://twitter.com/BlockBeatsAsia