Solidity
如何比較兩個結構的雜湊?
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
,例如keccak256
:https ://github.com/ethereum/solidity/issues/980 。所以通常結構的成員必須相互比較。一個更具體的問題可能有助於發現可能的優化(例如,根據應用程序設計,可能有一些方法可以減少所需的比較)。