บทเรียนที่ 3

Gasoptimierungstechniken mit Remix

Jetzt, da Sie einige grundlegende Ansätze zur Speicheroptimierung beherrschen, ist es wichtig, dies zu üben. Beschäftigen Sie sich mit den angebotenen Beispielen und experimentieren Sie mit der Erstellung eigener Beispiele. In der folgenden Sitzung werden wir tiefer auf die Optimierung der Funktionssichtbarkeit und die Wiederverwendung von Code mit Bibliotheken eingehen. Bedenken Sie, dass Optimierung sowohl eine Kunst als auch eine Wissenschaft ist. Experimentieren Sie weiter!

Speicher optimieren

Der Großteil der Gasausgaben von Ethereum konzentriert sich auf die Speicherung. Jeder Vorgang, der den Zustand (Speicher) des Ethereum-Netzwerks ändert, ist in der Regel kostspielig. Daher kann die Konzentration auf die Art und Weise, wie Daten aufbewahrt und zugänglich gemacht werden, zu erheblichen Kostensenkungen führen. In dieser Sitzung werden wir uns einige Möglichkeiten zur Speicheroptimierung mit Remix ansehen.

Warum ist Lagerung teuer?

Die Ethereum-Blockchain bietet dauerhaften Speicher. Alles, was auf der Blockchain gespeichert ist, bleibt so lange verfügbar, wie die Blockchain überlebt, aber diese Beständigkeit hat ihren Preis. Die Optimierung der Speicherung senkt nicht nur die Kosten, sondern stellt auch sicher, dass der globale Zustand von Ethereum effizient genutzt wird.

Speichervariablen packen

Einführung

Solidity speichert Variablen in Slots. Jeder Steckplatz ist 32 Byte groß. Wenn Variablen in einen einzelnen Slot passen, können sie mit einem einzigen SLOAD- bzw. SSTORE-Vorgang gelesen oder aktualisiert werden.

Beispiel

Betrachten Sie zwei Verträge:

Solidität 
 // Ohne Optimierung 
 Pragma-Solidität ^0.8.9; 

 Vertrag UnoptimizedStorage {
    uint256 public value1;
    uint256 public value2;
}
Solidität 
 // Mit Optimierung 
 Pragma-Solidität ^0.8.9; 

 Vertrag OptimizedStorage {
    uint128 public value1;
    uint128 public value2;
}
  1. Stellen Sie beide Verträge in Remix bereit und beachten Sie die Gasunterschiede bei der Interaktion mit ihren Variablen.

  2. In der optimierten Version teilen sich value1 und value2 einen einzigen 32-Byte-Slot.

Wiederverwendung von Speicherplätzen

Einführung

Wenn Sie mit einem Speicherplatz (insbesondere temporärer Datenspeicherung) fertig sind, können Sie den Steckplatz löschen oder auf Null setzen, um eine Rückerstattung für Benzin zu erhalten.

Beispiel

Solidität 
 Pragma Solidität ^0.8.9; 

 Vertrag RefundExample { 
 uint256 public temporaryData; 

 Funktion storeTemporaryData(uint256 data) public {
        temporaryData = data;
    }

    Funktion clearTemporaryData() public {
        delete temporaryData;
    }
}
  1. Stellen Sie diesen Vertrag in Remix bereit.

  2. Speichern Sie einige temporäre Daten und löschen Sie sie dann.

  3. Überprüfen Sie die Gaskosten. Beachten Sie die Benzinrückerstattung, die Sie für den delete erhalten.

Verwendung von Ereignissen anstelle von Speicherung für historische Daten

Einführung

Wenn auf Daten nicht in der Kette zugegriffen werden muss, sollten Sie erwägen, sie als Ereignis zu protokollieren, anstatt sie zu speichern. Veranstaltungen sind deutlich günstiger als Lagerbetriebe.

Beispiel

Solidität 
 Pragma Solidität ^0.8.9; 

 Vertrag EventExample { 
 event DataStored(uint256 data); 

 Funktion storeData(uint256 data) public {
        emit DataStored(data);
    }
}
  1. Stellen Sie den Vertrag in Remix bereit und interagieren Sie mit ihm.

  2. Beachten Sie die günstigeren Gaskosten im Vergleich zur Lagerung.

Vorausschauen

Jetzt, da Sie einige grundlegende Ansätze zur Speicheroptimierung beherrschen, ist es wichtig, dies zu üben. Beschäftigen Sie sich mit den angebotenen Beispielen und experimentieren Sie mit der Erstellung eigener Beispiele. In der folgenden Sitzung werden wir tiefer auf die Optimierung der Funktionssichtbarkeit und die Wiederverwendung von Code mit Bibliotheken eingehen. Bedenken Sie, dass Optimierung sowohl eine Kunst als auch eine Wissenschaft ist. Experimentieren Sie weiter!

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม Gate Learn ความคิดเห็นของผู้เขียนไม่ได้มาจาก Gate Learn
แคตตาล็อก
บทเรียนที่ 3

Gasoptimierungstechniken mit Remix

Jetzt, da Sie einige grundlegende Ansätze zur Speicheroptimierung beherrschen, ist es wichtig, dies zu üben. Beschäftigen Sie sich mit den angebotenen Beispielen und experimentieren Sie mit der Erstellung eigener Beispiele. In der folgenden Sitzung werden wir tiefer auf die Optimierung der Funktionssichtbarkeit und die Wiederverwendung von Code mit Bibliotheken eingehen. Bedenken Sie, dass Optimierung sowohl eine Kunst als auch eine Wissenschaft ist. Experimentieren Sie weiter!

Speicher optimieren

Der Großteil der Gasausgaben von Ethereum konzentriert sich auf die Speicherung. Jeder Vorgang, der den Zustand (Speicher) des Ethereum-Netzwerks ändert, ist in der Regel kostspielig. Daher kann die Konzentration auf die Art und Weise, wie Daten aufbewahrt und zugänglich gemacht werden, zu erheblichen Kostensenkungen führen. In dieser Sitzung werden wir uns einige Möglichkeiten zur Speicheroptimierung mit Remix ansehen.

Warum ist Lagerung teuer?

Die Ethereum-Blockchain bietet dauerhaften Speicher. Alles, was auf der Blockchain gespeichert ist, bleibt so lange verfügbar, wie die Blockchain überlebt, aber diese Beständigkeit hat ihren Preis. Die Optimierung der Speicherung senkt nicht nur die Kosten, sondern stellt auch sicher, dass der globale Zustand von Ethereum effizient genutzt wird.

Speichervariablen packen

Einführung

Solidity speichert Variablen in Slots. Jeder Steckplatz ist 32 Byte groß. Wenn Variablen in einen einzelnen Slot passen, können sie mit einem einzigen SLOAD- bzw. SSTORE-Vorgang gelesen oder aktualisiert werden.

Beispiel

Betrachten Sie zwei Verträge:

Solidität 
 // Ohne Optimierung 
 Pragma-Solidität ^0.8.9; 

 Vertrag UnoptimizedStorage {
    uint256 public value1;
    uint256 public value2;
}
Solidität 
 // Mit Optimierung 
 Pragma-Solidität ^0.8.9; 

 Vertrag OptimizedStorage {
    uint128 public value1;
    uint128 public value2;
}
  1. Stellen Sie beide Verträge in Remix bereit und beachten Sie die Gasunterschiede bei der Interaktion mit ihren Variablen.

  2. In der optimierten Version teilen sich value1 und value2 einen einzigen 32-Byte-Slot.

Wiederverwendung von Speicherplätzen

Einführung

Wenn Sie mit einem Speicherplatz (insbesondere temporärer Datenspeicherung) fertig sind, können Sie den Steckplatz löschen oder auf Null setzen, um eine Rückerstattung für Benzin zu erhalten.

Beispiel

Solidität 
 Pragma Solidität ^0.8.9; 

 Vertrag RefundExample { 
 uint256 public temporaryData; 

 Funktion storeTemporaryData(uint256 data) public {
        temporaryData = data;
    }

    Funktion clearTemporaryData() public {
        delete temporaryData;
    }
}
  1. Stellen Sie diesen Vertrag in Remix bereit.

  2. Speichern Sie einige temporäre Daten und löschen Sie sie dann.

  3. Überprüfen Sie die Gaskosten. Beachten Sie die Benzinrückerstattung, die Sie für den delete erhalten.

Verwendung von Ereignissen anstelle von Speicherung für historische Daten

Einführung

Wenn auf Daten nicht in der Kette zugegriffen werden muss, sollten Sie erwägen, sie als Ereignis zu protokollieren, anstatt sie zu speichern. Veranstaltungen sind deutlich günstiger als Lagerbetriebe.

Beispiel

Solidität 
 Pragma Solidität ^0.8.9; 

 Vertrag EventExample { 
 event DataStored(uint256 data); 

 Funktion storeData(uint256 data) public {
        emit DataStored(data);
    }
}
  1. Stellen Sie den Vertrag in Remix bereit und interagieren Sie mit ihm.

  2. Beachten Sie die günstigeren Gaskosten im Vergleich zur Lagerung.

Vorausschauen

Jetzt, da Sie einige grundlegende Ansätze zur Speicheroptimierung beherrschen, ist es wichtig, dies zu üben. Beschäftigen Sie sich mit den angebotenen Beispielen und experimentieren Sie mit der Erstellung eigener Beispiele. In der folgenden Sitzung werden wir tiefer auf die Optimierung der Funktionssichtbarkeit und die Wiederverwendung von Code mit Bibliotheken eingehen. Bedenken Sie, dass Optimierung sowohl eine Kunst als auch eine Wissenschaft ist. Experimentieren Sie weiter!

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม Gate Learn ความคิดเห็นของผู้เขียนไม่ได้มาจาก Gate Learn