【区块链安全 | 第二十四篇】单位和全局可用变量(二)

在这里插入图片描述

单位和全局可用变量(Units and Globally Available Variables)

特殊变量和函数

1. 区块和交易属性

在全局命名空间中始终存在一些特殊变量和函数,主要用于提供区块链相关信息或作为通用工具函数。

  • blockhash(uint blockNumber) returns (bytes32):返回指定区块的哈希值,仅适用于最近 256 个区块;否则返回 0。
  • blobhash(uint index) returns (bytes32):返回当前交易中第 index 个 blob 的版本化哈希值。版本化哈希由 1 个字节的版本号(目前为 0x01)和 KZG 承诺的 SHA256 哈希的后 31 个字节组成(EIP-4844)。如果不存在该索引的 blob,则返回 0。
  • block.basefee (uint):当前区块的基础费用(EIP-3198 和 EIP-1559)。
  • block.blobbasefee (uint):当前区块的 blob 基础费用(EIP-7516 和 EIP-4844)。
  • block.chainid (uint):当前链的 Chain ID。
  • block.coinbase (address payable):当前区块矿工的地址。
  • block.difficulty (uint):当前区块的难度(仅适用于 Paris 之前的 EVM 版本)。在其他 EVM 版本中,它是 block.prevrandao 的废弃别名(EIP-4399)。
  • block.gaslimit (uint):当前区块的 gas 限制。
  • block.number (uint):当前区块的编号。
  • block.prevrandao (uint):由信标链提供的随机数(适用于 EVM >= Paris)。
  • block.timestamp (uint):当前区块的时间戳(自 Unix 纪元以来的秒数)。
  • gasleft() returns (uint256):返回当前交易中剩余的 gas。
  • msg.data (bytes calldata):完整的 calldata(调用数据)。
  • msg.sender (address):消息(当前调用)的发送者地址。
  • msg.sig (bytes4):calldata 的前 4 个字节(即函数标识符)。
  • msg.value (uint):随消息发送的 Wei 数量。
  • tx.gasprice (uint):交易的 gas 价格。
  • tx.origin (address):交易的原始发送者地址(完整调用链中的最初发起者)。

注意
1.msg 变量的动态性
msg.sender、msg.value 等 msg 成员的值会在每次外部函数调用时发生变化,包括调用库函数时。

2.区块和交易属性的限制
当合约在链下执行(如本地测试或模拟环境)时,不要假设 block. 和 tx. 具有特定的值,这些值取

猜你喜欢

转载自blog.csdn.net/2301_77485708/article/details/146885192
今日推荐