He seguido los pasos de la documentación de solidez para realizar el trabajo de la función de respaldo. Mi código está a continuación.
pragma solidity ^0.4.0;
contract Test {
uint x;
function () payable {
}
}
contract Send {
function sendtest() returns(bool ) {
Test t = new Test();
bool res = t.send(100 ether);
return res;
}
}
El resultado de t.send() es falso. No sé qué tiene de malo. ¿Uso la instancia del contrato en lugar de la dirección del contrato o no?
esto funcionó en remix para mí, solo necesita agregar la función de pago. En la etiqueta '100 ether' también, usar wei se considera una buena práctica (o msg.value)
pragma solidity ^0.4.0;
contract Test {
uint x;
function () payable {
}
}
contract Send {
function sendtest() payable returns(bool ) {
Test t = new Test();
require(msg.value>0);
bool res = t.send(msg.value);
return res;
}
}
Si te entendí correctamente, quieres enviar éteres a tu contrato, ¿verdad? Prueba este código.
pragma solidity ^0.4.0;
contract Test {
function () payable {}
}
contract Send {
function sendtest() payable(returns bool){
bool res = this.address.send(msg.value);
return res
}
}
Cuando llama sendTest
con algún valor, este valor se transfiere al contrato. this
se refiere al contrato y por lo tanto this.address
representa la dirección del contrato.
La línea this.address.send(msg.value)
transfiere el valor del mensaje al contrato y esta línea function () payable {}
permite que el contrato reciba éteres.
sendtest
función? ¿Es solo que la función de recepción necesita este modificador?
dingdang
sendtest
función.dingdang
value
. Pero, ¿puede explicar por qué es necesario agregarpayable
asendtest
la función?el feto