Zum Hauptinhalt springen

Voraussetzungen

  • Ein auf das Plasma Testnet deployter Vertrag. Siehe Vertrag deployen, falls Sie noch keinen deployt haben.
  • Quellcode Ihres Vertrags und Kompilierungseinstellungen.
  • Konstruktor-Argumente, die beim Deployment verwendet wurden (falls vorhanden).
Der Plasma-Block-Explorer (plasmascan.to) stellt eine Etherscan-kompatible Verifizierungs-API bereit. Die folgenden Beispiele nutzen diese API direkt — es ist kein Drittanbieterkonto zum Einreichen einer Verifizierung erforderlich.

Beispielverträge

Wir verwenden zwei Beispielverträge, um sowohl einfache als auch komplexe Konstruktor-Argumente zu demonstrieren:

Einfacher Vertrag

Ein einfacher Datenspeicher-Vertrag, der grundlegende Smart-Contract-Konzepte demonstriert.

Komplexer Vertrag

Ein anspruchsvolleres Vault-System zur Verwaltung von Token-Einzahlungen mit konfigurierbaren Parametern.

Mit Foundry verifizieren

Foundry bietet den forge verify-contract-Befehl zur Vertragsverifizierung.
  1. Stellen Sie sicher, dass Ihre foundry.toml die Verifizierungseinstellungen enthält:
  2. Den Vertrag verifizieren. Für den SimpleStorage-Vertrag mit einem String-Konstruktor-Argument:
    Für den TokenVault-Vertrag mit mehreren Konstruktor-Argumenten:
  3. Verifizierungsstatus prüfen. Foundry zeigt mit dem --watch-Flag den Verifizierungsstatus in Echtzeit an. Achten Sie auf:

Mit Hardhat verifizieren

Hardhat bietet Vertragsverifizierung über das @nomicfoundation/hardhat-verify-Plugin.
  1. Aktualisieren Sie Ihre hardhat.config.js, um Verifizierungseinstellungen aufzunehmen:
  2. Den Vertrag verifizieren. Für den einfachen Vertrag:
    Für Verträge mit mehreren Konstruktor-Argumenten erstellen Sie ein Verifizierungsskript scripts/verify.js:
  3. Das Verifizierungsskript ausführen:

Automatisierte Verifizierung während des Deployments

Sie können Verträge auch automatisch während des Deployments verifizieren, indem Sie die Verifizierung in Ihr Deployment-Skript einfügen:

Mit Ethers.js verifizieren

Ethers.js erfordert manuelle API-Aufrufe an den Block-Explorer für die Verifizierung. Dieser Ansatz gibt Ihnen volle Kontrolle über den Verifizierungsprozess.
  1. Erforderliche Abhängigkeiten installieren:
  2. Verifizierungsskript verify-ethers.js erstellen:
  3. Konstruktor-Argumente kodieren. Für komplexe Konstruktor-Argumente müssen Sie diese ABI-kodieren. Sie können Foundrys cast-Tool verwenden:
  4. Abschließend die Verifizierung ausführen:

Verifizierungsstatus prüfen

Nach der Verifizierung können Sie prüfen, ob sie erfolgreich war:

Auf dem Block-Explorer

  1. Besuchen Sie den Plasma Testnet Explorer.
  2. Suchen Sie nach Ihrer Vertragsadresse.
  3. Achten Sie auf ein grünes Häkchen neben dem Tab „Contract”.
  4. Klicken Sie auf den Tab „Contract”, um den verifizierten Quellcode anzuzeigen.

Programmatisch

  1. Ein Statusprüfungsskript check-verification.js erstellen:

Alternative Methoden

Block-Explorer sind zwar die häufigste Verifizierungsmethode, aber Sie können auch verwenden:

Sourcify

Sourcify bietet dezentrale Vertragsverifizierung:

Tenderly

Tenderly bietet Verifizierung als Teil seiner Debugging-Plattform. Details siehe deren Dokumentation.

Vertrag flatten

Für Verträge mit Imports oder Bibliotheken müssen Sie Ihren Vertrag möglicherweise vor der Verifizierung in eine einzelne Datei „flatten”. Beliebte Tools sind: Für komplexe Projekte mit externen Bibliotheken sehen Sie die Hardhat-Verifizierungsdokumentation für erweiterte Konfigurationsoptionen.

Fehlerbehebung

Konstruktor-Argument-Abweichung

Überprüfen Sie nochmals, ob Ihre Konstruktor-Argumente exakt mit denen während des Deployments übereinstimmen. Verwenden Sie cast abi-encode, um die Kodierung zu prüfen.

Compiler-Versionsabweichung

Stellen Sie sicher, dass die Compiler-Version in Ihrer Verifizierungsanfrage mit der bei der Kompilierung verwendeten Version übereinstimmt.

Abweichung der Optimierungs-Einstellungen

Stellen Sie sicher, dass die Optimierungs-Einstellungen (aktiviert/deaktiviert und Anzahl der Runs) mit Ihren Kompilierungseinstellungen übereinstimmen.

Bereits verifiziert

Das bedeutet, dass die Verifizierung zuvor erfolgreich war. Prüfen Sie zur Bestätigung den Block-Explorer.

Rate-Limiting

Warten Sie einige Minuten, bevor Sie es erneut versuchen. Erwägen Sie ein Upgrade Ihres API-Plans, wenn Sie höhere Limits benötigen.