当前位置: 首页 > news >正文

Solidity——什么是selfdestruct

selfdestruct 是 Solidity 中一个特殊的指令,用于永久销毁合约将合约余额发送给指定地址

它是以太坊虚拟机(EVM)提供的一条原始操作指令,常用于合约生命周期结束时释放资源或主动清退合约。


✅ 基本语法:

selfdestruct(payable(address));
  • 会销毁当前合约

  • 同时把合约里所有 ETH 余额 发给参数中的地址

  • 一旦执行,合约代码和存储(storage)都会从链上清除(不可逆)


🧪 示例代码:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract Killable {address payable public owner;constructor() {owner = payable(msg.sender);}// 销毁合约,把余额发给 ownerfunction destroy() public {require(msg.sender == owner, "Not owner");selfdestruct(owner);}// 接收 ETHreceive() external payable {}
}

部署后:

  1. 发送 ETH 到合约

  2. 调用 destroy() → 合约被销毁,余额转给 owner,合约地址彻底失效


⚠️ 注意事项:

事项说明
合约销毁是 永久性的所有代码和状态变量都从链上删除
调用者必须是权限控制者(一般是 owner)否则可能被恶意销毁
销毁合约 不会销毁已部署代码的历史记录历史区块中仍可看到合约部署、交易
被销毁地址 不能再调用函数调用会 revert(返回空代码)
合约地址可以被重新部署(同 CREATE2)但不是通常场景

🧨 使用场景:

  1. 合约升级(旧合约 selfdestruct + 部署新合约)

  2. 合约故障退出

  3. 退款与清算逻辑(有风险)

  4. 节省链上空间(但现在用途变少)


❗️在新版本中的提示:

自 Solidity 0.8.18 起,selfdestruct 已被标为不推荐使用(deprecated),未来可能会被移除。

原因是:销毁合约带来的副作用过大,尤其在 Layer 2 和 rollup 场景中难以正确处理,因此官方建议使用“停用开关”逻辑(pause/kill flag)而不是销毁


✅ 总结一句话:

selfdestruct(address) 会销毁当前合约并把余额发给指定地址,是不可逆的链上操作,慎用!


如果你想我帮你写一个带 selfdestruct 的合约升级机制(配合代理合约),可以继续问我。

http://www.lryc.cn/news/581812.html

相关文章:

  • 数据结构---链表结构体、指针深入理解(三)
  • nginx的使用
  • 机器学习手写字体识别系统:技术演进与应用实践
  • Qt:QPushButton、QRadioButton、QCheckBox
  • 1.1_4 计算机网络的分类
  • ARMv8 创建3级页表示例
  • QML与C++交互之QML端信号绑定C++端槽函数
  • Linux proxy设置
  • TensorFlow 开发中,合理的项目目录结构
  • 8.4.2_2堆的插入删除
  • [netty5: WebSocketClientHandshaker WebSocketClientHandshakerFactory]-源码分析
  • WSL2配置freesurfer
  • Docker Model Runner Chat
  • 嵌套容器是隐射宿主机的路径而不是容器的路径
  • 深入解析 document.write、innerHTML 和 innerText 的区别
  • 使用PyTorch实现Softmax回归(Mnist手写数字识别)
  • linux下进程之间socket通信c程序例程
  • 6、构建更加丰富的页面
  • Redis--主从复制详解
  • Linux操作系统之文件(五):文件系统(下)
  • 进程终止:exit()与_exit()深度解析
  • 【HarmonyOS】鸿蒙6 CodeGenie AI辅助编程工具详解
  • Linux-磁盘管理
  • electron中的IPC通信
  • python-if结构、三目运算符
  • 用.NET9+Blazor+Semantic Kernel,打造企业级AI知识库和智能体平台——AntSK深度解读
  • ZSGuardian ---AI赋能,新一代研发管理守护平台 -即将上线
  • 【openp2p】 学习4: 纳秒级别的时间同步算法及demo
  • 2025年中AI风暴:多模态突破、具身觉醒与科学新纪元
  • 等保测评-Apache Tomcat中间件