Solidity

堅固性。連接雜湊 w 地址。TypeError: Operator + 與類型字元串記憶體和應付地址不兼容

  • November 19, 2019

我正在嘗試做一些簡單的事情:

examsFinalHash = keccak256(examHash + msg.sender);

但我收到以下錯誤:

TypeError: Operator + 與類型字元串記憶體和應付地址不兼容

我是新來的。請幫忙。另外,我在solidity Docs的哪裡可以找到類型及其特徵的參考?

我覺得經典

https://solidity.readthedocs.io/en/v0.5.13/abi-spec.html#types

是一個不錯的選擇。

您的錯誤只是類型地址與字元串類型的初步總和的結果:它無法工作。在以前版本的編譯器中,它可能出於正常原因起作用:在這種情況下,kecca256 括號中的 + 運算符是用來表示“打包此參數”的。

鑑於此,使用 5.x 代的編譯器,由於在編譯器的 5.0 或更高版本之後進行了語言重新定義,您被要求顯式打包 kecca256 的參數。

例如

keccak256(abi.encodePacked(a, b))

現在需要而不是舊的

keccak256(a + b)

檢查文件:它很有幫助!

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