10分钟智能合约:进阶实战-2.6 合约生命周期

10 阅读1分钟

欢迎订阅专栏10分钟智能合约:进阶实战

阶段分类

image.png

  • 合约创建阶段:通过部署交易,执行初始化代码,运行构造函数,最后生成运行时代码并上链
  • 合约运行阶段:通过调用交易,运行合约内部函数递辑,进行状态改变以及执行外部调用
  • 合约终止阶段:通过销毁交易,清除相关代码状态、转移ETH

构造函数

合的创建阶段通过构造函数初始化状态变量 构造函数特点:

  • 每个合约只能定义一个构造函数
  • 构造函数在合约部署时仅执行一次,不在链上存储
  • 构造函数可以接受参数

Sofidity早期版本,构造函数需要与合约名相同,当前版本使用constructor关键字

合约自毁

有一种方法可以使合约没有receive或者fallback函数时,让其强制接受Ether,即利用setfdestruct的特性。selfdestruct可以清除合约的代码,并将该合约的所有ETH余额发送给指定地址(selfdestruct的参数)。

// SPDX-License-Identifier: MIT

pragma solidity 0.8.28;

contract Destruct {
    function destruct() external {
        selfdestruct(payable(msg.sender));
    }
}

可以强制发送给对方ETH,可能对某些合约逻辑判断产生问题