Solidity

在 Solidity 0.5 之前,abi.encodePacked 和 abi.encode 中的哪一個是 Solidity 編譯器的標準?

  • October 23, 2021

在 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)).

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