Solidity
在 Solidity 0.5 之前,abi.encodePacked 和 abi.encode 中的哪一個是 Solidity 編譯器的標準?
在 Solidity v0.5 之前,keccak256() 接受多個參數,而在 v0.5 之後,它需要一個字節參數。編譯器使用了兩種編碼類型中的哪一種,encode/encodePacked?
它是
abi.encodePacked()
。keccak256(abi.encodePacked(a, b, c))
on 0.5+ 相當於keccak256(a, b, c)
早期版本。Solidity v0.5.0 重大更改 > 語義和句法更改
函式
.call()
,.delegatecall()
,staticcall()
,keccak256()
和sha256()
現在ripemd160()
只接受一個字節參數。此外,該論點沒有被填充。對此進行了更改,以使參數如何連接更加明確和清晰。將every.call()
(and family) 更改為 a.call("")
and every.call(signature, a, b, c)
to use.call(abi.encodeWithSignature(signature, a, b, c))
(最後一個僅適用於值類型)。將每個更改keccak256(a, b, c)
為keccak256(abi.encodePacked(a, b, c))
.