《老人与海》有一句话“一个人并不是生来要给打败的,你尽可以消灭他,可就是打不败他”。这里我们可以想到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);
}
}
}
下面是本次实验所配套的视频教程: