Re: [闲聊] 冷钱包出现陌生的交易纪录

楼主: MACD (MACD)   2022-12-22 13:09:46
这个问题真的很有趣,我原本也以为钓鱼是用类似的地址转币给你,让偷懒的人手滑转错。
文中说钓鱼的人可以用自己的钱包转币出去是满奇怪的,我就去查一下USDC的合约,里面的
transferFrom code还真的允许任何人调用这个function 转出0块代币。
https://i.imgur.com/cOhNuZS.jpg
code写<=也就是=0也是可以正常调用function
而没有approve过的状况下,allowed值会等于0
所以任何人call tranferFrom从你的钱包转出0 USDC是可以的,你的钱包就会出现转出纪录
作者: inuyaksa (茶)   2022-12-22 13:21:00
酷,感谢说明
作者: adamcha (生于安乐 死于忧患)   2022-12-22 13:26:00
赞 感谢分享
作者: goodyW (古迪)   2022-12-22 13:36:00
看文章涨知识
作者: abccbaandy (敏)   2022-12-22 13:39:00
真是神奇的逻辑...是为了测试?
楼主: MACD (MACD)   2022-12-22 13:42:00
写<=其实没有错,我认为应该要再加&& value<>0,避免这种状况
作者: Ayukawayen (亚布里艾尔发芽>//<)   2022-12-22 13:47:00
可以加一个allowed>0检查,因为授权值>0情况下转0元给过好像很合理。
楼主: MACD (MACD)   2022-12-22 13:49:00
是也可以,只是转0元真的不是正常交易会做的事情
作者: twrichgod (twrichgod)   2022-12-22 13:51:00
感谢,真的长知识了。只是不懂为什么要这样设计...
作者: aass1122 ( )   2022-12-22 13:52:00
好奇 这样的意义是?
作者: Ayukawayen (亚布里艾尔发芽>//<)   2022-12-22 13:54:00
不过其实照规范作,allowed=0时转0元就是给过没错转0元在EIP有特别写明了应该视同正常tranfer处理尤其是Transfer事件要照常发。有些合约有用处。
作者: DarkerDuck (達克鴨)   2022-12-22 16:34:00
0值交易也是有用啦,最常用的就是用来取消交易https://tinyurl.com/msfynxa5把要取消的交易用同一个nonce的0值交易就可以在未被确认前替换取消掉了另外一种就是用这种null transaction来update nonce当然像这种allow所对应的外部智能合约调用就不太需要0值交易才是
作者: sazabijiang (笔落惊风雨诗成泣鬼神)   2022-12-22 17:22:00
推 真是太意外了
作者: Ayukawayen (亚布里艾尔发芽>//<)   2022-12-22 18:13:00
ERC20的0值交易情境比较多是在智能合约内部交易的情况比方处理找零的时候可以算出找x元就直接转x过去,不用去检查算出来是x=0的时候还要特别处理。
作者: xxxrecoil (xxxrecoil)   2022-12-22 19:08:00
没想到真的是这样
作者: jay741025 (小诚)   2022-12-22 19:30:00
0元交易会怎么样吗? 还蛮好奇用途是啥
楼主: MACD (MACD)   2022-12-22 20:35:00
不会怎样,就看你会不会上当而已
作者: ho83leo (LWHo)   2022-12-22 22:36:00
好奇issue 没人报吗?
作者: puipui (puipui)   2022-12-23 09:35:00
这种写法是允许他人在自己的钱包留下转出纪录的 这种写法就算不是 bug 我也觉得是 B > Z
作者: evilcherry (邪離子)   2022-12-23 13:14:00
但在ERC20上,减法比if较便宜吧?
作者: Kimg (Kimg)   2022-12-23 17:08:00
冷知识增加
作者: fvfv (谁是你学妹!!哼)   2022-12-26 14:13:00

Links booklink

Contact Us: admin [ a t ] ucptt.com