我一直在练习Ethernaut,我被困在委托问题上了。
首先,我试图在控制台中处理这个问题。但我无法获得所有权。
var pwn = web3.utils.toHex("pwn()")
await contract.sendTransaction({data: pwn})第二,我尝试了不同的方法。最后,我得到了所有权。
var pwn_function = web3.utils.keccak256("pwn()")
await contract.sendTransaction({data: pwn_function})顺便问一下,第一种方法和第二种方法有什么区别?我可以在web3.js文档中找到web3.utils.toHex,但找不到web3.utils.keccak256。我错过了什么?
发布于 2022-10-03 18:15:26
toHex和keccak256的功能是完全不同的。
第一个简单地将一些东西(通常是一个数字)转换为十六进制格式。因此,它基本上对数据进行了不同的编码,但数据仍然完全相同--如果您愿意,可以将其转换回来。
第二种是计算给定数据的哈希值。您无法逆转该操作:无法从输出中获取输入。
我不知道为什么keccak256函数不能通过搜索web3js文档(https://web3js.readthedocs.io/en/v1.8.0/search.html?q=keccak256&check_keywords=yes&area=default)来找到。
https://ethereum.stackexchange.com/questions/136817
复制相似问题