Solidity进阶:自毁合约selfdestruct

selfdestruct是solidity内置函数,用来删除合约并将该合约剩余的ETH发送到指定地址。

注意事项
对外提供合约销毁接口时,最好设置为只有合约所有者可以调用,可以使用函数修饰符onlyOwner进行函数声明。

当合约被销毁后与智能合约的交互也能成功,并且返回0。

当合约中有selfdestruct功能时常常会带来安全问题和信任问题,合约中的Selfdestruct功能会为攻击者打开攻击向量(例如使用selfdestruct向一个合约频繁转入token进行攻击,这将大大节省了GAS的费用,虽然很少人这么做),此外,此功能还会降低用户对合约的信心。

用法:

selfdestruct(_addr);

示例代码:

//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

contract Selfdestruct{
    constructor() payable {}
    function deleteSelf(address _addr) external {
        selfdestruct(payable(_addr));
    }

    function getBalance() external view returns(uint) {
        return address(this).balance;
    }
}

部署合约的时候向合约发送1ETH,Remix如下:
在这里插入图片描述
执行销毁后:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值