Solidity

為什麼 etherscan 交易中沒有顯示乙太幣值?

  • August 17, 2022

我呼叫了一個fund函式並向該合約發送了 0.55 乙太幣。現在呼叫withdraw函式,合約中的所有乙太幣都回到了我的元遮罩賬戶。但在下面的螢幕截圖中,您可以看到提款功能,在值部分顯示 0。它應該顯示 0.55。 在此處輸入圖像描述 有人能告訴我為什麼嗎?

實際上Withdraw()0.55 eth 被發送到你的錢包。您可以點擊交易或點擊這裡查看。

但是為什麼在這個截圖中沒有顯示呢?讓我們一步一步理解。

首先讓我們了解為什麼在呼叫fund()0.55 eth 時顯示

fund()是一個應付函式。因此,當您呼叫 時fund(),您在此處發送msg.value參數為0.55e18。這就是為什麼它在螢幕截圖中顯示 0.55 eth 作為參數。因此 0.55 eth 被轉移到智能合約中。請記住,在此螢幕截圖中,僅msg.value顯示了參數。

msg.value參數是指使用者發送了多少乙太幣。下面的電話會讓你清楚。

FundMe.fund({"from":account,"value":Wei(0.55e18)}), 這是你打的電話。這"value"msg.value0.55 eth

現在讓我們了解為什麼 0.55 eth 沒有顯示在withdraw()

這裡withdraw()也是不需要的支付功能。

Fund.wihtdraw({"from":account})是你的電話。在這裡你沒有通過任何msg.value,因為你沒有從你的賬戶向智能合約發送任何乙太幣。這就是為什麼它顯示 0 eth。

不過,智能合約已經向你的錢包發送了 0.55 eth。您的呼叫仍然有msg.value參數為 0。

請記住,螢幕截圖中的值只是msg.value參數。它只意味著有多少乙太幣從你的錢包轉移到智能合約。

我希望這有幫助。

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