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
    }  
  • 相关阅读:
    sort
    Sicily--17956. Maximum Multiple
    代码1005
    487-3279的解法实例
    487-3279另一种解法
    487-3279
    人工智能--识别句子
    1003-Hangover
    推荐书单(转自GITHUB)
    转自微信号:测试那点事
  • 原文地址:https://www.cnblogs.com/StephenWu/p/7091589.html
Copyright © 2011-2022 走看看