Solidity
keccak256 在solidity 中的等價物是多少?
我將獲得與 keccak256 在solidity 中產生的相同值。
這是我的solidity文件中的程式碼,我想在javascript文件中使用
ethers
or獲得相同的值web3
。bytes32 node = keccak256(abi.encodePacked(nodeString));
我
abi.encodePacked(nodeString))
通過使用得到了相同的值ethers.utils.solidityPack
。const abiEncodedPackedString = ethers.utils.solidityPack(['string'], [nodeString]);
但是當我嘗試時
ethers.utils.solidityKeccak256
,結果與node
solidity中的不同。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