Zum Inhalt springen

Hacker-Guide: MetaMask Delegation Toolkit ERC-7715-Aktionen

Hacker-Leitfaden zum Entwickeln mit ERC-7715-Berechtigungen

2 Min.
Hacker-Guide: MetaMask Delegation Toolkit ERC-7715-Aktionen

Dieser Leitfaden bietet einen umfassenden Überblick über die experimentellen ERC-7715-Aktionen im MetaMask Delegation Toolkit – einem innovativen Tool, das es Dapps ermöglicht, Benutzerberechtigungen für bestimmte Aktionen wie Token-Transfers anzufordern und zu verwalten.

Dies eröffnet spannende neue Anwendungsfälle wie Abonnements und automatisierte Zahlungen und verbessert gleichzeitig die Benutzererfahrung. Wir erläutern die zugrunde liegenden Konzepte, führen Sie durch die Einrichtung Ihrer Entwicklungsumgebung und zeigen Ihnen Schritt für Schritt, wie Sie eine Dapp erstellen, die das Gator SDK nutzt. Dieser Leitfaden verwendet Viem für Blockchain-Interaktionen.

Grundlagen: Web3-Transaktionen neu gedacht

ERC-7715 führt ein neues Paradigma dafür ein, wie Dapps mit Benutzer-Wallets interagieren. Anstatt Benutzer dazu zu verpflichten, jede Transaktion manuell zu genehmigen, können Dapps die Erlaubnis anfordern, bestimmte Aktionen im Namen des Benutzers innerhalb vordefinierter Grenzen durchzuführen.

Schlüsselkonzepte

  • Session Account: Das Konto der Dapp (entweder ein EOA oder ein Smart Contract), dem die Berechtigung erteilt wird, im Namen des Benutzers zu handeln.

  • Benutzer-Wallet: Die MetaMask-Wallet des Benutzers, die dem Session Account Berechtigungen erteilt.

  • Berechtigungen: Bestimmte Aktionen, zu deren Ausführung eine Dapp autorisiert ist. Das Gator SDK unterstützt derzeit native-token-stream.

  • Gator Smart Account: Ein Smart Account, der innerhalb des MetaMask Snap des Benutzers erstellt wird und speziell für die Verwaltung von Berechtigungen dient, die über das Gator SDK erteilt wurden.

  • Delegation: Der grundlegende Mechanismus, der berechtigungsbasierte Transaktionen ermöglicht. Wenn ein Benutzer eine Berechtigung erteilt, wird eine Delegation von seinem Gator Smart Account zum Session Account der Dapp erstellt.

Dies begründet eine Off-Chain-Autorisierung, die es der Dapp ermöglicht, bestimmte Aktionen unter definierten Bedingungen auszuführen, ohne dass der Benutzer jede Transaktion einzeln unterzeichnen muss. Es ist vergleichbar mit der Einrichtung einer wiederkehrenden Zahlung mit festgelegten Regeln.

  • ERC-7715 (Wallet-Berechtigungsanfragen): Ein Standard dafür, wie Dapps Berechtigungen von Benutzer-Wallets anfordern. https://eip.tools/eip/7715

  • ERC-7710 (Smart Contract Delegation): Ein Standard dafür, wie Smart Contracts Fähigkeiten an andere Konten delegieren können.https://eip.tools/eip/7710

  • MetaMask Snaps: Ein System, das es Entwicklern ermöglicht, die Funktionalität von MetaMask zu erweitern. Snaps sind im Wesentlichen Plugins, die die Funktionalität von MetaMask ausbauen können und es ermöglichen, neue Blockchains, neue Transaktionstypen und – im Fall des Gator SDK – erweitertes Berechtigungsmanagement zu unterstützen. Das Gator SDK stützt sich auf zwei Snaps:- Permission Kernel Snap: Fungiert als Router zum spezifischen Berechtigungsanbieter-Snap, in unserem Fall dem Gator Permission Snap.

  • Gator Permissions Snap: Erstellt und verwaltet den Gator Smart Account des Benutzers. Dieser Snap stellt dem Benutzer die Permission Picker-Benutzeroberfläche bereit und ermöglicht es ihm, Berechtigungen zu bearbeiten sowie zu erteilen oder abzulehnen.

- ERC-4337: Account-Abstraction-Standard, der flexiblere Smart Accounts und Transaktionsverwaltung ermöglicht und häufig in Verbindung mit dem Gator SDK verwendet wird. https://eip.tools/eip/4337

- Bundler: Ein Dienst, der mehrere Benutzeroperationen (Transaktionen) zu einer einzigen Transaktion bündelt und so die Gasnutzung optimiert.

  • Paymaster (optional): Ein Smart Contract, der die Gasgebühren von Transaktionen übernehmen kann und so gasfreie Transaktionen für den Benutzer ermöglicht.

Funktionsweise

Das Gator SDK ermöglicht in Verbindung mit MetaMask Snaps, ERC-7715 und ERC-7710 einen berechtigungsbasierten Workflow:

  1. Berechtigungsanfrage: Die Dapp, die als Session Account agiert, initiiert eine Berechtigungsanfrage. Dies erfolgt mithilfe der Methode wallet_grantPermissions, die in ERC-7715 standardisiert ist. Die Dapp gibt den Berechtigungstyp (z. B. native-token-stream), das Ziel (ihre Adresse) und etwaige spezifische Parameter (z. B. Betrag) an.

  2. Benutzerautorisierung: MetaMask Flask präsentiert dem Benutzer die Berechtigungsanfrage. Falls die erforderlichen Snaps noch nicht installiert sind, fordert MetaMask Flask den Benutzer an dieser Stelle zur Installation auf. Dem Benutzer wird anschließend eine klare und verständliche Erläuterung dessen präsentiert, was die Dapp anfordert.

Der Benutzer kann die Anfrage dann genehmigen oder ablehnen. Der Permission Kernel Snap spielt bei dieser Interaktion eine Schlüsselrolle, da er sicherstellt, dass der Benutzer die angeforderten Berechtigungen versteht.

  1. Erstellung des Gator Smart Accounts: Wenn der Benutzer die Berechtigung genehmigt, wird der Gator Permissions Snap aktiv. Dieser Smart Account ist der Ursprung der delegierten Autorität.

  2. Finanzierung des Gator Accounts: Der Benutzer ist dafür verantwortlich, diesen Gator Smart Account mit ausreichenden Mitteln auszustatten, um die delegierten Aktionen abzudecken. Wenn die Berechtigung beispielsweise für native-token-stream gilt, muss der Benutzer den entsprechenden nativen Token in seinen Gator Smart Account einzahlen.

  3. Delegationserstellung: Dies ist ein entscheidender Schritt. Eine Delegation wird erstellt, die die Verbindung zwischen dem Gator Smart Account des Benutzers und dem Session Account der Dapp herstellt. Diese Delegation, die durch ERC-7710 geregelt wird, autorisiert die Dapp, im Namen des Benutzers zu handeln, jedoch nur innerhalb der Grenzen der erteilten Berechtigung. Die Delegation legt Folgendes fest:1. Die Aktionen, die die Dapp ausführen darf (z. B. native Token übertragen).

  4. Etwaige Bedingungen oder Einschränkungen (Caveats), wie z. B.:1. Maximalbetrag pro Transfer

  5. Häufigkeit der Transfers

  6. Ablaufdatum

  7. Berechtigungseinlösung (delegierte Aktion): Wenn die Dapp im Rahmen der erteilten Berechtigung handeln muss, „löst" sie die Delegation ein. Dabei erstellt die Dapp eine Transaktion (oder User Operation bei Verwendung von ERC-4337), die den in der Delegation festgelegten Regeln entspricht.

Die Dapp übermittelt diese Transaktion (oder User Operation bei Verwendung von ERC-4337) dann zusammen mit dem Nachweis der gültigen Delegation.

Entwicklungsumgebung einrichten

Bitte beachten Sie, dass die für ERC-7715-Aktionen erforderlichen Snaps derzeit nur auf Sepolia funktionieren. Wenn Sie am ERC-7715-Track arbeiten, stellen Sie sicher, dass Sie das Sepolia-Testnetz verwenden. Für andere Funktionen im Delegation Toolkit können Sie eines der hier aufgeführten Testnetzwerke verwenden.

Voraussetzungen

  • Node.js: Stellen Sie sicher, dass Node.js auf Ihrem System installiert ist.

  • MetaMask Flask: Installieren Sie MetaMask Flask, eine entwicklerorientierte Version von MetaMask. Laden Sie es von der offiziellen MetaMask-Website herunter. Wichtig: Verwenden Sie ein separates Browserprofil für Flask. Wenn Sie denselben Browser mit Ihrer regulären MetaMask-Wallet verwenden, deaktivieren Sie diese bitte.

  • MetaMask Snaps: Die für das Gator SDK erforderlichen Snaps (Permission Kernel Snap und Gator Permissions Snap) können manuell installiert werden, oder MetaMask Flask fordert den Benutzer zur Installation auf, wenn eine Dapp zum ersten Mal Berechtigungen anfordert.

  • ERC-4337 Bundler: Dies ist erforderlich, wenn der Session Account eine ERC-4337-Wallet ist. Um User Operations von einer ERC-4337-Wallet zu senden, benötigen Sie Zugang zu einem Bundler. Pimlico ist eine gute Option. Weitere Informationen finden Sie in deren Dokumentation.

  • Paymaster (optional): Wenn Sie Gasgebühren sponsern möchten, benötigen Sie einen Paymaster. Pimlico bietet ebenfalls Paymaster-Dienste an.

Installationsschritte

  1. Node.js installieren: Laden Sie Node.js von der offiziellen Website herunter und installieren Sie es.

  2. MetaMask Flask installieren:- Öffnen Sie ein neues Browserprofil.

  • Rufen Sie die MetaMask Flask-Downloadseite auf der MetaMask-Website auf.

  • Laden Sie die MetaMask Flask-Erweiterung herunter und installieren Sie sie.

  1. Bundler einrichten:- Wenn Sie Pimlico verwenden, erstellen Sie ein Konto auf deren Plattform.

  • Beziehen Sie Ihren Bundler-API-Schlüssel von Pimlico.

  • Machen Sie sich damit vertraut, wie User Operations an den Pimlico-Bundler gesendet werden.

  1. Paymaster einrichten (optional):- Wenn Sie Pimlico verwenden, können Sie auch deren Paymaster-Dienst nutzen. Konfigurieren Sie Ihre Dapp für die Verwendung des Paymasters.

Eine Dapp mit Gator ERC-7715-Aktionen erstellen

Der einfachste Einstieg in Gator ERC-7715-Aktionen ist die create-gator-app CLI, die eine Vorlage namens Experimental: Basic Gator app to try out ERC7715 Permissions enthält. Diese Vorlage enthält alle erforderlichen Basisbibliotheken und Code-Snippets.

Sie können die CLI ausführen mit

npx create-gator-app@latest

Weitere wichtige Code-Snippets finden Sie in diesen Abschnitten der Dokumentation:

Ressourcen

KI-übersetzt. Kann Fehler enthalten. Bitte überprüfen Sie die Informationen stets.

Bewerten Sie die Übersetzung

Dieser Artikel wurde verfasst von: