《老人与海》有一句话“一个人并不是生来要给打败的,你尽可以消灭他,可就是打不败他”。这里我们可以想到Solidity中的selfdestruct方法,尽管合约可以被销毁,可它的“精神”却永远的留在链上。

实验目的

1.认识合约的自销毁的过程与作用;体会关键字selfdestruct用法

实验要求

1. 请你编译下面的代码,尝试编译看看是否正常通过。如果报错,请按照提示修改代码直至通过。

2. 修改编译通过后进行部署。首先查看money的初始值是否为0,再调用函数increaseMoney,查看money值是否变化。最后调用函数kill,查看money的值,再调用函数increaseMoney,查看money值是否变化。思考selfdestruct方法是将合约从区块中彻底的删除吗?

以下是本次实验所使用到的测试代码,请使用remix编辑器完成该实验

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0; 
contract DestructTest{ 
    address payable ower;  // 1、payable
    constructor() public {
        ower = msg.sender; 
    }
    uint public money = 0; 
    function increaseMoney() public returns (uint) {
        money += 10000; 
        return money;
    }
function kill() public {
// 2、只有合约调用者才能销毁
    if(msg.sender == ower){
        // 3、调用自销方法
        selfdestruct(ower); 
        } 
    }
}

下面是本次实验所配套的视频教程: