看板 DigiCurrency 關於我們 聯絡資訊
這個問題真的很有趣,我原本也以為釣魚是用類似的地址轉幣給你,讓偷懶的人手滑轉錯。 文中說釣魚的人可以用自己的錢包轉幣出去是滿奇怪的,我就去查一下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://www.ptt.cc/bbs/DigiCurrency/M.1671685788.A.6EC.html
inuyaksa: 酷,感謝說明 12/22 13:21
adamcha: 讚 感謝分享 12/22 13:26
goodyW: 看文章漲知識 12/22 13:36
abccbaandy: 真是神奇的邏輯...是為了測試? 12/22 13:39
MACD: 寫<=其實沒有錯,我認為應該要再加&& value<>0,避免這種狀 12/22 13:42
MACD: 況 12/22 13:42
Ayukawayen: 可以加一個allowed>0檢查,因為授權值>0情況下轉0元 12/22 13:47
Ayukawayen: 給過好像很合理。 12/22 13:47
MACD: 是也可以,只是轉0元真的不是正常交易會做的事情 12/22 13:49
twrichgod: 感謝,真的長知識了。只是不懂為什麼要這樣設計... 12/22 13:51
aass1122: 好奇 這樣的意義是? 12/22 13:52
Ayukawayen: 不過其實照規範作,allowed=0時轉0元就是給過沒錯 12/22 13:54
Ayukawayen: 轉0元在EIP有特別寫明了應該視同正常tranfer處理 12/22 13:55
Ayukawayen: 尤其是Transfer事件要照常發。有些合約有用處。 12/22 13:56
DarkerDuck: 0值交易也是有用啦,最常用的就是用來取消交易 12/22 16:34
DarkerDuck: https://tinyurl.com/msfynxa5 12/22 16:35
DarkerDuck: 把要取消的交易用同一個nonce的0值交易就可以在未被 12/22 16:36
DarkerDuck: 確認前替換取消掉了 12/22 16:36
DarkerDuck: 另外一種就是用這種null transaction來update nonce 12/22 16:41
DarkerDuck: 當然像這種allow所對應的外部智能合約調用 12/22 16:42
DarkerDuck: 就不太需要0值交易才是 12/22 16:43
sazabijiang: 推 真是太意外了 12/22 17:22
Ayukawayen: ERC20的0值交易情境比較多是在智能合約內部交易的情況 12/22 18:13
Ayukawayen: 比方處理找零的時候可以算出找x元就直接轉x過去,不用 12/22 18:15
Ayukawayen: 去檢查算出來是x=0的時候還要特別處理。 12/22 18:17
xxxrecoil: 沒想到真的是這樣 12/22 19:08
jay741025: 0元交易會怎麼樣嗎? 還蠻好奇用途是啥 12/22 19:30
MACD: 不會怎樣,就看你會不會上當而已 12/22 20:35
ho83leo: 好奇issue 沒人報嗎? 12/22 22:36
puipui: 這種寫法是允許他人在自己的錢包留下轉出紀錄的 這種寫法 12/23 09:35
puipui: 就算不是 bug 我也覺得是 B > Z 12/23 09:35
evilcherry: 但在ERC20上,減法比if較便宜吧? 12/23 13:14
Kimg: 冷知識增加 12/23 17:08
fvfv: 推 12/26 14:13