Solidity
從 Solidity 合約中檢索執行鏈的 CHAIN_ID
有沒有辦法直接
CHAIN_ID
從智能合約中檢索有關執行鏈的資訊?我知道對於任何已經
EIP-155
實現的鏈,CHAIN_ID
s 都可以從簽名的組件中檢索,v
但需要傳遞一個來進行提取。由於
CHAIN_ID
是關於鏈的資訊,我懷疑應該有一種方法可以訪問它。Solidity 有沒有辦法直接獲取這些資訊?
從版本開始
0.5.12
,Solidity 包含一個彙編函式chainid()
,可提供對新CHAINID
操作碼的訪問:function getChainID() external view returns (uint256) { uint256 id; assembly { id := chainid() } return id; }
要使用它,請確保使用
--evm-version istanbul
標誌將編譯器的 EVM 版本設置為伊斯坦布爾。
chainid 在原生 Solidity 0.8.0 中可用。因此,您可以獲得區塊時間戳或區塊編號等鏈 ID。
這是程式碼。
block.chainid;
文件 https://docs.soliditylang.org/en/v0.8.0/units-and-global-variables.html
Solidity 更新 PR 在這裡。 https://github.com/ethereum/solidity/pull/10557