Fallback-Function

不總是呼叫應付回退功能嗎?

  • November 28, 2018

在智能合約安全建議中,我讀到以下內容:

" 請記住,Ether 可以被強制發送到一個帳戶。謹防編寫嚴格檢查合約餘額的不變數。

攻擊者可以強行將 wei 發送到任何帳戶,這是無法阻止的(即使使用執行 revert() 的備份函式也不行)。

攻擊者可以通過創建一個合約,用 1 wei 資助它,並呼叫 selfdestruct(victimAddress) 來做到這一點。在victimAddress 中沒有呼叫任何程式碼,因此無法阻止。"

這是否意味著備份函式不能執行 revert() 或者這是否意味著如果以這種方式將乙太幣發送到合約,則不會呼叫備份函式?

payable以下三種場景不呼叫fallback函式:

  1. 乙太幣以自毀方式發送

2)通過將合約設置為獎勵目標,從挖礦中發送乙太幣

  1. 乙太幣在合約存在於該地址之前被發送到該地址。

因此,從本質上講,在這三種情況下,您無法阻止將 Ether 發送到合約中。

您可以在此處閱讀更多相關資訊:https ://medium.com/@alexsherbuck/two-ways-to-force-ether-into-a-contract-1543c1311c56

那是對的。如果乙太幣通過另一個合約的自毀發送到一個合約,接收合約沒有任何辦法阻止它。不執行任何程式碼,包括回退函式。

事實上,這甚至可以用來將乙太幣發送到一個根本沒有支付功能的功能。

這也適用於直接將乙太幣開採到合約地址,或者在部署合約之前通過正常交易將其發送到該地址的情況(如果您知道將執行部署交易的地址,則可以預測合約的地址)。

引用自:https://ethereum.stackexchange.com/questions/63192