以太坊(ETHEREUM)全局函数

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 arguments
abi.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): 当前块的gaslimit
block.number (uint):当前块的数量
block.timestamp (uint):当前块的时间戳
gasleft() returns (uint256): 剩余 gas
msg.data(bytes): 完整的calldata
msg.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 is false (用于内部错误)
require(bool condition): abort execution and revert state changes if condition is false (用于输入错误或外部组件的错误)
require(bool condition, string message): abort execution and revert state changes if condition is false (用于输入错误或外部组件的错误). 并提供错误信息.
revert(): 中止执行并还原状态更改
revert(string message):中止执行并还原状态更改,提供解释字符串
blockhash(uint blockNumber) returns (bytes32): : 给定的块的hash值, 只有最近工作的256个块的hash值
keccak256(...) returns (bytes32):计算(紧凑排列的)参数的 Ethereum-SHA3 hash值
sha3(...) returns (bytes32): an alias to keccak256
sha256(...) returns (bytes32): 计算(紧凑排列的)参数的SHA256 hash值
ripemd160(...) returns (bytes20):计算 256个(紧凑排列的)参数的RIPEMD
ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address): 椭圆曲线签名公钥恢复,错误时返回0
addmod(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 at 2**256. Assert that k != 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 at 2**256. Assert that k != 0 starting from version 0.5.0.
this (current contract’s type): 当前合约,在地址上显式转换
super: 在层次关系上一层的合约
selfdestruct(address recipient): 销毁当前的合约,将其资金发送到指定address
suicide(address recipient): a deprecated alias to selfdestruct
<address>.balance (uint256): address地址中的账户余额(以wei为单位)
<address>.send(uint256 amount) returns (bool): 将一定量wei发送给address地址,若失败返回false。
<address>.transfer(uint256 amount): 将一定量wei发送给address地址,若失败抛出异常。

猜你喜欢

转载自blog.csdn.net/weixin_39842528/article/details/123139329