La función de transferencia de solidez no funciona

Acabo de codificar la función de transferencia de éter usando REMIX IDE en Ropsten testnet.
Tiene solo dos funciones que configuran la dirección del receptor y la cantidad de éter y envían éter a la dirección del receptor.

Después de implementar el contrato y ejecutar la función "transferir", me muestra un error como el siguiente.

Error de estimación de gas con el siguiente mensaje (ver más abajo). Es probable que la ejecución de la transacción falle. ¿Quieres forzar el envío? Error: el gas requerido excede la asignación o siempre falla la transacción en chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:1401895 en chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:931969 en chrome-extension://nkbihfbeogaeaoehlefg /background.js:1:350331 en o (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:368562) en chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:353161 en chrome-extension:// nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:350331 en c (extensión de cromo://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:353437) en extensión de cromo://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1: 353475 en Ht (extensión cromada://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:362844) en Object. (extensión cromada://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:353564) en e.value (extensión cromada://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:932884) en extensión cromada://nkbihfbeogaeaoehlefnkodbef/background.jsn :1:932451 en n (extensión cromada://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:368506) en o (extensión cromada://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:368584) en extensión-cromada://nkbihfbeogkodgaeaonf /background.js:1:353161 en chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:932417 en n (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:368506) en o (chrome-extension: //nkbihfbeogaeaoehlefnkodbefgpgknn/background.js:1:368584) en la extensión de cromo:

Y mi código es este.

pragma solidity ^0.4.16;

contract test {

    address public receiver;
    uint public amount;

    function test(address _receiver, uint _amount) public {
        receiver = _receiver;
        amount = _amount;
    }

    function () public {
        receiver.transfer(amount);
        }
}

por favor, ayúdame.

Gracias.

¿Ya has llamado a test para fijar el importe y el receptor?
@RaghavSood Sí, por supuesto. al implementar el contrato, establezca la dirección del destinatario y la cantidad.

Respuestas (1)

Su función alternativa no está marcada payable.

Dado que no es pagadero, aunque establezca el receptor y la cantidad, en realidad no puede enviar tanto éter al contrato para completar la transferencia definida dentro de la función de reserva.

La adición de pagos fija el contrato:

pragma solidity ^0.4.16;

contract test {

    address public receiver;
    uint public amount;

    function test(address _receiver, uint _amount) public {
        receiver = _receiver;
        amount = _amount;
    }

    function () payable public {
        receiver.transfer(amount);
    }
}
agregar a pagar tampoco funciona. el mensaje de error está debajo. transacción para probar. (alternativa) con error: Error: el gas requerido excede la asignación o siempre falla la transacción
¿Está enviando la cantidad requerida de éter junto con la transacción? No puede transferir ether si el contrato no tiene ninguno.
¿Quieres decir en mi contrato? o la dirección de implementación?
En la transacción en la que llama a la función de reserva.
¡El problema resuelto! El contrato debe tener algunos éteres para la transferencia al receptor. Después de enviar algo de éter al contrato, la función de respaldo funciona bien. Gracias !