zoukankan      html  css  js  c++  java
  • 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 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地址,若失败抛出异常。
  • 相关阅读:
    造轮子杂记2
    Net分布式系统之五:微服务架构
    C#设计模式:责任链模式
    NET Core1.0之CentOS平台开发控制台程序DEMO
    WCF Routing 服务
    设计模式之外观模式
    设计模式之简单工厂模式
    Eclipse快捷键总结
    Spring容器的初始化流程
    IOC容器的创建
  • 原文地址:https://www.cnblogs.com/eilinge/p/9964167.html
Copyright © 2011-2022 走看看