# 特殊變量及函數(Special Variables and Functions)
有一些變量和函數存在于¥全局上下文中。主要用來提供一些區塊鏈當前的信息。
### 區塊和交易的屬性(Block And Transaction Properties)
- `block.blockhash(uint blockNumber) returns (bytes32)`,給定區塊號的哈希值,只支持最近256個區塊,且不包含當前區塊。
- `block.coinbase (address)` 當前塊礦工的地址。
- `block.difficulty (uint)`當前塊的難度。
- `block.gaslimit (uint)`當前塊的`gaslimit`。
- `block.number (uint)`當前區塊的塊號。
- `block.timestamp (uint)`當前塊的時間戳。
- `msg.data (bytes)`完整的調用數據(calldata)。
- `msg.gas (uint)`當前還剩的`gas`。
- `msg.sender (address)`當前調用發起人的地址。
- `msg.sig (bytes4)`調用數據的前四個字節(函數標識符)。
- `msg.value (uint)`這個消息所附帶的貨幣量,單位為`wei`。
- `now (uint)`當前塊的時間戳,等同于`block.timestamp`
- `tx.gasprice (uint)` 交易的`gas`價格。
- `tx.origin (address)`交易的發送者(完整的調用鏈)
`msg`的所有成員值,如`msg.sender`,`msg.value`的值可以因為每一次外部函數調用,或庫函數調用發生變化(因為`msg`就是和調用相關的全局變量)。
如果你想在庫函數中,用`msg.sender`實現訪問控制,你需要將`msg.sender`做為參數(就是說不能使用默認的`msg.value`,因為它可能被更改)。
為了可擴展性的原因,你只能查最近256個塊,所有其它的將返回0.
- Solidity語言
- 入門說明
- Solidity智能合約文件結構
- 智能合約源文件的基本要素概覽
- 值類型
- 類型
- 布爾
- 整型
- 地址
- 字節數組
- 小數
- 字符串
- 十六進制字面量
- 枚舉
- 函數
- 引用類型
- 引用類型
- 數據位置
- 數組
- 數據結構
- 雜項
- 映射
- 左值運算符
- 類型間的轉換
- 類型推斷
- 單位
- 貨幣單位
- 時間單位
- 語言內置特性
- 特殊變量及函數
- 數學和加密函數
- 地址相關
- 進階
- 入參和出參
- 控制結構
- 函數調用
- 創建合約實例
- 表達式的執行順序
- 賦值
- 作用范圍和聲明
- 異常
- 內聯匯編
- 合約詳解
- 合約
- 可見性或權限控制
- 訪問函數
- 函數修改器
- 常狀態變量
- 回退函數
- 事件
- 繼承
- 接口
- 其它
- 庫
- 狀態變量的存儲模型
- 內存變量的存局
- 調用數據的布局