No se puede enviar eth a para contratar utilizando el entorno Remix

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?

Respuestas (2)

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;

    }

}
He ejecutado este código, pero obtuvo una excepción. Mi propósito es enviar éteres al contrato de prueba, por lo que no sé por qué necesito agregar pagos a la sendtestfunción.
Oh, realmente funciona bien. Simplemente olvidé establecer el valor de value. Pero, ¿puede explicar por qué es necesario agregar payablea sendtestla función?
Bueno, simplemente no puedes enviar ether a una función a menos que sea de pago. Agregar esto permite que sendtest retenga el dinero y luego envíe el dinero al otro contrato. Si desea enviarlo directamente desde su cuenta, puede crear otra función.

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 sendTestcon algún valor, este valor se transfiere al contrato. thisse refiere al contrato y por lo tanto this.addressrepresenta 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.

¿ Puede explicar por qué es necesario agregar el pago a la sendtestfunción? ¿Es solo que la función de recepción necesita este modificador?
Puede enviar éteres a una función a menos que sea de pago. Entonces, para enviar éteres a sendTest, debe agregar un modificador pagadero.
Pero mi intención es enviar éteres al contrato de prueba, su código está enviando éteres a Enviar constrct.