Metamask
發現上面有隨機代幣的舊錢包。如果我嘗試在 UNISWAP 上發送或出售這些,我會被黑客入侵嗎?
我有一個舊的 ETH 地址,並且收到了一些空投或隨機代幣。我如何檢查以確保這些令牌不是騙局。是否有可能如果我發送這些代幣或嘗試出售它們,它會啟動一些隨機功能來發送我所有的其他代幣?所有 ERC20 代幣合約是否都相同,或者它們可以被修改為具有惡意功能並且它仍然會出現在 metamask 中?
好的,所以沒有你的錢包地址或代幣合約地址,我只能告訴你如何查看它是否是一個騙局去 etherscan.com 並像這樣搜尋你的錢包地址
如果你的錢包裡有代幣,它應該會顯示一個寫著代幣的東西,如果你點擊它會顯示一個像這樣的代幣列表
現在瀏覽寫和讀合約標籤上列出的所有功能,尋找任何可疑的東西希望這會有所幫助
這是 openzeppelin 的批准功能:
/** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; }
只是為了確定這裡是他們的 _msgSender():
/** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; }
發送代幣一般有兩種方式,可選第三種方式:
- 直接——你在 ERC20 中呼叫 transfer()
- 通過批准——您批准另一個契約使用您的資金,然後該契約通過呼叫該 ERC20 上的 transferFrom() 提取資金
- 通過簽署的批准,您簽署一項交易,批准您的資金供另一份契約使用。我不知道任何使用簽名批准的 ERC20,所以這基本上可以忽略。
對於普通的 ERC20,方法 1 和 2 都需要你直接與 ERC20 智能合約互動——你不能通過中間合約批准或轉移資金。這意味著通過 Uniswap 或其他一些受信任的協議將是安全的,因為通常根本沒有任何方法可以通過中間合約來批准或轉移代幣。當您批准使用您的代幣的契約時,Metamask 還會特別警告您,因此這是另一層防禦。
當然,我什至不會費心出售詐騙代幣以防萬一。但我的理解是,只要您直接與受信任的協議(例如 Uniswap)進行互動,就應該沒問題。
注意事項:
- 這些假設僅適用於普通 ERC20 代幣,它應該佔所有 ERC20 代幣的 99% 以上。如果您擁有並關心一些以不同方式做事的奇怪代幣,那麼該代幣很可能處於危險之中。
-DYOR