Solidity
Solidity Keccak256 原始數據與 abi 編碼數據
我是新來的。我正在嘗試將一些數據散列儲存到區塊鏈中。
keccak256(abi.encodePacked( <data input> ))
我看到了一些用於計算雜湊的線上教程。我想知道我們為什麼abi.encodePacked( <data input> )
要對原始數據進行編碼。有什麼問題keccak256(raw data)
?
它只是歸結為什麼類型
<data input>
。
keccak256
需要一個字節數組,僅此而已。因此,如果您的數據已經是類型bytes
,則沒有區別:function equality() public pure returns (bool) { bytes memory test = "0x01020304"; // True return keccak256(test) == keccak256(abi.encodePacked(test)); }
如果
<data input>
是任何其他類型,那麼abi.encodePacked
或者abi.encode
是轉換可變數量的參數的方法,可能是不同的類型,bytes
以允許使用 keccak256。我希望這能回答你的問題。