【2022 元宇宙基础NFT之Solidity OOP编程第06篇】Solidity合约完整生命周期(状态变量、局部变量、构造函数、成员函数、析构函数、生命周期)

一、什么是合约?

在区块链上运行的程序,通常称为智能合约(Smart Contract)📒。所以通常会把写区块链程序改称写智能合约

简单点来讲,合约就是运行在区块链上的一段程序。

二、一个完整的合约

// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.9.0;

contract Counter {

    uint count = 0;
    address payable owner;

    constructor() {
       owner = payable(msg.sender);
    } 

    function increment() public  {
       uint step = 10;
       count = count + step;
    }

    function getCount() view public returns (uint) {
       return count;
    }

    function kill() public  {  
        if (owner == payable(msg.sender)){
          selfdestruct(owner);
        }  
    }
}

2.1 SPDX License Identifier声明

SPDX-License-Identifier: MIT
  • MIT许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称「X条款」(X License)或「X11条款」(X11 License)
  • MIT内容与三条款BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软件被授权人更大的权利与更少的限制。
  • 被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。
  • 被授权人可根据程式的需要修改授权条款为适当的内容。

2.2 版本声明

pragma solidity >=0.7.0 <0.9.0;

pragma solidity代表solidity版本声明,>=0.7.0 <0.9.0 表示当前合约版本>=0.7.0<0.9.0

⚠️:合约编译时,需使用声明范围的编译器进行编译。

2.3 合约声明

contract Counter {

}

contract是合约声明的关键字,Counter是合约名字,contract Counter就是声明一个Counter合约。

contract相当于其他语言中的classCounter相当于类名,contract Counter相当于class Counter extends Contract

2.4 状态变量

uint count = 0;
address payable owner;

countowner就是状态变量,合约中的状态变量相当于中的属性变量。

2.5 构造函数(Contructor)

// ❌错误的代码
constructor() public {

}

⚠️注意:构造函数无需添加 public可见性,如果添加会报错,如下图:

// 正确的代码
constructor() {

}

0.5.0以前的版本使用 function Counter()作为构造函数,0.5.0以后,构造函数使用constructor关键字来表示。构造函数,即当合约对象创建时,会先调用构造函数对相关数据进行初始化处理。

温馨提示:此处内容已隐藏,您必须消耗1个积分后才能查看。

或者

关注微信公众号: 程序咖元宇宙实验室
回复:程序咖巴士 ,获取验证码。
验证码:
已有 0 用户参与0
0 : 0
+1已打分
电子邮箱
  • 程序咖巴士
联系我们
  • 扫一扫,联系我们