Solidity

如何比較兩個結構的雜湊?

  • February 28, 2017
function checkOffers() public returns (bool){
   uint256 a = sha256(offerFromProducer);
   uint256 b = sha256(offerFromConsumer);
   if(a == b){
       return true;
   }
   return false;
}

在此處輸入圖像描述

有什麼方法可以比較 Solidity 中的兩個結構嗎?

sha256的返回值為bytes32。所以使用bytes32 a = sha256(...)並為b. 這將修復編譯器錯誤並且a == b可以正常工作。

但目前您不能將結構傳遞給散列函式sha256,例如keccak256https ://github.com/ethereum/solidity/issues/980 。所以通常結構的成員必須相互比較。一個更具體的問題可能有助於發現可能的優化(例如,根據應用程序設計,可能有一些方法可以減少所需的比較)。

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