Solidity

沒有支付功能的合約可以有乙太幣嗎?

  • April 6, 2022

標題中的問題說明了一切。

據我所知,將乙太幣存入合約的唯一方法是呼叫一個payable函式,並將其設置msg.value為大於 0(當然,該函式應該成功完成而無需還原)。

但是如果沒有payable函式開始,合約的乙太幣餘額是否有可能大於0?

謝謝!

是的,合約可以在沒有任何payable功能的情況下擁有 Ether 餘額。

有四種可能的方法:

  1. 自我毀滅。另一個合約自毀(通過使用該selfdestruct功能)並將其剩餘的乙太幣發送到您的合約
  2. 挖礦目標(所謂的coinbase地址)。不能拒絕挖礦獎勵的乙太幣。
  3. 在合約存在之前發送給合約的乙太幣。
  4. 乙太幣在 Solidity 0.4 版本之前發送到合約,因為payable僅在該版本中引入

例如,可以在此處找到有關這些替代方案的更多詳細資訊:https ://medium.com/@alexsherbuck/two-ways-to-force-ether-into-a-contract-1543c1311c56

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