塊和事務(wù)屬性

2022-05-12 17:02 更新
  • blockhash(uint blockNumber) returns (bytes32): 給定塊的哈希值,當blocknumber它是 256 個最近的塊之一時;否則返回零
  • block.basefee( uint):當前區(qū)塊的基本費用(EIP-3198EIP-1559
  • block.chainid( uint): 當前鏈 id
  • block.coinbase( ): 當前區(qū)塊礦工地址address payable
  • block.difficulty( uint): 當前區(qū)塊難度
  • block.gaslimit( uint): 當前區(qū)塊gaslimit
  • block.number( uint): 當前區(qū)塊號
  • block.timestamp( uint): 當前區(qū)塊時間戳,自 unix 紀元以來的秒數(shù)
  • gasleft() returns (uint256): 剩余氣體
  • msg.data( ): 完整的通話數(shù)據(jù)bytes calldata
  • msg.sender( address): 消息的發(fā)送者(當前通話)
  • msg.sig( bytes4):calldata 的前四個字節(jié)(即函數(shù)標識符)
  • msg.value( uint): 隨消息發(fā)送的 wei 數(shù)量
  • tx.gasprice( uint): 交易的gas價格
  • tx.origin( address): 交易的發(fā)送者(完整的調(diào)用鏈)

筆記

的所有成員的值msg,包括msg.sender和 msg.value可以為每個外部函數(shù)調(diào)用而改變。這包括對庫函數(shù)的調(diào)用。

筆記

當合同在鏈外而不是在包含在塊中的交易的上下文中進行評估時,您不應(yīng)假設(shè)block.*并tx.*引用來自任何特定塊或交易的值。這些值由執(zhí)行合約的 EVM 實現(xiàn)提供,并且可以是任意的。

筆記

不要依賴block.timestamp或blockhash作為隨機性的來源,除非你知道自己在做什么。

時間戳和區(qū)塊哈希都會在一定程度上受到礦工的影響。例如,采礦社區(qū)中的不良行為者可以在選定的哈希上運行賭場支付功能,如果他們沒有收到任何錢,只需重試不同的哈希。

當前區(qū)塊的時間戳必須嚴格大于上一個區(qū)塊的時間戳,但唯一的保證是它將位于規(guī)范鏈中兩個連續(xù)區(qū)塊的時間戳之間。

筆記

出于可擴展性的原因,區(qū)塊哈希并非對所有區(qū)塊都可用。您只能訪問最近 256 個區(qū)塊的哈希值,所有其他值將為零。

筆記

該函數(shù)blockhash以前稱為block.blockhash,在 0.4.22 版本中已棄用,并在 0.5.0 版本中刪除。

筆記

該函數(shù)gasleft以前稱為msg.gas,在版本 0.4.21 中已棄用,并在版本 0.5.0 中刪除。

筆記

在 0.7.0 版中,別名now(for block.timestamp) 被刪除。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號