solidity - 为什么这个 txn 没有转移余额,我传递了与响应集完全相同的十六进制字符串
问题描述
我通过传递在 Start 函数中传递的相同字符串来调用https://etherscan.io/address/0x0c63bf5f9c1b31bd98eb2995e8ab5ba33fe31d22合约的 Try 函数。我检查了十六进制。有人可以帮我为什么尝试函数调用https://etherscan.io/tx/0x096a060d64d833c55fd83b2ea4ec209578dc3316d863de3a3de63692e8476628 没有启动余额转移。有什么吗,我不见了
解决方案
测验是骗局合同
作者通常使用一组相似的名称 ( [a-z]{2}_quiz
),但其中大多数包含相同的代码并充当蜜罐骗局。
阅读更多相关信息:
- https://medium.com/coinmonks/do-not-be-fooled-by-crypto-quiz-games-f38f72a53c78
- https://ethereum.stackexchange.com/questions/62815/trying-to-figure-out-this-2-eth-smart-contract-quiz
骗局如何运作:
攻击者使用来自另一个合约的内部调用(未出现在蜜罐“交易”或“内部调用”列表中)来调用New()
函数并将散列设置为某个垃圾值。
这个垃圾值不是Start()
函数中传递的字符串的哈希值,而且很可能甚至不是任何字符串的哈希值。
然后公开调用该Start()
函数(参见事务),看起来他们正在设置哈希,但由于这种情况而没有设置:
if(responseHash==0x0){ // it's not 0x0 anymore
responseHash = keccak256(abi.encode(_response));
question = _question;
}
推荐阅读
- youtube - 因此如何播放 Youtube 搜索结果
- mysql - MySQL (wampserver phpmyadmin) 支持 ON DELETE
- vba - How to get the default member for Ms Access objects (or any other in VBA)
- python - 如何以特定格式从excel中提取数据以及如何存储在数据库中
- android - 当用户杀死他/她的应用程序时如何让 MyfirebaseMessanginService 活着。在安卓?
- javascript - 使用 redux 全局反应原生传递状态
- c - C中带有指针的二叉搜索树
- vert.x - 如何获取现有路由的 HTTP 方法?
- ios - 缩小动画Swift
- javascript - 电话号码的正则表达式,包括国家代码,最多 18 个字符