函数修饰符

pragma solidity ^0.4.11;

contract owned {
address owner; // 构造函数
function owned() public {
owner = msg.sender;
} // 此合约定义的函数修饰符不使用,用于衍生的合约
modifier onlyOwner {
require(msg.sender == owner);
_; // 引用的函数体部分
}
} contract mortal is owned {
function close() public onlyOwner {
selfdestruct(owner);
}
} /* 相当于
function close() public onlyOwner {
require(msg.sender == owner);
selfdestruct(owner);
}
*/ contract priced {
modifier costs(uint price) {
if (msg.value >= price) {
_;
}
}
} // 继承合约priced,owned
contract Register is priced, owned {
mapping (address => bool) registeredAddresses;
uint price; function Register(uint initialPrice) public {
price = initialPrice;
} // 这里使用关键字payable很重要,否则函数将自动拒绝所有以太的转帐
function register() public payable costs(price) {
registeredAddresses[msg.sender] = true;
} /* 相当于
function register() public payable costs(price) {
if (msg.value >= price) {
registeredAddresses[msg.sender] = true;
}
}
*/ function changePrice(uint _price) public onlyOwner {
price = _price;
} /* 相当于
function changePrice(uint _price) public onlyOwner {
require(msg.sender == owner);
price = _price;
}
*/
} contract Mutex {
bool locked; modifier noReentrancy() {
require(!locked);
locked = true;
_;
locked = false;
} function f() public noReentrancy returns (uint) {
require(msg.sender.call());
return 7;
} /* 相当于
function f() public noReentrancy returns (uint) {
require(!locked);
locked = true; require(msg.sender.call());
return 7; locked = false;
}
*/
}

常量

pragma solidity ^0.4.0;

contract C {
uint constant NUMER = 32 ** 22 + 8;
string constant TEXT = "abc";
bytes32 constant MYHASH = keccak256("abc");
}

solidity语言11的更多相关文章

  1. Solidity语言系列教程

    Solidity 是一门面向合约的.为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在 以太坊虚拟机(EVM) 上运行. ...

  2. 用solidity语言开发代币智能合约

    智能合约开发是以太坊编程的核心之一,而代币是区块链应用的关键环节,下面我们来用solidity语言开发一个代币合约的实例,希望对大家有帮助. 以太坊的应用被称为去中心化应用(DApp),DApp的开发 ...

  3. 第一行代码:以太坊(2)-使用Solidity语言开发和测试智能合约

    智能合约是以太坊的核心之一,用户可以利用智能合约实现更灵活的代币以及其他DApp.不过在深入讲解如何开发智能合约之前,需要先介绍一下以太坊中用于开发智能合约的Solidity语言,以及相关的开发和测试 ...

  4. solidity语言介绍以及开发环境准备

    solidity语言介绍以及开发环境准备   Solidity 是一门面向合约的.为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的 ...

  5. 用C++生成solidity语言描述的buchi自动机的初级经验

    我的项目rvtool(https://github.com/Zeraka/rvtool)中增加了生成solidity语言格式的监控器的模块. solidity特殊之处在于,它是运行在以太坊虚拟机环境中 ...

  6. solidity语言5

    结构体 pragma solidity ^0.4.11; // 众筹合约 contract CrowdFunding { // 投资者 struct Funder { address addr; ui ...

  7. solidity语言3

    #函数类型(function type) function (<parameter types>) {internal|external(public)} [pure|constant|v ...

  8. solidity语言1

    合约(contract)由变量(variable).函数(functions).函数修饰符(function modifiers).事件(events).结构体类型(struct type).枚举类型 ...

  9. Solidity语言基础 和 Etherum ERC20合约基础

    1. 类型只能从第一次赋值中推断出来,因此以下代码中的循环是无限的,  小. for (var i = 0; i < 2000; i++) { ... } --- Solidity Types ...

随机推荐

  1. 洛谷 P1800 software_NOI导刊2010提高(06)

    题目链接 题解 二分答案+dp 如果我们知道答案,贪心地想,让每个人做尽量多的模块一定不会比最优解差 \(f[i][j]\)表示前\(i\)个人第一个模块做了\(j\)块,第二个模块最多能做多少 然后 ...

  2. opacity 兼容 ie8

    opacity: 0.6; filter: alpha(opacity=60);

  3. [转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法

    [From] https://www.zmrbk.com/post-2030.html https://blog.csdn.net/suifengshiyu/article/details/40952 ...

  4. async中series的实现 javascript构件

    //同步流程 var series=function(arr){ function async(i){ arr[i](function(){ if(1+i<arr.length){ async( ...

  5. python 可迭代对象,迭代器和生成器,lambda表达式

    分页查找 #5.随意写一个20行以上的文件(divmod) # 运行程序,先将内容读到内存中,用列表存储. # l = [] # 提示:一共有多少页 # 接收用户输入页码,每页5条,仅输出当页的内容 ...

  6. GreenPlum 大数据平台--备份-邮件配置-gpcrondump & gpdbrestore(五)

    01,备份 生成备份数据库 [gpadmin@greenplum01 ~]$ gpcrondump -l /gpbackup/back2/gpcorndump.log -x postgres -v [ ...

  7. 如何在vue && webpack 项目中的单文件组件中引入css

    引入方式很简单,就是在script下使用require()即可. 因为import 是import...from 的形式,所以是不需要的. <script> import {mapStat ...

  8. Http编程之HttpClient

    在Android开发中,Android SDK附带了Apache的HttpClient,它是一个完善的客户端.它提供了对HTTP协议的全面支持,可以使用HttpClient的对象来执行HTTP GET ...

  9. 如何给MySql创建连接用户并授权

    一般在为MySql创建用户时建议使用GRANT前台命令,当然如果对我们开发者而言,方法还有很多种,比如使用INSERT命令,甚至是直接修改mysql user数据表,但仍然建议按照MySQL规范去授权 ...

  10. pat1003. Emergency (25)

    1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...