Solidarvertrag zu teuer

Mit dem steigenden Preis von Ethereum wird mein Vertrag zu teuer für das, wofür ich ihn verwende. Was ich brauche, ist ein Vertrag, in dem eine Zeichenfolge gespeichert und bei Bedarf abgerufen wird. Mein aktueller Code ist

contract demo {
   string public name = "some32bitString";
   function returnValue() constant returns (string){
      return name; 
   } 
}

Gibt es eine Problemumgehung? oder eine andere Möglichkeit, dies kostengünstiger zu machen? Derzeit beträgt die TX-Gebühr bei Etherscan 0,00693.

Antworten (2)

Die Bereitstellungskosten für diesen Vertrag betragen ~148.000 GAS.

Das Folgende ist eine billigere Version, die ~42.000 GAS kostet:

pragma solidity ^0.4.16;

contract Contract {

    function returnValue() constant returns (bytes4) {
        return "abcd";
    }
}

Nochmals günstiger kann es werden, wenn Sie der ÐApp die Dekodierungsphase der Zeichen überlassen. Dies ist eine Version, die ~30.000 GAS kostet:

pragma solidity ^0.4.16;

contract Contract {

    function returnValue() constant returns (uint32) {
        return 0xFFFFFFFF;
    }
}

Was ist teuer? Um den Vertrag bereitzustellen (auf die Blockchain zu setzen) oder die Funktion aufzurufen?

Sie können ohne Transaktion auf das Funktionsergebnis zugreifen, da der String öffentlich in der Blockchain gespeichert wird. Wenn Sie es jedoch von einem anderen Vertrag aus anrufen, können Kosten anfallen.

Wenn Sie viele solcher Verträge in die Blockchain stellen, wird es wahrscheinlich weniger teuer sein, nur einen Vertrag mit mehreren Zeichenfolgen zu haben, da für die Bereitstellung eines Vertrags einige Pauschalkosten anfallen müssen.

Hallo, danke für die Bearbeitungen. Es ist teuer, es einzusetzen. Kann ich einen Vertrag haben und dann einfach Zeichenfolgen hinzufügen? wie ein Array von Strings? Und wenn ja, kann ich so viele hinzufügen, wie ich möchte?
Ja, aber Sie müssen jedes Mal Gebühren zahlen, wenn Sie es aktualisieren. Ich vermute, dass (n * Bereitstellungsgebühren) > (Bereitstellungsgebühren + n*(Aktualisierungsgebühren)) wenn n groß genug ist, aber ich bin mir da nicht so sicher. Auf jeden Fall ist Speicher in Ethereum nicht billig.
Vielleicht liegt es an mir, aber zum aktuellen Kurs kostet Ihr Einsatz nur etwas mehr als 2 $ (1 ETH = 337 $ * 0,00693 = 2,33 $). Ist es teuer? Es ist ein intelligenter Vertrag, der in der Blockchain für immer Bestand haben wird, das scheint mir ziemlich fair zu sein ...
@GiuseppeBertone Die Frage ist nicht, ob es teuer ist oder nicht, sondern wie man es billiger macht. Wenn Sie eine Million solcher Verträge bereitstellen, wird es wichtig, den Preis so weit wie möglich zu senken. Und ich würde sagen, es ist eine gute Praxis, da es auch die Schwierigkeit verringert, die Blockchain zu überprüfen.
Verstanden, ich werde es billiger machen :) Trotzdem verstehe ich wirklich nicht, warum ein solcher Vertrag nützlich sein sollte, also scheint mir, dass etwas im Anwendungsdesign nicht stimmt, mehr als ein Problem mit der Optimierung der GAS-Ausgaben.
Ich weiß nicht, ob es nützlich ist, aber es hilft zu verstehen, wie das Gas funktioniert. Jedenfalls ist deine Antwort sehr hilfreich.
Nun, bei der Anwendung geht es darum, eine Eingabe einer Zeichenfolge in das Ethereum zu machen und sie bei Bedarf abzurufen. und da ich viele davon brauche, summiert sich das zu einer großen menge. Übrigens, Guiseppe, danke für deine obige Antwort. Ich werde es überprüfen, wenn ich an meinem PC bin und Ihnen Bescheid geben
Was Giuseppe Bertone sagt, ist, dass Blockchain-Speicher nicht der billigste ist. Vergleichen Sie den Preis eines USB-Sticks mit der Anzahl der Strings, die Sie für denselben Preis auf die Blockchain legen können.