Evm

合約能否知道參數在呼叫程式碼中的哪個位置開始?

  • June 13, 2016

使案例如 inline 彙編 with ,它將 s 字節從位置 fcalldatacopy(t, f, s)複製到位置 t 的記憶體calldata

在打電話給例如function newContract(bytes data) { ... }

合約是否有可能知道字節碼中的哪個位置開始callcodedata

一般的答案是它遵循ABI的約定。你可以根據這些規則來解決它。

在這種特殊情況下, 的編碼data將從位置開始36。前四個字節將是消息簽名,接下來的 32 個字節將是指向data’ 表示位置的指針。

請注意,前 32 個字節data將給出長度參數,因此如果您實際上只想要 中的原始數據bytes,則從 開始68

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