Estoy tratando de probar este código de muestra:
contract MyContract {
function foo(address a) returns (uint) {
// send ether with default 21,000 gas
// likely causes OOG in callee
a.send(1 ether);
// send ether with all remaining gas
// but no success check!
a.call.value(1 ether)();
// RECOMMENDED
// send all remaining gas
// explicitly handle callee throw
if(a.call.value(1 ether)()) throw;
return a.balance;
}
Muy simple, solo envíe 1 éter a una dirección específica, luego devuelva el saldo de la dirección, sin embargo, siempre obtengo 0 como salida, lo que significa que el envío falló:
¿qué ocurre?
Lo que falta es el modificador pagadero .
Probé esta pieza de código:
contract MyContract {
function foo(address a) payable returns (uint) {
a.call.value(1 ether)();
return a.balance;
}
}
Lo implementé y luego ejecuté con Value establecido en 2 (es decir, 2 Ether) y funciona. Aquí está la salida:
La salida es 1 ETH en Wei.
lukasz zuchowski
domo algunos