【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
相当于其他语言中的class
,Counter
相当于类名,contract Counter
相当于class Counter extends Contract
。
2.4 状态变量
uint count = 0;
address payable owner;
count
和owner
就是状态变量,合约中的状态变量相当于类
中的属性变量。
2.5 构造函数(Contructor)
// ❌错误的代码
constructor() public {
}
⚠️注意:构造函数无需添加 public
可见性,如果添加会报错,如下图:
// 正确的代码
constructor() {
}
0.5.0
以前的版本使用 function Counter()
作为构造函数,0.5.0
以后,构造函数使用constructor
关键字来表示。构造函数,即当合约对象创建时,会先调用构造函数对相关数据进行初始化处理。
温馨提示:此处内容已隐藏,您必须消耗1个积分后才能查看。 
或者

关注微信公众号: 程序咖元宇宙实验室
回复:程序咖巴士 ,获取验证码。
验证码:
验证码: