Tengo este contrato simple que tiene un método pagadero.
contract Betting is usingOraclize {
function Betting() {
//...
}
function sendEther() payable returns (uint) {
return msg.value;
}
El comportamiento esperado es aceptar ether y almacenarlo en la dirección del contrato. Todo funciona bien, incluida la transacción, excepto que no aparece el saldo. Sigue siendo cero. Aquí están los detalles etherscan del contrato.
Las últimas 2 transacciones se realizaron utilizando el sendEther
método invocado utilizado web3.js. Todavía el saldo del contrato es cero.
Para aceptar el Ether de la dirección de la billetera, debe crear una función de respaldo predeterminada que se invocará de forma predeterminada mientras transfiere Ether a ella.
contract Betting is usingOraclize {
/* This event is triggered when this contract receives Ether */
event Transfer(address _from, uint256 _value);
function Betting() {
//...
}
// This function will get triggered when you send Ether to this contract address
function () payable {
Transfer(msg.sender, msg.value);
}
}
Para obtener más referencia, consulte la función de respaldo en los documentos de solidez
kannan ravindran
kannan ravindran
Karthikeyan Thangavel
mapping (address => uint256) public fundValue; function () payable{ fundValue[msg.sender] = msg.value; }
luego puede acceder a la función de mapeo como fundValue [dirección];