0%

solidity | 合约入门

这里只是浅显的介绍一下合约。


组成


一个简单的智能合约一般包括

  • 编译器版本声明
  • 引入其他源文件
  • 合约
    • 状态变量
    • 函数
    • 函数修饰器
    • 事件
    • 结构类型
  • 注释

引入其他源文件

1
import "./test.sol";

合约

函数修改器 modifier

附加在函数上面,给函数附加行为。

1
2
3
4
5
6
7
8
9
10
11
12
13
pragma solidity >=0.4.22 <0.9.0;
contract SimpleContract{
uint storeData;

modifier mustOver10 (uint value){
require(value >= 10);
_;
}

function set(uint x) public mustOver10(x){
storeData = x;
}
}

事件 event

事件是不需要去实现的。使用 emit 触发事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
pragma solidity >=0.4.22 <0.9.0;
contract SimpleContract{
uint storeData;

event Set(uint value);

modifier mustOver10 (uint value){
require(value >= 10);
_;
}

function set(uint x) public mustOver10(x){
storeData = x;
emit Set(x);
}
}

加了这个事件后,如果成功触发,会打印出 logs

1
2
3
4
5
6
7
8
9
10
11
[
{
"from": "0xd9145CCE52D386f254917e481eB44e9943F39138",
"topic": "0xdf7a95aebff315db1b7716215d602ab537373cdb769232aae6055c06e798425b",
"event": "Set",
"args": {
"0": "11",
"value": "11"
}
}
]

结构体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pragma solidity >=0.4.22 <0.9.0;
contract SimpleContract{
uint storeData;

event Set(uint value);
Circle c;

struct Circle {
uint radius;
}

modifier mustOver10 (uint value){
require(value >= 10);
_;
}

function set(uint x) public mustOver10(x){
storeData = x;
c = Circle(x);
emit Set(x);
}
}

注释

1
2
3
4
5
6
//

/*
*
*
*/
请我喝杯咖啡吧~