Eine der einfachsten Möglichkeiten, Gas zu sparen, besteht darin, Ihren Code zu vereinfachen. Je weniger Code ausgeführt werden muss, desto weniger Gas wird verbraucht.
Betrachten Sie die folgende Funktion:
Solidität
Pragma Solidität ^0.8.9;
Vertragsoptimierungsbeispiel {
Adresse[] öffentliche Administratoren;
Funktion isUserAdmin(adress user) public view returns (bool) {
for (uint i = 0; i < admins.length; i++) {
if (admins[i] == user) return true;
}
return false;
}
}
Die obige Funktion verwendet eine Schleife, die umso kostspieliger wird, je mehr Administratoren hinzugefügt werden. Eine gaseffizientere Struktur würde eine Zuordnung verwenden:
Solidity
Vertrag OptimizationExampleOptimized {
attachment(address => bool) public admins;
Funktion isUserAdmin(adress user) öffentliche Ansicht gibt (bool) {
return admins[user];
}
}zurück
Denken Sie bei der Arbeit mit Ethereum daran, dass Sie für jeden Speicherplatz bezahlen. Wenn Sie dieselben Daten an mehreren Orten speichern, überlegen Sie, wie Sie sie einmal speichern und an anderer Stelle referenzieren können.
Bibliotheken in Solidity sind wiederverwendbare Codeteile. Sie können Ihnen beim Schreiben von modularem Code helfen, und da sie nur einmal bereitgestellt und mit anderen Verträgen verknüpft werden, können sie auf lange Sicht Gas sparen.
Solidity
Bibliothek SafeMath {
Funktion add(uint a, uint b) internal pure returns (uint) {
uint c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
//... andere mathematische Funktionen
}
Vertrag UsingSafeMath {
using SafeMath for uint;
uint öffentlicher Wert;
Funktion inkrementieren(uint _value) öffentlich {
value = value.add(_value);
}
}
Mit dem Schlüsselwort delete
in Solidity können Sie Variablen annullieren, die einen Teil des Gases zurückerstatten. Wenn Sie mit einem bestimmten Speicherplatz aufgebraucht sind, löschen Sie ihn, um diese Rückerstattung zu erhalten.
Während das Speichern von Daten auf der Blockchain kostspielig sein kann, ist die Protokollierung von Ereignissen vergleichsweise kostengünstiger. Wenn Sie über Daten verfügen, die nicht aus dem Vertrag gelesen werden müssen, aber überprüfbar sein sollten, sollten Sie die Verwendung von Ereignisprotokollen in Betracht ziehen.
Einige Vorgänge sind gasintensiver als andere. Zum Beispiel:
Intelligente Vertragsoptimierung für Gas ist sowohl eine Kunst als auch eine Wissenschaft. Die in diesem Kurs besprochenen Ansätze haben in Kombination das Potenzial, die Gaskosten Ihrer Verträge drastisch zu senken. Bedenken Sie, dass sich das Ethereum-Ökosystem und seine Tools, einschließlich Remix, ständig ändern. Bleiben Sie auf dem Laufenden und testen und verbessern Sie Ihre Verträge regelmäßig zur Optimierung. Die Ethereum-Community ist groß und hilfsbereit. Scheuen Sie sich also nicht, Rat oder Best Practices einzuholen. Viel Spaß beim Codieren!
Eine der einfachsten Möglichkeiten, Gas zu sparen, besteht darin, Ihren Code zu vereinfachen. Je weniger Code ausgeführt werden muss, desto weniger Gas wird verbraucht.
Betrachten Sie die folgende Funktion:
Solidität
Pragma Solidität ^0.8.9;
Vertragsoptimierungsbeispiel {
Adresse[] öffentliche Administratoren;
Funktion isUserAdmin(adress user) public view returns (bool) {
for (uint i = 0; i < admins.length; i++) {
if (admins[i] == user) return true;
}
return false;
}
}
Die obige Funktion verwendet eine Schleife, die umso kostspieliger wird, je mehr Administratoren hinzugefügt werden. Eine gaseffizientere Struktur würde eine Zuordnung verwenden:
Solidity
Vertrag OptimizationExampleOptimized {
attachment(address => bool) public admins;
Funktion isUserAdmin(adress user) öffentliche Ansicht gibt (bool) {
return admins[user];
}
}zurück
Denken Sie bei der Arbeit mit Ethereum daran, dass Sie für jeden Speicherplatz bezahlen. Wenn Sie dieselben Daten an mehreren Orten speichern, überlegen Sie, wie Sie sie einmal speichern und an anderer Stelle referenzieren können.
Bibliotheken in Solidity sind wiederverwendbare Codeteile. Sie können Ihnen beim Schreiben von modularem Code helfen, und da sie nur einmal bereitgestellt und mit anderen Verträgen verknüpft werden, können sie auf lange Sicht Gas sparen.
Solidity
Bibliothek SafeMath {
Funktion add(uint a, uint b) internal pure returns (uint) {
uint c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
//... andere mathematische Funktionen
}
Vertrag UsingSafeMath {
using SafeMath for uint;
uint öffentlicher Wert;
Funktion inkrementieren(uint _value) öffentlich {
value = value.add(_value);
}
}
Mit dem Schlüsselwort delete
in Solidity können Sie Variablen annullieren, die einen Teil des Gases zurückerstatten. Wenn Sie mit einem bestimmten Speicherplatz aufgebraucht sind, löschen Sie ihn, um diese Rückerstattung zu erhalten.
Während das Speichern von Daten auf der Blockchain kostspielig sein kann, ist die Protokollierung von Ereignissen vergleichsweise kostengünstiger. Wenn Sie über Daten verfügen, die nicht aus dem Vertrag gelesen werden müssen, aber überprüfbar sein sollten, sollten Sie die Verwendung von Ereignisprotokollen in Betracht ziehen.
Einige Vorgänge sind gasintensiver als andere. Zum Beispiel:
Intelligente Vertragsoptimierung für Gas ist sowohl eine Kunst als auch eine Wissenschaft. Die in diesem Kurs besprochenen Ansätze haben in Kombination das Potenzial, die Gaskosten Ihrer Verträge drastisch zu senken. Bedenken Sie, dass sich das Ethereum-Ökosystem und seine Tools, einschließlich Remix, ständig ändern. Bleiben Sie auf dem Laufenden und testen und verbessern Sie Ihre Verträge regelmäßig zur Optimierung. Die Ethereum-Community ist groß und hilfsbereit. Scheuen Sie sich also nicht, Rat oder Best Practices einzuholen. Viel Spaß beim Codieren!