Solidity

從 Solidity 合約中檢索執行鏈的 CHAIN_ID

  • April 16, 2021

有沒有辦法直接CHAIN_ID從智能合約中檢索有關執行鏈的資訊?

我知道對於任何已經EIP-155實現的鏈,CHAIN_IDs 都可以從簽名的組件中檢索,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 版本設置為伊斯坦布爾。

相關文件:Solidity Assembly - v0.5.12

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

引用自:https://ethereum.stackexchange.com/questions/56749