Ether
使用看似符合 ERC20 標準的代幣有哪些風險?
假設有人向我的 ETH 地址發送了一些 ERC20(據說)代幣。然後我使用
transfer()
函式將這些令牌發送到其他地址。問題是 - 通過使用“轉移”功能,我是否有可能在發送代幣的同一地址上失去我的乙太幣或其他代幣?或者我是否有可能在同一個密鑰庫中失去我的乙太幣或代幣?我問的原因是這樣的:
- 每次我處理一個據稱是新的 ERC20 代幣時,我是否必須成為可靠的專家並進行智能合約程式碼審查?
- 如果我不是 Solidity 專家並且不想查看我將要使用的 ERC20 合約的 Solidity 程式碼,會有什麼風險?
風險非常小。
EIP-20 風格的
transfer()
功能不能
- 移動你的乙太幣,因為你需要手動為錢包中的乙太坊交易添加餘額(發送交易時的金額欄位)
- 移動其他代幣,就像
transfer()
呼叫transfer()
第三方代幣合約一樣。惡意合約呼叫將來自惡意智能合約地址,而不是來自您的錢包地址,因此它無法訪問您的錢包代幣。您首先需要先執行顯式 EIP-20approve()
呼叫。- 實踐中最大的風險是提供
approve(amount)
不受信任或後來被攻擊者接管的智能合約。他們可以將代幣從您的錢包中取出,獲得您批准的任何金額(通常是無限的)。