以太坊智能合约编写的基本要素

Solidity是以太坊官方推荐的一门面向对象编程的高级语言,用于编写智能合约,支持多继承。
以太坊智能合约中可包含状态变量(state variable)、函数(function)、函数修饰符(modifier)、事件(event)、结构类型(struct)和枚举类型(enum)。

1、状态变量(state variable)

变量值会永久存储在合约的存储空间。
示例:

pragma solidity ^0.4.17;

contract Test {
    address _owner; //state variable
    string name;
}

2、函数(function)

智能合约中的一个可执行单元。
示例:

pragma solidity ^0.4.17;

contract Test{
    function add(uint x, uint y) returns (uint z){
        z = x + y;
    }
}

3、函数修饰符(function modifier)

函数修饰符用于增强语义。略

4、事件(event)

事件是以太坊虚拟机(EVM)日志基础设施提供的一个便利接口。用于获取当前发生的事件。
示例:

pragma solidity ^0.4.17;

contract Test {
    event logdata(address _sender, uint _amount);
    function payTest() payable {
        logdata(msg.sender, msg.value);
    }
}

补充:其中msg.value是给对方打多少ETH,在remix中调试可以输入value值
event的函数名称可以自由定义,传值也可以是任意个数,最终以json的形式返回到remix调试区

5、结构体(struct)

自定义的将几个变量组合在一起形成的类型。
示例:

pragma solidity ^0.4.17;

contract Company {
    //user defined `Employee` struct type
    //group with serveral variables
    struct employee{
        string name;
        uint age;
        uint salary;
    }
    
    //User defined `manager` struct type
    //group with serveral variables
    struct manager{
        employee employ;
        string title;
    }
}

6、枚举(enum)

特殊的自定义类型,类型的所有值可枚举的情况。
示例:

pragma solidity ^0.4.0;

contract Test {
    enum Citys{Shanghai,Suzhou}
}

更多学习在后续章节中继续。

作者:海阳之新
链接:https://www.jianshu.com/p/3e10f4014b07

发表评论

电子邮件地址不会被公开。 必填项已用*标注