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;
}
Ich weiß, dass dies kein Fehler ist, aber meine Unerfahrenheit mit Solidity ist die Ursache dafür. Wie auch immer, ich möchte den UpdateStatus abfeuern ("Jemand hat einen Getter angerufen!"). Ich erhalte diesen Fehler auf der Solidity-VM.
(browser/Untitled.sol:38:14: Warnung: Funktion als Ansicht deklariert, aber dieser Ausdruck ändert (möglicherweise) den Status und erfordert daher nicht zahlbar (Standard) oder zahlbar.)
Ich hätte gerne eine Erklärung, die diesen Fehler aufschlüsselt, und Vorschläge, wie das Ereignis ausgelöst werden kann.
Das Problem ist, dass die Funktion getFunds
als konstant definiert ist, aber eine Ereignisemission enthält, ändern Sie sie einfach in public
:
function getFunds() public returns(uint) {
emit UpdateStatus('Someone called a getter!');
return address(this).balance;
}
Hoffe das hilft
Durian Jaykin
Jaime
Durian Jaykin