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