Creé Ethereum Private Network y extraje suficiente éter. Implementé un contrato inteligente 'Hello World' e intenté ejecutar las funciones en el contrato implementado.
Pero el contrato no se ejecutará debido a la escasez de gasolina.
He incluido el código del contrato para su referencia.
pragma solidity ^0.4.2;
contract HelloWorld {
uint public balance;
function HelloWorld(){
balance=1000;
}
function deposit(uint _value) returns (uint _newValue){
balance += _value;
return balance;
}
}
He ejecutado con éxito este contrato usando browsersolidity y truffle. Pero no se ejecutará con Ethereum Wallet.
Después de solidity 0.4.0, debe especificar "pagadero" para cualquier función que reciba cualquiera. Previene el envío de ether a funciones que no lo esperan y no saben cómo manejarlo. Como habrás adivinado, el envío a funciones no pagables arroja resultados como los que estás viendo.
No veo una razón obvia por la que su contrato existente no se ejecute mientras no envíe valor con el mensaje. Probablemente valga la pena explorar.
Como alternativa, agregué pagos para que pueda transferir cualquiera de los dos (parece que se enviaron 4 en la captura de pantalla) sin la excepción. También ajustó ligeramente los parámetros y las partes internas para que el "valor" sea el valor real recibido.
pragma solidity ^0.4.2;
contract HelloWorld {
uint public balance;
function HelloWorld(){
balance=1000;
}
function deposit() payable returns (uint _newValue){
balance += msg.value;
return balance;
}
}
Espero eso ayude.
Rob Hitchens
crissi mariam robert