Solidity
事件不完全正常(沒有經驗的 OP)
pragma solidity ^0.4.0; contract CustodialContract{ address client; bool public _switch = false; event UpdateStatus(string _msg); event UserStatus(string _msg, address user, uint amount); function CustodialContract(){ client = msg.sender; } modifier IfClient(){ if(msg.sender !=client){ revert(); } _; } function depositFunds() payable{ emit UserStatus('User has deposited money!', msg.sender, msg.value); } function withdrawFunds(uint amount) IfClient{ if(client.send(amount)){ emit UpdateStatus('User has transferred some money!'); _switch=true; } else{ _switch = false ; } } function getFunds() constant returns(uint) { emit UpdateStatus('Someone called a getter!'); return address(this).balance; }
我知道這不是錯誤,但我對 Solidity 缺乏經驗是造成這種情況的原因。無論如何,我想觸發 UpdateStatus(‘Someone called a getter!’)。我在 Solidity VM 上收到此錯誤。
(瀏覽器/Untitled.sol:38:14:警告:函式聲明為視圖,但此表達式(可能)修改狀態,因此需要不可支付(預設)或應付。)
我想要分解此錯誤的解釋以及有關如何觸發事件的建議。
問題是該函式
getFunds
被定義為常量,但它包含一個事件發射,只需將其更改為public
:function getFunds() public returns(uint) { emit UpdateStatus('Someone called a getter!'); return address(this).balance; }
希望這可以幫助