Die Transaktion wird aufgrund der Übertragungsfunktion nicht bestätigt, selbst nachdem die Adresse zahlbar gemacht wurde

Die finaliseRequest-Transaktion wird nicht bestätigt, egal was ich tue. Ich bin mir sicher, dass es an der Übertragungsfunktion scheitert. Ich hatte die Adresse auch auf Adresse zahlbar gemacht und die Funktion auch geändert. Jede Hilfe wäre sehr willkommen.

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;
    }
}
Hallo und willkommen bei Ethereum StackExchange! Können Sie uns etwas mehr darüber erzählen, was der Fehler ist, den Sie erhalten, wenn Sie versuchen, es auszuführen?

Antworten (1)

Sieht so aus, als hättest du keinen Ether in deinem Vertrag. Fügen Sie payableIhrem Vertrag eine Fallback-Funktion hinzu und übertragen Sie etwas Ether dorthin, bevor Sie von dort übertragen.

oder machen Sie finalizeRequestdie Anfrage abhängig von Ihrer Logik zahlbar.

function finalizeRequest (uint index) public payable restricted {

Markieren Sie die Anfrage auch als abgeschlossen, bevor Sie Ether übertragen. Es ist ein Sicherheitsproblem, das nicht mit Ihrer Frage zusammenhängt.

Es tut mir leid, aber die Zahlung war bereits da, aber es funktioniert immer noch nicht
Außerdem ist es im Remix, also hat es schon Äther drin
@Vikranth sendest du genug Ether beim FinalizeRequest-Aufruf?
@Vikranth willkommen, wenn du meine Antwort akzeptierst, würde ich das zu schätzen wissen :)