Solidity

Solidity Keccak256 原始數據與 abi 編碼數據

  • May 27, 2022

我是新來的。我正在嘗試將一些數據散列儲存到區塊鏈中。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。

我希望這能回答你的問題。

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