ethereum(以太坊)(九)--global(全局函数)
pragma solidity ^0.4.0;
contract modifierTest{
bytes32 public blockhash;
address public coinbase;
uint public difficulty;
uint public gaslimit;
uint public blockNum;
uint public timestamp;
bytes public calldata1;
uint public gas;
address public sender;
bytes4 public sig;
uint public msgValue;
uint public now1;
uint public gasPrice;
address public txOrigin;
function tt(){
//给定区块号的哈希值,只支持最近256个区块,且不包含当前区块
blockhash = block.blockhash(block.number -1);
coinbase = block.coinbase;//当前块矿工的地址
difficulty = block.difficulty;//当前块的难度
gaslimit = block.gaslimit;//当前块的gaslimit
blockNum = block.number; //当前区块的块号
timestamp = block.timestamp;//当前块的时间戳==now
calldata1 = msg.data;//完整的调用数据: 0x1e36169e
gas = msg.gas;//当前还剩下的gas
sender = msg.sender;//当前调用发起人的地址: 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c
sig = msg.sig;//调用数据的前4个字节(函数标识符): 0x1e36169e
msgValue = msg.value;//这个消息所携带的货币量,单位wei
now1 = now;
gasPrice = tx.gasprice;//交易的gas价格
txOrigin = tx.origin;//交易的发送者(完整的调用链): 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c
}
}
直接调用,后面无需()
abi.encode(...) returns (bytes):对给定的参数进行ABI编码。abi.encodePacked(...) returns (bytes): Performes packed encoding of the given argumentsabi.encodeWithSelector(bytes4 selector, ...) returns (bytes)::对给定的参数进行ABI编码——从第二个预置给定的四字节选择器开始abi.encodeWithSignature(string signature, ...) returns (bytes):相当于abi.encodeWithSelector(bytes4(keccak256(signature), ...)block.blockhash(uint blockNumber) returns (bytes32): 给定的块的hash值, 只有最近工作的256个块的hash值—— 在 0.4.22 后请使用blockhash(uint blockNumber).block.coinbase(address): 当前块的矿工的地址block.difficulty(uint): 当前块的难度block.gaslimit(uint): 当前块的gaslimitblock.number(uint):当前块的数量block.timestamp(uint):当前块的时间戳gasleft() returns (uint256): 剩余 gasmsg.data(bytes): 完整的calldatamsg.gas(uint): 剩余 gas - 0.4.21后请使用gasleft()msg.sender(address): 消息的发送者(当前调用)msg.value(uint): 和消息一起发送的wei的数量now(uint): 当前块的时间戳(block.timestamp的别名)tx.gasprice(uint):交易的gas价格tx.origin(address):交易的发送者(全调用链)assert(bool condition): abort execution and revert state changes if condition isfalse(用于内部错误)require(bool condition): abort execution and revert state changes if condition isfalse(用于输入错误或外部组件的错误)require(bool condition, string message): abort execution and revert state changes if condition isfalse(用于输入错误或外部组件的错误). 并提供错误信息.revert(): 中止执行并还原状态更改revert(string message):中止执行并还原状态更改,提供解释字符串blockhash(uint blockNumber) returns (bytes32): : 给定的块的hash值, 只有最近工作的256个块的hash值keccak256(...) returns (bytes32):计算(紧凑排列的)参数的 Ethereum-SHA3 hash值sha3(...) returns (bytes32): an alias tokeccak256sha256(...) returns (bytes32): 计算(紧凑排列的)参数的SHA256 hash值ripemd160(...) returns (bytes20):计算 256个(紧凑排列的)参数的RIPEMDecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address): 椭圆曲线签名公钥恢复,错误时返回0addmod(uint x, uint y, uint k) returns (uint): compute(x + y) % kwhere the addition is performed with arbitrary precision and does not wrap around at2**256. Assert thatk != 0starting from version 0.5.0.mulmod(uint x, uint y, uint k) returns (uint): compute(x * y) % kwhere the multiplication is performed with arbitrary precision and does not wrap around at2**256. Assert thatk != 0starting from version 0.5.0.this(current contract’s type): 当前合约,在地址上显式转换super: 在层次关系上一层的合约selfdestruct(address recipient): 销毁当前的合约,将其资金发送到指定addresssuicide(address recipient): a deprecated alias toselfdestruct<address>.balance(uint256): address地址中的账户余额(以wei为单位)<address>.send(uint256 amount) returns (bool): 将一定量wei发送给address地址,若失败返回false。<address>.transfer(uint256 amount): 将一定量wei发送给address地址,若失败抛出异常。
ethereum(以太坊)(九)--global(全局函数)的更多相关文章
- ethereum(以太坊)(一)
从这周开始,开始学习以太坊开发--solidity,开始决定往区块链方向发展,毕竟区块链技术应用广泛.一开始接触solidity开发语言不太习惯,毕竟一直在学习python语法,有很多都不能接受.有难 ...
- ethereum(以太坊)(十)--函数修饰符
pragma solidity ^0.4.0; contract modifierTest{ uint public v1; uint constant v2 =10; //uint constant ...
- ethereum(以太坊)(实例)--"安全的远程购买"
pragma solidity ^0.4.10; contract Safebuy{ uint public price; address public seller; address public ...
- ethereum(以太坊)(十一)--字节数组(二)
pragma solidity ^0.4.0; contract test { uint [5] T =[1,2,3,4,5] ;//固定长度的数组:可修改数组内值大小,不支持push,不可更改长度 ...
- ethereum(以太坊)(实例)--"简单的公开竞拍"
说真的,刚开始接触这个竞拍案例--“简单的公开竞拍”,我就抱着简单的心态去查看这个实例,但是自我感觉并不简单.应该是我实力不到家的原因吧!!!233333...不过经过大半天的努力,自己理解完之后,觉 ...
- ethereum(以太坊)(基础)--容易忽略的坑(一)
pragma solidity ^0.4.0; contract base{ address public _owner=msg.sender; uint _a; string internal _b ...
- ethereum(以太坊)(七)--枚举/映射/构造函数/修改器
pragma solidity ^0.4.10; //枚举类型 contract enumTest{ enum ActionChoices{Left,Right,Straight,Still} // ...
- ethereum(以太坊)(四)--值传递与引用传递
contract Person { string public _name; function Person() { _name = "liyuechun"; } function ...
- ethereum(以太坊)(三)--合约单继承与多继承
pragma solidity ^0.4.0; // priveta public internal contract Test{ //defualt internal uint8 internal ...
随机推荐
- 前端如何做好SEO优化
https://www.cnblogs.com/weiyf/p/9511021.html 一:什么是SEO? 搜索引擎优化(Search Engine Optimization),简称SEO.是按照搜 ...
- 编译Win32动态库工程的两个链接错误的解决
作者:朱金灿 来源:http://blog.csdn.net/clever101 今天编译一个Win32动态库工程,出现两个链接错误的解决,一个是: main.obj: error LNK2001: ...
- 将零散文件使用ICSharpCode.SharpZipLib压缩打包后一次性下载
public static Stream CreateZip(List<string> listPath, int level = 5) { MemoryStream mstream = ...
- Developer - 如何自我保证Node.js模块质量
组里正在做SaaS产品,其中一些模块(Module)是Node.js实现,这里我们主要使用Node.js实现Web Server来提供服务. 在做SaaS项目之前,组里的开发模式是传统的Deverlo ...
- 学习html5 app项目开发
这周因为部门接了个小的html5 app case,所以从事android开发的我就接下了这个项目.与其说是项目需要,其实更大部分是我自己想要做html5 app,因为我对这个全新的平台已经好奇很久了 ...
- 在 eclipse 中调出其内置的浏览器
两种方法: 1.点击工具栏中的浏览器图标,就会在主面板中出现浏览器: 跳出一个blank页面,如下: 第二种方法:点击Window——Show view——Other 输入 "browser ...
- WebRTC协议
webrtc协议介绍 MDN webrtc协议 ICE 交互式连接建立Interactive Connectivity Establishment (ICE) 是一个允许你的浏览器和对端浏览器建立连接 ...
- MySQL安装和简单操作
MySQL数据库安装与配置详解 MySQL的安装请参考下面这篇博客,讲述的非常详细,各种截图也很清晰.http://www.cnblogs.com/sshoub/p/4321640.html MySQ ...
- 找子串替换(kmp)poj1572
题目链接:http://poj.org/problem?id=1572 输入数据时要注意,这里是string型 用getline(cin,origin[i]); #include <string ...
- BZOJ 2824: [AHOI2012]铁盘整理
BZOJ 2824: [AHOI2012]铁盘整理 标签(空格分隔): OI-BZOJ OI-搜索 Time Limit: 10 Sec Memory Limit: 128 MB Descriptio ...