zoukankan      html  css  js  c++  java
  • Solidity编程 四 之 智能合约的结构

      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
    }  
  • 相关阅读:
    [BZOJ2296] [POJ Challenge] 随机种子
    [BZOJ1026] [SCOI2009] windy数 (数位dp)
    [BZOJ1306] [CQOI2009] match循环赛 (搜索)
    [BZOJ2654] tree (kruskal & 二分答案)
    [BZOJ3506] [Cqoi2014] 排序机械臂 (splay)
    [BZOJ1552] [Cerc2007] robotic sort (splay)
    [BZOJ3110] [Zjoi2013] K大数查询 (树套树)
    BZOJ3611: [Heoi2014]大工程
    BZOJ2286: [Sdoi2011]消耗战
    BZOJ3876: [Ahoi2014]支线剧情
  • 原文地址:https://www.cnblogs.com/StephenWu/p/7091589.html
Copyright © 2011-2022 走看看