Evm
合約能否知道參數在呼叫程式碼中的哪個位置開始?
使案例如 inline 彙編 with ,它將 s 字節從位置 f
calldatacopy(t, f, s)
複製到位置 t 的記憶體calldata
在打電話給例如
function newContract(bytes data) { ... }
合約是否有可能知道字節碼中的哪個位置開始
callcode
?data
一般的答案是它遵循ABI的約定。你可以根據這些規則來解決它。
在這種特殊情況下, 的編碼
data
將從位置開始36
。前四個字節將是消息簽名,接下來的 32 個字節將是指向data
’ 表示位置的指針。請注意,前 32 個字節
data
將給出長度參數,因此如果您實際上只想要 中的原始數據bytes
,則從 開始68
。