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 tokeccak256
sha256(...) 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) % k
where the addition is performed with arbitrary precision and does not wrap around at2**256
. Assert thatk != 0
starting from version 0.5.0.mulmod(uint x, uint y, uint k) returns (uint)
: compute(x * y) % k
where the multiplication is performed with arbitrary precision and does not wrap around at2**256
. Assert thatk != 0
starting from version 0.5.0.this
(current contract’s type): 当前合约,在地址上显式转换super
: 在层次关系上一层的合约selfdestruct(address recipient)
: 销毁当前的合约,将其资金发送到指定address
suicide(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 ...
随机推荐
- (生产)js-base64 - 转码
参考:https://github.com/dankogai/js-base64 安装 $ npm install --save js-base64 使用 var Base64 = require(' ...
- vue2 数据交互 vue-resource
1.安装vue-resource到项目中,找到当前项目 输入:npm install vue-resource --save 2.安装完毕后,在main.js中导入,如下所示: import Vue ...
- Java Knowledge series 4
JVM & Bytecode Has-a or Is-a relationship(inheritance or composition) 如果想利用新类内部一个现有类的特性,而不想使用它的接 ...
- 文件上传PHP
<?php $targetIp = GetIP(); $fileUpload = 'fileUpload'; $frameCount = 'frameCount'; $fileName = $_ ...
- Linux文件属性与权限
一.在Linux里面,任何一个文件都具有“User,Group,Others”(用户.用户组.其他人)三种身份 二.用户组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个用户组的 ...
- CRUD全栈式编程架构之界面层的设计
Layout的设计 模板模式 mvc的模板特别类似设计模式中模板方法模式,结合Layout中RenderSection和RenderBody方法可以将部分html展现逻辑延迟到具体的视图页面去实现里面 ...
- @Inject 注入 还是报空指针
@Inject 注入 还是报空指针 发布于 572天前 作者 子寒磊 1435 次浏览 复制 上一个帖子 下一个帖子 标签: 无 @IocBean@Service("userM ...
- Cydia Tweak--Cydia Substrate
http://www.jianshu.com/p/8982e9670fc6 Cydia Substrate.MobileHooker MSHookMessageEx MSHookFunction Mo ...
- 谷歌Web中文开发手冊:3响应式
https://developers.google.com/web/fundamentals/getting-started/your-first-multi-screen-site/responsi ...
- 近期流行的JavaScript框架与主题
[新年快乐]2017年你应该关注的JavaScript框架与主题 2017-01-01 王下邀月熊 JavaScript JavaScript的繁荣促生了很多优秀的技术.框架与工具库,这空前的繁荣也给 ...