作者MACD (MACD)
看板DigiCurrency
标题Re: [闲聊] 冷钱包出现陌生的交易纪录
时间Thu Dec 22 13:09:46 2022
这个问题真的很有趣,我原本也以为钓鱼是用类似的地址转币给你,让偷懒的人手滑转错。
文中说钓鱼的人可以用自己的钱包转币出去是满奇怪的,我就去查一下USDC的合约,里面的
transferFrom code还真的允许任何人调用这个function 转出0块代币。
https://i.imgur.com/cOhNuZS.jpg
code写<=也就是=0也是可以正常调用function
而没有approve过的状况下,allowed值会等於0
所以任何人call tranferFrom从你的钱包转出0 USDC是可以的,你的钱包就会出现转出纪录
----
Sent from
BePTT on my iPhone15,2
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.9.64.166 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DigiCurrency/M.1671685788.A.6EC.html
1F:→ inuyaksa: 酷,感谢说明 12/22 13:21
2F:推 adamcha: 赞 感谢分享 12/22 13:26
3F:推 goodyW: 看文章涨知识 12/22 13:36
4F:推 abccbaandy: 真是神奇的逻辑...是为了测试? 12/22 13:39
5F:→ MACD: 写<=其实没有错,我认为应该要再加&& value<>0,避免这种状 12/22 13:42
6F:→ MACD: 况 12/22 13:42
7F:推 Ayukawayen: 可以加一个allowed>0检查,因为授权值>0情况下转0元 12/22 13:47
8F:→ Ayukawayen: 给过好像很合理。 12/22 13:47
9F:→ MACD: 是也可以,只是转0元真的不是正常交易会做的事情 12/22 13:49
10F:推 twrichgod: 感谢,真的长知识了。只是不懂为什麽要这样设计... 12/22 13:51
11F:推 aass1122: 好奇 这样的意义是? 12/22 13:52
12F:→ Ayukawayen: 不过其实照规范作,allowed=0时转0元就是给过没错 12/22 13:54
13F:→ Ayukawayen: 转0元在EIP有特别写明了应该视同正常tranfer处理 12/22 13:55
14F:→ Ayukawayen: 尤其是Transfer事件要照常发。有些合约有用处。 12/22 13:56
15F:推 DarkerDuck: 0值交易也是有用啦,最常用的就是用来取消交易 12/22 16:34
17F:→ DarkerDuck: 把要取消的交易用同一个nonce的0值交易就可以在未被 12/22 16:36
18F:→ DarkerDuck: 确认前替换取消掉了 12/22 16:36
19F:→ DarkerDuck: 另外一种就是用这种null transaction来update nonce 12/22 16:41
20F:→ DarkerDuck: 当然像这种allow所对应的外部智能合约调用 12/22 16:42
21F:→ DarkerDuck: 就不太需要0值交易才是 12/22 16:43
22F:推 sazabijiang: 推 真是太意外了 12/22 17:22
23F:推 Ayukawayen: ERC20的0值交易情境比较多是在智能合约内部交易的情况 12/22 18:13
24F:→ Ayukawayen: 比方处理找零的时候可以算出找x元就直接转x过去,不用 12/22 18:15
25F:→ Ayukawayen: 去检查算出来是x=0的时候还要特别处理。 12/22 18:17
26F:推 xxxrecoil: 没想到真的是这样 12/22 19:08
27F:→ jay741025: 0元交易会怎麽样吗? 还蛮好奇用途是啥 12/22 19:30
28F:→ MACD: 不会怎样,就看你会不会上当而已 12/22 20:35
29F:推 ho83leo: 好奇issue 没人报吗? 12/22 22:36
30F:推 puipui: 这种写法是允许他人在自己的钱包留下转出纪录的 这种写法 12/23 09:35
31F:→ puipui: 就算不是 bug 我也觉得是 B > Z 12/23 09:35
32F:推 evilcherry: 但在ERC20上,减法比if较便宜吧? 12/23 13:14
33F:推 Kimg: 冷知识增加 12/23 17:08
34F:推 fvfv: 推 12/26 14:13