La transacción no se confirma debido a la función de transferencia incluso después de hacer que la dirección sea pagadera

La transacción finaliseRequest no se confirma sin importar lo que haga. Estoy seguro de que está fallando en la función de transferencia. Hice la dirección a la dirección pagadera también y también cambié la función. Cualquier ayuda sería muy apreciada.

contract InsuranceClaim{
    struct Request {
        address payable insuranceRecipient;
        string personName;
        uint value;
        address payable hospitalRecipient;
        bool complete;

    }
    Request[] public requests;
    address public claimer;

    constructor (address creator) public{
        claimer = creator;
    }

    modifier restricted(){
        require(msg.sender==claimer);
        _;
    }

    function createRequest(string memory personName,address payable insuranceRecipient,uint value,address payable hospitalRecipient) public restricted{
        Request memory newRequest = Request({
            insuranceRecipient:insuranceRecipient,
            value:value,
            personName:personName,
            hospitalRecipient:hospitalRecipient,
            complete:false
        });
        requests.push(newRequest);
    }

    function finalizeRequest (uint index) public payable restricted{
        Request storage request = requests[index];
        require(!request.complete);
        request.hospitalRecipient.transfer(request.value);
        request.complete = true;
    }
}
¡Hola y bienvenido a Ethereum StackExchange! ¿Podrías contarnos un poco más sobre cuál es el error que obtienes cuando intentas ejecutarlo?

Respuestas (1)

Parece que no tienes éter en tu contrato. Agregue payablela función de respaldo a su contrato y transfiera algo de éter allí antes de transferirlo.

o haga finalizeRequestla solicitud pagadera según su lógica.

function finalizeRequest (uint index) public payable restricted {

Además, marque la solicitud como completa antes de transferir ether. Es un problema de seguridad que no está relacionado con su pregunta.

Lo siento, pero Payable ya estaba allí, pero todavía no funciona.
También está en remix, por lo que ya tiene éter.
@Vikranth, ¿envía suficiente éter en la llamada finalizeRequest?
@Vikranth bienvenido, si acepta mi respuesta, lo agradecería :)