Solidity
為什麼 etherscan 交易中沒有顯示乙太幣值?
我呼叫了一個
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.value
0.55 eth現在讓我們了解為什麼 0.55 eth 沒有顯示在
withdraw()
這裡
withdraw()
也是不需要的支付功能。這
Fund.wihtdraw({"from":account})
是你的電話。在這裡你沒有通過任何msg.value
,因為你沒有從你的賬戶向智能合約發送任何乙太幣。這就是為什麼它顯示 0 eth。不過,智能合約已經向你的錢包發送了 0.55 eth。您的呼叫仍然有
msg.value
參數為 0。請記住,螢幕截圖中的值只是
msg.value
參數。它只意味著有多少乙太幣從你的錢包轉移到智能合約。我希望這有幫助。