【Solidity智能合约开发第6篇】3分钟了解Solidity合约完整生命周期(状态变量、局部变量、构造函数、成员函数、析构函数、生命周期)

一、什么是合约?

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

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

二、一个完整的合约

// SPDX-License-Identifier: MIT
pragma solidity >=0.5.0 <0.7.0;

contract Counter {

    uint count = 0;
    address payable owner;

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

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

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

    function kill() public  {  
        if (owner == 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.5.0 <0.7.0;

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

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

【Solidity智能合约开发第6篇】3分钟了解Solidity合约完整生命周期(状态变量、局部变量、构造函数、成员函数、析构函数、生命周期)

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 {

}

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

2.6 成员函数

function increment() public  {

}

function getCount() view public returns (uint) {

}

function increment() publicfunction getCount() view public returns (uint)都是Counter合约的成员函数,成员函数在iOS里面叫做方法、行为,合约实例可以调用成员函数处理相关操作。当调用increment()函数时,会让状态变量count增加step。当调用getCount()时会得到状态变量count的值。

2.7 本地变量

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

increment()方法中声明的step就是局部变量。局部变量只在离它最近的内使用。

2.8 析构函数(selfdestruct)

析构函数构造函数对应,构造函数是初始化数据,而析构函数是销毁数据。在Counter合约中,当我们手动调用kill函数时,就会调用selfdestruct(owner)销毁当前合约。

三、操作演示

【Solidity智能合约开发第6篇】3分钟了解Solidity合约完整生命周期(状态变量、局部变量、构造函数、成员函数、析构函数、生命周期)

在上面的操作中,我们不难看出,当我点击kill函数后,实例对象即被销毁,对象销毁后,再点击其他任何方法函数都将不会再有任何反应。

该内容来自于互联网公开内容,非区块链原创内容,如若转载,请注明出处:https://htzkw.com/archives/25015

联系我们

aliyinhang@gmail.com