header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
扫码下载APP

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

2022-09-08 22:00
阅读本文需 4 分钟
总结 AI 总结
看总结 收起
原文标题:《Solidity 极简入门: 26. 删除合约》
原文作者:0xAA


我最近在重新学 solidity,巩固一下细节,也写一个「Solidity 极简入门」,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。


所有代码和教程开源在 github:github.com/AmazingAng/WTFSolidity


selfdestruct


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


如何使用 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

举报 纠错/举报
本平台现已全面集成Farcaster协议, 如果您已有Farcaster账户, 可以登录 后发表评论
选择文库
新增文库
取消
完成
新增文库
仅自己可见
公开
保存
纠错/举报
提交