Solidity

keccak256 在solidity 中的等價物是多少?

  • March 28, 2022

我將獲得與 keccak256 在solidity 中產生的相同值。

這是我的solidity文件中的程式碼,我想在javascript文件中使用ethersor獲得相同的值web3

bytes32 node = keccak256(abi.encodePacked(nodeString));

abi.encodePacked(nodeString))通過使用得到了相同的值ethers.utils.solidityPack

const abiEncodedPackedString = ethers.utils.solidityPack(['string'], [nodeString]);

但是當我嘗試時ethers.utils.solidityKeccak256,結果與nodesolidity中的不同。

const nodeInJavascript = ethers.utils.solidityKeccak256(['string], [abiEncodePackedString]);

我也嘗試過ethers.utils.keccak256(abiEncodePackedString),但我也無法得到結果。

從文件https://docs.ethers.io/v5/api/utils/hashing/有兩種方法可以實現這一點。

  • ethers.utils.keccak256:它接受類似字節的序列,因此您必須將字元串轉換為字節序列ethers.utils.toUtf8Bytes
ethers.utils.keccak256(ethers.utils.toUtf8Bytes("hola"))

0x8aca9664752dbae36135fd0956c956fc4a370feeac67485b49bcd4b99608ae41

  • ethers.utils.id
ethers.utils.id("hola")

0x8aca9664752dbae36135fd0956c956fc4a370feeac67485b49bcd4b99608ae41

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