Gasschätzung unendlich

Das ist mein Code

pragma solidity ^0.4.19;

contract FirstContract
{
    address creator;
    uint256 priceOfATransaction = msg.value;
    uint256 totalAmount;
    address buyer;

    function FirstContract() public
    {
        creator = msg.sender;
    }

    function perSaleDetails() public
    {
        totalAmount += priceOfATransaction;
        //=========Detail of an order==========//
        priceOfATransaction = 0;
    }

    function sellerMoneey() public returns(bool)
    {
        if(msg.sender == creator){
            if(!creator.send(totalAmount)) {
                return false;
            }
        }
    }
}

REMIX-WARNUNG:-

Gasbedarf der Funktion FirstContract.sellerMoneey() hoch: unendlich. Wenn der Gasbedarf einer Funktion höher ist als die Sperrgasgrenze, kann sie nicht ausgeführt werden. Bitte vermeiden Sie Schleifen in Ihren Funktionen oder Aktionen, die große Speicherbereiche ändern (dazu gehört das Löschen oder Kopieren von Arrays im Speicher).

Was muss ich ändern

Dies kann ein Fehler im Remix sein. Es kann Gas nicht einmal für einfache Funktionen abschätzen.

Antworten (1)

Jede Verwendung von send()und transfer()löst normalerweise diese Compiler-Warnung auf REMIX aus, selbst wenn es keine Schleifen oder Speicheränderungen gibt.

Ich nehme an, Sie fangen gerade erst mit Solidität und intelligenten Verträgen an, also gibt es ein paar Dinge, die Sie in Zukunft lernen werden. Vor allem bei Zeilen wie uint256 priceOfATransaction = msg.value;.

Ihr Code kann sicher kompiliert werden.

Danke. Aber mein Vertrag läuft. Was ich versuche herauszufinden, ist, dass jedes Mal, wenn ich etwas Äther an den Vertrag sende, die Transaktion nicht abgeschlossen wird und fehlschlägt. Können Sie einen Code vorschlagen, der den Ether akzeptiert und ihn dann an eine andere Adresse sendet. Vielen Dank im Voraus.
@AgnishChakraborty Nun, das ist eine ganz andere Frage ... aber keine Ihrer Funktionen ist payable. Andernfalls wird Ihr Vertrag rückgängig gemacht. Sie brauchen eine payableMethode, um etwas im Vertrag zu erhalten.
@AgnishChakraborty Zweitens macht dies die von mir erwähnte Zeile zu einem noch größeren Problem, da sie nur einmal priceOfATransactionfestgelegt wird msg.value, wenn der Vertrag erstellt wird.
@AgnishChakraborty Ich würde Ihnen mit dem Code helfen, aber ehrlich gesagt habe ich keine Ahnung, was Sie anfangs mit dem Zustand des Codes erreichen wollen. Wenn Sie jede Funktion ein bisschen mehr erklären, kann ich helfen.
Ich möchte einen Vertrag, der Ether akzeptieren kann. Hat zwei Funktionen, die einige übergebene Variablen berechnen können. Und eine Funktion, um das Guthaben an den Ersteller zu senden.