Estoy tratando de hacer una smart contract
función y ejecutarla en el cambio de estado. En mi ejemplo a continuación, esta función es finish
. Debe ejecutarse automáticamente cuando state
cambia a end
. ¿Es esto posible con Solidity?
pragma solidity ^0.4.16;
contract SmartContract {
address owner;
string state;
string status;
function SmartContract() public {
status = 'Pending';
owner = msg.sender;
}
event update(string _msg, string _state);
function getState() public constant returns(string) {
return state;
}
function getStatus() public constant returns(string) {
return status;
}
function setState(string _state) public returns(string) {
state = _state;
return state;
}
function finish() public {
if (keccak256(state) == keccak256("end")) {
status = 'Completed';
update("Completed", state);
selfdestruct(owner);
}
}
function () public payable {
}
}
Estoy bastante seguro de que no es posible usar un contrato inteligente como un cron. Investigaré más y volveré aquí si encuentro más al respecto.
Pero por ahora, puede crear un trabajo/servicio que pueda ver su evento de actualización ( https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethfilter ) y luego ejecutar una transacción que llame a finish().
O puede agregar un control if dentro de setState. Si estado == "finalizar", ejecutar finish()
.
StanislavL
if(_state=="end") {finish();}
?