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('Кто-то вызвал геттера!'). Я получаю эту ошибку на виртуальной машине Solidity.
(browser/Untitled.sol:38:14: Предупреждение: функция объявлена как представление, но это выражение (потенциально) изменяет состояние и, таким образом, требует неоплачиваемого (по умолчанию) или оплачиваемого.)
Я хотел бы получить объяснение, разбивающее эту ошибку, и предложения о том, как запустить событие.
Проблема в том, что функция getFunds
определена как константа, но она содержит эмиссию событий, просто измените ее на public
:
function getFunds() public returns(uint) {
emit UpdateStatus('Someone called a getter!');
return address(this).balance;
}
Надеюсь это поможет
Дуриан Джейкин
Хайме
Дуриан Джейкин