Solidity

檢查 msg.value > 0 的原因

  • April 30, 2019

我遇到了已發布的智能合約(比如來自 ConsensSys 的這個),它檢查msg.value其應付函式是否嚴格大於零。

在想知道是否msg.value可以否定之後,我發現這個問題的答案說不可能。

因此,這些檢查對我來說似乎是不必要的。這是為了確保不會成為另一個負交易價值漏洞的受害者嗎?零價值交易會構成威脅嗎?

一般來說,0價值交易不會構成威脅。然而,在實踐中,不接受不包含任何價值的交易是合乎邏輯的,尤其是在其全部目的是轉移價值的交易中。

由於與所有其他數字相比的唯一性,許多實現要求value大於這樣做。例如,有人這樣做是因為它可能是邏輯流程中某個點的等式中的除數,這會拋出(因為你不能除以 0)。0``0``value

在 ERC20 標準的設計過程中,關於如果沒有代幣轉移交易失敗的問題進行了長時間的討論。最終決定價值交易沒有問題0,並且遵循規範的代幣允許這樣做。

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