💡
Solidity智能合约开发
  • 前言
  • 1.1 智能合约简介
  • 1.2 以太坊虚拟机简介
  • 1.3 智能合约的编写与调试
  • 1.4 智能合约的部署与执行
  • 1.5 智能合约如何与其他IT系统交互
  • 1.6 Solidity语言教程
    • 1.6.1 典型Solidity源文件包含的组成部分
    • 1.6.2 智能合约的组成部分
    • 1.6.3 类型介绍
    • 1.6.4 单位及全局变量
    • 1.6.5 表达式及控制结构
    • 1.6.6 Solidity中的智能合约
    • 1.6.7 Solidity汇编语言
    • 1.6.8 Solidity编码风格
    • 1.6.9 Solidity V0.5.0版本与之前版本的显著区别
    • 1.6.10 Solidity V0.6.0版本与之前版本的显著区别
    • 1.6.11 课外参考
Powered by GitBook
On this page
  • 1.6.2.1 状态变量(State Variables)
  • 1.6.2.2 函数(Functions)
  • 1.6.2.3 函数修饰符(Function Modifiers)
  • 1.6.2.4 事件(Events)
  • 1.6.2.5 结构体类型(Struct Types)
  • 1.6.2.6 枚举类型(Enum Types)

Was this helpful?

  1. 1.6 Solidity语言教程

1.6.2 智能合约的组成部分

在Solidity中,智能合约很类似面向对象编程语言中的类。每个智能合约包含状态变量,函数,函数修饰符,事件,结构类型,枚举类型等的声明。一个智能合约还可以继承自其它智能合约。

1.6.2.1 状态变量(State Variables)

状态变量永久存储在智能合约的存储中。如下所示:

pragma solidity ^0.4.0;

contract SimpleStorage {

uint storedData; // 状态变量

// ...

}

1.6.2.2 函数(Functions)

函数是合约中一个可执行的代码单元。

pragma solidity ^0.4.0;

contract SimpleAuction {

function bid() public payable { // 函数

// ...

}

}

函数可以从内部或外部被调用,函数有不同的可见性。

1.6.2.3 函数修饰符(Function Modifiers)

函数修饰符可用于改变函数的语义,其用法类似函数的定义,如下所示:

pragma solidity ^0.4.0;

contract Purchase {

address public seller;

modifier onlySeller() { // 函数修饰符

require(

msg.sender == seller,

"Only seller can call this."

);

_;

}

function abort() public onlySeller { // Modifier usage

// ...

}

}

1.6.2.4 事件(Events)

事件是以太坊虚拟机的日志接口,可用于记录系统信息。

pragma solidity ^0.4.0;

contract SimpleAuction {

event HighestBidIncreased(address bidder, uint amount); // 事件

function bid() public payable {

// ...

emit HighestBidIncreased(msg.sender, msg.value); // 触发事件

}

}

1.6.2.5 结构体类型(Struct Types)

结构体是用户自定义的数据类型,可包含各种类型的数据,如下所示:

pragma solidity ^0.4.0;

contract Ballot {

struct Voter { // 结构类型

uint weight;

bool voted;

address delegate;

uint vote;

}

}

1.6.2.6 枚举类型(Enum Types)

枚举类型可被用于定义一组有限常量的集合。

pragma solidity ^0.4.0;

contract Purchase {

enum State { Created, Locked, Inactive } // 枚举类型

}

在下面的章节中我们将分别就这些具体的类型作详细介绍。

Previous1.6.1 典型Solidity源文件包含的组成部分Next1.6.3 类型介绍

Last updated 5 years ago

Was this helpful?