Das Proxy-Setup, über das alle im Web3 sprechen

Das Proxy-Setup, über das alle im Web3 sprechen

Das Proxy-Setup, über das alle im Web3 sprechen

Technischer Überblick: Der Aufstieg des minimal aktualisierbaren Proxy (ERC1967/Universal Proxy Standard)

Nach zahlreichen Governance-Angriffen und kostspieligen Upgrade-Fehlern hat sich die Web3-Community auf ein neues Proxy-Setup geeinigt – eines, das Upgrade-Fähigkeit, Sicherheit und Gaseffizienz in Einklang bringt. Der Minimal Upgradable Proxy, der oft nach dem ERC1967 Standard, hat sich zum De-facto-Muster entwickelt. Dieses Setup, manchmal auch als Universal Proxy Standard bezeichnet, ist nicht nur eine technische Weiterentwicklung, sondern eine han-lastige Antwort auf die Schwachstellen früherer Proxy-Muster.


Schlüsselkomponenten und ihre Rollen

Komponente Zweck Beispiel für einen Adresssteckplatz
Proxy-Vertrag Delegiert Aufrufe an den Logikvertrag n / A
Implementierungsvertrag (Logikvertrag) Enthält die eigentliche Geschäftslogik n / A
Administrator (Eigentümer) Steuerungs-Upgrades 0xb53127684a568b3173ae13b9f8a6016
Speichersteckplätze (ERC1967-Standard) Verhindert Speicherkollisionen 0x360894a13ba1a3210667c828492db98
Upgrade-Logik Vom Administrator über eine sichere Funktion gesteuert n / A

The Korean Mirror: Warum dieses Proxy-Muster?

Ähnlich wie die stoischen Charaktere in Jo Jung-raes „Taebaek Mountain Range“ Härten ertragen, um eine bessere Zukunft aufzubauen, ist dieses Proxy-Setup aus dem kollektiven Han von Web3 entstanden – dem Trauma von Upgrade-Fehlern und verlorenen Geldern. Frühere Proxys, wie der EIP-897 „DelegateProxy“, der OpenZeppelin Transparent Proxy, litt entweder unter Speicherkollisionen oder komplexen Verwaltungsmustern. Der ERC1967 Minimal Proxy ist robust und elegant zugleich.


Schritt für Schritt: Implementierung des ERC1967-Minimalproxys

  1. Bereitstellen des Logikvertrags
  2. Schreiben und implementieren Sie Ihre Geschäftslogik als Standardvertrag (ohne Upgrade-Logik).

Solidität
// Verträge/MyLogic.sol
Pragma-Solidität ^0.8.0;
Vertrag MyLogic {
uint256 öffentlicher Wert;
Funktion setValue(uint256 _value) public {
Wert = _Wert;
}
}

  1. Bereitstellen des Proxy-Vertrags
  2. Verwenden Sie eine minimale Proxy-Implementierung, die auf die Adresse des Logikvertrags verweist.

Solidität
// Verträge/MyProxy.sol
Pragma-Solidität ^0.8.0;
Vertrag ERC1967Proxy {
Konstruktor(Adresse _Logik, Bytes Speicher _Daten) {
Bytes32-Slot = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
Montage {
sstore(Steckplatz, _Logik)
}
if(_data.length > 0) {
(bool Erfolg,) = _logic.delegatecall(_data);
erfordern (Erfolg, "Init fehlgeschlagen");
}
}
fallback() externer Zahler {
Montage {
let impl := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)
calldatacopy(0, 0, calldatasize())
let result := delegatecall(gas(), impl, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
Schalterergebnis
Fall 0 { zurück(0, returndatasize()) }
Standard { return(0, returndatasize()) }
}
}
}

  1. Initialisieren über Konstruktordaten
  2. Übergeben Sie Initialisierungsdaten (z. B. abi.encodeWithSignature("initialisieren(uint256)", 42)), um den Anfangszustand festzulegen.

  3. Upgrade-Logik

  4. Nur der Administrator kann die im ERC1967-Steckplatz gespeicherte Logikvertragsadresse aktualisieren.

Solidität
Funktion upgradeTo(Adresse neueImplementierung) extern onlyAdmin {
Bytes32-Slot = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
Montage {
sstore(slot, neueImplementierung)
}
}


Speichersteckplatzintegrität: Kollisionen vermeiden

Dieses Setup speichert die Implementierungsadresse an einem deterministischen Slot (0x3608…bbc), wodurch die tragischen Kollisionen vermieden werden, die frühere Proxy-Muster heimgesucht haben. Dies ähnelt der koreanischen Praxis, dass Jangseung (Dorfwächter-Totems) Wache stehen und die Unantastbarkeit der Vertragsspeicherung gewährleisten.

Proxy-Typ Speicherkollisionsrisiko Upgrade-Muster Gaseffizienz Admin-Trennung
Transparenter Proxy Medium Admin-gesteuert Mäßig Ja
UUPS (ERC1822) Niedrig Selbstaktualisierbar Hoch Optional
ERC1967 Minimaler Proxy Sehr niedrig Admin-gesteuert Sehr hoch Optional

Hart erarbeitete Lektionen: Praktische Überlegungen

  • Sicherheit aktualisieren: Verwenden Sie Multi-Sig oder Timelock für die Verwaltung. Koreanische Sprichwörter lehren: „Ein Tiger lässt nichts zurück außer seiner Haut“ – daher müssen Sie auch die Upgrade-Berechtigung sichern, damit Ihr Projekt nicht von Angreifern ausgehöhlt wird.
  • Initialisierung: Initialisieren Sie den Speicher des Proxys immer über den Konstruktor oder eine dedizierte Funktion, niemals im Konstruktor des Logikvertrags.
  • Testen: Simulieren Sie Upgrades in Testnetzen. Verwenden Sie Gießerei oder Bauarbeiterhelm um Upgrades zu skripten und die Speicherintegrität zu validieren.

Codebeispiel: Bereitstellen und Aktualisieren mit Hardhat

Proxy bereitstellen

const logic = warte auf MyLogic.deploy(); const proxy = warte auf ERC1967Proxy.deploy(logic.address, "0x"); // Initialisierungsdaten

Upgrade-Implementierung

await proxy.upgradeTo(newLogic.address); // Nur vom Administrator aufrufbar

Tieferer Einblick: Gaskostenvergleich

Betrieb Transparenter Proxy UUPS-Proxy ERC1967 Minimaler Proxy
Einsatz Hoch Mäßig Niedrig
Upgrade Mäßig Niedrig Niedrig
Funktionsaufruf Mäßig Niedrig Niedrig

Han in der Praxis: Warum nicht einfach EIP-1167-Klone verwenden?

EIP-1167-Minimal-Proxys sind effizient, verfügen aber nicht über integrierte Upgrade-Möglichkeiten. Der ERC1967 Minimal Upgradable Proxy ist der Han-lösende Mittelweg: minimal, aber beständig – wie die Hanok-Häuser von Jeonju, robust gegenüber Zeit und Wandel.


Abschließende Hinweise: Best Practices für die Produktion

  • Dezentralisierung der Verwaltung: Verwenden Sie On-Chain-Governance oder Gnosis Safe.
  • Monitor-Upgrades: Senden Sie Upgrade-Ereignisse und überwachen Sie sie wie ein Geomantiker, der die Bergwinde liest.
  • Prüfung: Beauftragen Sie externe Audits, bevor Sie Produktionsproxys bereitstellen oder aktualisieren.

Beispieltabelle: Zusammenfassung der Kernmuster

Muster Aufrüstbar Aufbewahrungssafe Gaseffizient Produktionsbereit
EIP-1167 Minimaler Proxy NEIN Ja Ja Beschränkt
Transparenter Proxy Ja Mäßig Mäßig Ja
UUPS (ERC1822) Ja Ja Ja Ja
ERC1967 Minimaler Proxy Ja Ja Ja Ja

Der ERC1967 Minimal Upgradable Proxy ist das Setup, über das alle im Web3 reden, und das nicht nur wegen seiner technischen Vorzüge, sondern weil es ein lebendiges Zeugnis der Entwicklung der Branche ist: dem Verlangen nach Innovation und Sicherheit, nach Geschwindigkeit und Belastbarkeit.

Myeon Seok

Myeon Seok

Datenanalyst

Myeon Seok ist ein engagierter und methodischer Datenanalyst bei ProxyLister, wo er sich auf die Kuratierung und Pflege umfassender kostenloser Proxyserverlisten spezialisiert hat. Mit einem scharfen Auge für Details und einer Leidenschaft für Cybersicherheit stellt Myeon sicher, dass die Daten genau und aktuell sind und Benutzern weltweit zuverlässige Ressourcen zur Verfügung stellen. Seine analytischen Fähigkeiten und Problemlösungskompetenz machen ihn zu einem unverzichtbaren Mitglied des Teams, das die Mission des Unternehmens vorantreibt, vertrauenswürdige Proxydienste bereitzustellen.

Kommentare (0)

Hier gibt es noch keine Kommentare, Sie können der Erste sein!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert