博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
以太坊Solidity合约结构概要讲解
阅读量:7206 次
发布时间:2019-06-29

本文共 1637 字,大约阅读时间需要 5 分钟。

  hot3.png

Solidity合约结构主要包括:状态变量、局部变量、构造函数、析构函数

1、什么是智能合约?

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

2、一个完整的合约示例

pragma solidity ^0.4.23;contract Counter {	uint count = 0;    	address owner;    constructor () public {           	owner = msg.sender;        }     function increment() public {    	uint step = 10;        if(owner == msg.sender) {	    	count = count + step;       	    }    	}	function getCount() constant public returns (uint) {    	return count;     } 	function kill() public { 	if (owner == msg.sender) {       	selfdestruct(owner);       } 	}}

 

3、版本声明

        pragma solidity代表solidity版本声明,0.4.23代表solidity版本,^表示向上兼容,^0.4.23表示solidity的版本在0.4.23 - 0.5.0(不包含0.5.0)的版本都可以对本合约代码进行编译,0.4.24、0.4.25等等版本可以用来修复前面的solidity存在的一些bug。

 

4、合约声明

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

contract相当于其他语言中的class,Counter相当于类名,contract Counter相当 于 class Counter 。

 

5、状态变量

uint count = 0;

address owner;

count 和 owner就是状态变量,合约中的状态变量相当于类中的属性变量。

 

6、构造函数(Contructor)

constructor () public 也可写成 function Counter(),函数名和合约名相同时,此函数是合约的构造函数,当合约被部署时, 会先调用构造函数对相关数据进行初始化处理,构造函数在整个生命周期内只会在部署时执行一次。

 

7、成员函数

        function increment() public

        function getCount() constant returns (uint)

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

 

8、本地变量

function increment() public {     uint step = 10;     if (owner == msg.sender) {         count = count + step;    }}

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

 

9、析构函数(selfdestruct)

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

转载于:https://my.oschina.net/ruoli/blog/1809229

你可能感兴趣的文章
mint-ui vue双向绑定
查看>>
Eclipse快捷键一览表(转载)
查看>>
随机访问流 RandomAccessFile
查看>>
图片上传读取代码
查看>>
服务器安装环境基本操作
查看>>
nslookup命令
查看>>
c++函数模板作为类的成员函数,编译报错LNK2019的解决方法
查看>>
Tensorflow安装
查看>>
判断个十百千位之后是否大于20 java——CSDN博客
查看>>
.Net插件编程模型:MEF和MAF[转载]
查看>>
java实现excel的导入导出(poi详解)[转]
查看>>
[转载]浅析jQuery框架与构造对象
查看>>
微信小程序基本入门
查看>>
oracl 数字型函数
查看>>
Q443 压缩字符串
查看>>
Bootstrap——网站添加字体图标
查看>>
MVC传递数据-传递对象或对象集合
查看>>
单页应用的三大优势及监控方法
查看>>
菜鸟调错(三)——Jboss与jdk版本号不兼容导致WebService调用出错
查看>>
你是那种仅仅看《XXXXX从入门到精通》的程序猿吗?
查看>>