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.
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.
PetrosM
Bezirk
Giuseppe Bertone
Bezirk
Giuseppe Bertone
Bezirk
PetrosM
Bezirk