Lektion 5

Finale der Smart Contract-Optimierung – Tipps und Tricks für Fortgeschrittene

In unseren vorherigen Lektionen haben wir grundlegende Konzepte und Tools behandelt, die Sie zur Optimierung von Gas in Ethereum-Smart-Verträgen benötigen, insbesondere mithilfe der Remix-IDE. Lassen Sie uns zum Abschluss dieses Kurses in einige fortgeschrittene Techniken und Best Practices eintauchen. In dieser letzten Lektion kombinieren wir das von uns gesammelte Wissen und stellen sicher, dass Sie ein umfassendes Verständnis der Gasoptimierung in Ethereum-Smart-Verträgen erhalten.

Refactoring und Reduzierung der Codekomplexität

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.

Übungsbeispiel

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

Daten wiederverwenden

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.

Nutzen Sie Bibliotheken

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);
    }
}

Löschen Sie nicht benötigten Speicher

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.

Betrachten Sie Ereignisprotokolle

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.

Vermeiden Sie teure Operationen

Einige Vorgänge sind gasintensiver als andere. Zum Beispiel:

  • Externe Funktionsaufrufe sind teurer als interne.
  • Die Interaktion mit dem Speicher ist teurer als die Interaktion mit dem Speicher.
  • Dynamische Arrays können manchmal mehr Gas kosten als Arrays mit fester Größe.

Abschluss

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!

Haftungsausschluss
* Kryptoinvestitionen sind mit erheblichen Risiken verbunden. Bitte lassen Sie Vorsicht walten. Der Kurs ist nicht als Anlageberatung gedacht.
* Der Kurs wird von dem Autor erstellt, der Gate Learn beigetreten ist. Vom Autor geteilte Meinungen spiegeln nicht zwangsläufig die Meinung von Gate Learn wider.
Katalog
Lektion 5

Finale der Smart Contract-Optimierung – Tipps und Tricks für Fortgeschrittene

In unseren vorherigen Lektionen haben wir grundlegende Konzepte und Tools behandelt, die Sie zur Optimierung von Gas in Ethereum-Smart-Verträgen benötigen, insbesondere mithilfe der Remix-IDE. Lassen Sie uns zum Abschluss dieses Kurses in einige fortgeschrittene Techniken und Best Practices eintauchen. In dieser letzten Lektion kombinieren wir das von uns gesammelte Wissen und stellen sicher, dass Sie ein umfassendes Verständnis der Gasoptimierung in Ethereum-Smart-Verträgen erhalten.

Refactoring und Reduzierung der Codekomplexität

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.

Übungsbeispiel

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

Daten wiederverwenden

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.

Nutzen Sie Bibliotheken

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);
    }
}

Löschen Sie nicht benötigten Speicher

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.

Betrachten Sie Ereignisprotokolle

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.

Vermeiden Sie teure Operationen

Einige Vorgänge sind gasintensiver als andere. Zum Beispiel:

  • Externe Funktionsaufrufe sind teurer als interne.
  • Die Interaktion mit dem Speicher ist teurer als die Interaktion mit dem Speicher.
  • Dynamische Arrays können manchmal mehr Gas kosten als Arrays mit fester Größe.

Abschluss

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!

Haftungsausschluss
* Kryptoinvestitionen sind mit erheblichen Risiken verbunden. Bitte lassen Sie Vorsicht walten. Der Kurs ist nicht als Anlageberatung gedacht.
* Der Kurs wird von dem Autor erstellt, der Gate Learn beigetreten ist. Vom Autor geteilte Meinungen spiegeln nicht zwangsläufig die Meinung von Gate Learn wider.