码迷,mamicode.com
首页 > 其他好文 > 详细

Solidity编程 四 之 智能合约的结构

时间:2017-06-28 21:53:06      阅读:632      评论:0      收藏:0      [点我收藏+]

标签:sed   数据   increase   方便   ring   编程   修改   面向对象   log   

  Solidity的智能合约和面向对象语言中的类很相似。每个智能合约可以包含的元素有:state变量的定义,方法,函数修改器,事件,结构类型以及枚举类型。同时合约可以继承于另外一个合约

state变量

    Solidity里的state变量表示的是永久的存储在合约的存储中。

  

pragma solidity ^0.4.0;

contract SimpleStorage {
    uint storedData; // State variable
    // ...
}

方法

  方法是合约里的可执行单元。方法可以被合约内部或是外部(另外一个合约)调用,对于其他合约访问权限,可以设置不同的可见性。

  

pragma solidity ^0.4.0;

contract SimpleAuction {
    function bid() payable { // Function
        // ...
    }
}

方法修改器

方法修改器通过声明的方式来修改方法的语法。

pragma solidity ^0.4.11;

contract Purchase {
    address public seller;

    modifier onlySeller() { // Modifier
        require(msg.sender == seller);
        _;
    }

    function abort() onlySeller { // Modifier usage
        // ...
    }
}

事件

事件是作为以太坊虚拟机上的记录工具,提供了方便的接口,

pragma solidity ^0.4.0;

contract SimpleAuction {
    event HighestBidIncreased(address bidder, uint amount); // Event

    function bid() payable {
        // ...
        HighestBidIncreased(msg.sender, msg.value); // Triggering event
    }
}

结构类型

结构是一种常用的数据结构,可以很方便的把多种变量组合在一起

pragma solidity ^0.4.0;

contract Ballot {
    struct Voter { // Struct
        uint weight;
        bool voted;
        address delegate;
        uint vote;
    }
}

枚举类型

枚举用于创建一组有限的值的集合

pragma solidity ^0.4.0;

contract Purchase {
    enum State { Created, Locked, Inactive } // Enum
}  

Solidity编程 四 之 智能合约的结构

标签:sed   数据   increase   方便   ring   编程   修改   面向对象   log   

原文地址:http://www.cnblogs.com/StephenWu/p/7091589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!