Solidity
是否可以將代幣發送到任何智能合約地址?
這是一個 BSC 地址,但我注意到人們能夠將代幣發送到智能合約地址。我認為只有錢包才能接收兼容的代幣:
https://bscscan.com/address/0x37ee638d85e420532e35cd9dd831166514855e6d#code
這是否意味著可以將兼容的代幣發送到任何智能合約地址,並且合約會觸發“代幣接收事件”?
一般來說,你可以將代幣發送到任何地址,它都會通過。唯一的例外是如果令牌實現
safeTransfer
功能,首先確保接收地址能夠處理令牌 - 但大多數令牌不包括此類安全措施。此外,合約不知道何時收到代幣,因此不存在“代幣接收事件”。
檢測代幣轉移的問題在於,代幣轉移根本不是顯式轉移——它只是一個對代幣合約的函式呼叫,它指示合約修改其內部分類帳,其中說明哪個地址擁有多少代幣。因此,代幣合約根本不會諮詢接收方地址,也不會通知任何人(鏈上)某個地址已收到代幣。