MetaMask API Nutzung: dApp mit Ethereum Wallets verbinden

Ashley Innocent

Ashley Innocent

23 April 2026

MetaMask API Nutzung: dApp mit Ethereum Wallets verbinden

Apidog für Unternehmen

On-Premises Bereitstellung

SSO & RBAC

SOC 2 konform

Apidog Enterprise entdecken

MetaMask ist die standardmäßige Einstiegsstelle zu Ethereum für zig Millionen von Nutzern, und wenn Sie eine dApp betreiben, ist die MetaMask API die Schnittstelle zwischen Ihrer Benutzeroberfläche und ihren Signierschlüsseln. Die „MetaMask API“ besteht im Grunde aus zwei Dingen: dem injizierten window.ethereum-Provider, der durch EIP-1193 definiert ist, und dem MetaMask SDK, das dieselbe Oberfläche auf mobile Apps, React Native und Node.js-Backends erweitert. Wenn Sie den Provider beherrschen, haben Sie 80 % jeder Wallet-Integration im Web gelernt.

Dieser Leitfaden führt Sie durch die Erkennung des Providers, die Anforderung von Konten, das Auslesen der aktuellen Chain, das Signieren von Nachrichten mit personal_sign und EIP-712, das Senden von Transaktionen, das Hinzufügen oder Wechseln von Chains und die Verwendung des MetaMask SDK, wenn Sie sich außerhalb einer Browser-Erweiterung befinden. Sie werden auch sehen, wo ethers.js v6 und viem als Wrapper auf höherer Ebene passen und wo Apidog in den Workflow eingreift, wenn Sie die zugrunde liegenden JSON-RPC-Aufrufe testen möchten, ohne Einweg-Frontend-Code zu schreiben.

button

Wenn Sie etwas entwickeln, das mit Wallets zu tun hat, speichern Sie diesen Leitfaden zusammen mit unserem Leitfaden zur besten Krypto-Wallet-API als Lesezeichen, um einen breiteren Überblick über die Provider-Landschaft zu erhalten.

TL;DR

Was ist die MetaMask API?

Die MetaMask API ist die Schnittstelle, die MetaMask Webseiten und Apps zur Interaktion mit Ethereum und EVM-kompatiblen Chains bereitstellt. In einem Browser injiziert die Erweiterung ein Provider-Objekt unter window.ethereum, und dieses Objekt folgt dem EIP-1193-Standard. Jede dApp, die diesen Standard verwendet, funktioniert mit MetaMask, Coinbase Wallet, Rabby, Frame und Dutzenden anderer Wallets ohne Code-Änderungen.

Außerhalb des Browsers bietet das MetaMask SDK dieselbe Provider-Struktur in React Native, reinem Node.js, Desktop-Electron-Apps und sogar serverseitigen Skripten. Das SDK übernimmt das Deep-Linking und den QR-Code-Prozess, der es einer mobilen MetaMask-Wallet ermöglicht, Transaktionen zu signieren, die von einem Desktop- oder Backend-Prozess angefordert werden. Unter der Haube spricht es immer noch EIP-1193, sodass sich Ihr App-Code kaum ändert.

MetaMask liefert auch Snaps, ein Plugin-System, das es Dritten ermöglicht, die Wallet mit neuen Chains, benutzerdefinierten RPC-Methoden und Kontotypen zu erweitern. Snaps sind hier nicht Gegenstand der Erörterung, aber wissenswert, wenn Sie Nicht-EVM-Chains oder benutzerdefinierte Signaturabläufe innerhalb von MetaMask selbst unterstützen möchten.

Authentifizierung und Einrichtung

Es gibt keine API-Schlüssel für den Provider selbst. Die Authentifizierung erfolgt, indem der Benutzer jede Anfrage in seiner Wallet-Benutzeroberfläche genehmigt. Sie benötigen zwei Dinge: eine Möglichkeit, den Provider zu erkennen, und eine Möglichkeit, auf Änderungen zu reagieren.

Beginnen Sie mit der Erkennung. Der Helfer @metamask/detect-provider behandelt Sonderfälle wie die Installation mehrerer Wallets, aber Sie können auch direkt prüfen.

// Vanilla JS detection
import detectEthereumProvider from '@metamask/detect-provider';

const provider = await detectEthereumProvider({ mustBeMetaMask: true });

if (!provider) {
  alert('Please install MetaMask');
} else {
  console.log('MetaMask detected');
}

Sobald Sie den Provider haben, richten Sie Event-Listener ein, bevor Sie etwas anfordern. Das Verpassen des accountsChanged-Events ist der häufigste MetaMask-Integrationsfehler.

window.ethereum.on('accountsChanged', (accounts) => {
  if (accounts.length === 0) {
    console.log('User disconnected');
  } else {
    console.log('Active account:', accounts[0]);
  }
});

window.ethereum.on('chainChanged', (chainId) => {
  // Best practice: reload the page on chain change
  window.location.reload();
});

Für React-Apps übernimmt wagmi all dies für Sie und erkennt MetaMask automatisch über seinen injizierten Connector.

Kern-Endpunkte

Alle Provider-Aufrufe erfolgen über window.ethereum.request({ method, params }). Der Methodenname ist ein JSON-RPC-String, und params ist ein Array oder Objekt, je nach Methode. Hier sind die Aufrufe, die 95 % der dApp-Integrationen abdecken.

Konten anfordern und Chain auslesen

// Prompt the user to connect
const accounts = await window.ethereum.request({
  method: 'eth_requestAccounts',
});
const account = accounts[0];

// Read the current chain
const chainId = await window.ethereum.request({
  method: 'eth_chainId',
});

console.log(account, chainId); // '0x...' '0x1' (Ethereum mainnet)

Der äquivalente rohe JSON-RPC-Aufruf, den Sie an jeden Ethereum-Node senden können, sieht mit curl folgendermaßen aus.

curl https://mainnet.infura.io/v3/YOUR_KEY \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'

Für reine Lesezugriffe benötigen Sie MetaMask überhaupt nicht; Node-Provider wie Alchemy oder Infura bieten dieselbe RPC. Weitere Informationen zu gehosteten Ethereum-Nodes finden Sie in unserem Alchemy API-Leitfaden.

Eine einfache Nachricht signieren

personal_sign ist die klassische, menschenlesbare Signatur. Sie präfixiert die Nachricht, damit Benutzer nicht dazu verleitet werden können, beliebige Transaktions-Bytes zu signieren.

const message = 'Sign in to Apidog at ' + new Date().toISOString();
const signature = await window.ethereum.request({
  method: 'personal_sign',
  params: [message, account],
});

Strukturierte Daten mit EIP-712 signieren

Für alles Komplexe, wie eine Genehmigung oder eine Anmelde-Challenge, verwenden Sie eth_signTypedData_v4. MetaMask rendert die Felder übersichtlich im Bestätigungs-Popup, was sowohl Benutzer schützt als auch Vertrauen aufbaut.

const typedData = {
  domain: { name: 'Apidog Demo', version: '1', chainId: 1 },
  types: {
    EIP712Domain: [
      { name: 'name', type: 'string' },
      { name: 'version', type: 'string' },
      { name: 'chainId', type: 'uint256' },
    ],
    Login: [
      { name: 'wallet', type: 'address' },
      { name: 'nonce', type: 'uint256' },
    ],
  },
  primaryType: 'Login',
  message: { wallet: account, nonce: 42 },
};

const sig = await window.ethereum.request({
  method: 'eth_signTypedData_v4',
  params: [account, JSON.stringify(typedData)],
});

Eine Transaktion senden

Transaktionen verwenden eth_sendTransaction. MetaMask übernimmt die Gas-Schätzung und das Nonce-Management automatisch.

const txHash = await window.ethereum.request({
  method: 'eth_sendTransaction',
  params: [{
    from: account,
    to: '0xRecipientAddressHere',
    value: '0x38d7ea4c68000', // 0.001 ETH in wei, hex
  }],
});

Eine Chain wechseln oder hinzufügen

EIP-3326 und EIP-3085 decken den Wechsel zu einer bekannten Chain und das Hinzufügen einer neuen ab.

// Switch to Polygon (chainId 137 = 0x89)
try {
  await window.ethereum.request({
    method: 'wallet_switchEthereumChain',
    params: [{ chainId: '0x89' }],
  });
} catch (err) {
  if (err.code === 4902) {
    // Chain not added yet
    await window.ethereum.request({
      method: 'wallet_addEthereumChain',
      params: [{
        chainId: '0x89',
        chainName: 'Polygon',
        rpcUrls: ['https://polygon-rpc.com'],
        nativeCurrency: { name: 'MATIC', symbol: 'MATIC', decimals: 18 },
      }],
    });
  }
}

React mit dem MetaMask SDK

Das SDK funktioniert auch gut in regulärem React, wenn Sie einen einzigen Integrationspfad wünschen, der Desktop-Erweiterung, mobiles Deep-Link und In-App-Browser abdeckt.

import { MetaMaskProvider, useSDK } from '@metamask/sdk-react';

function Connect() {
  const { sdk, connected, account } = useSDK();
  return (
     sdk?.connect()}>
      {connected ? account : 'Connect MetaMask'}
    
  );
}

export default function App() {
  return (
    
      
    
  );
}

Für Produktions-Apps umschließen Sie den rohen Provider in ethers.js v6 oder viem. Diese bieten Ihnen typisierte Contracts, ABI-Decoder und bessere Fehlermeldungen, während sie weiterhin dieselbe MetaMask API darunter verwenden. Wenn Sie auch E-Mail- oder Social-Login als Fallback benötigen, kombinieren Sie MetaMask mit einer eingebetteten Wallet über unseren Privy API-Leitfaden.

Häufige Fehler und Ratenbegrenzungen

MetaMask gibt standardmäßige JSON-RPC-Fehlercodes zurück. Diejenigen, denen Sie am häufigsten begegnen werden:

Der Provider selbst hat keine Ratenbegrenzung, aber die zugrunde liegende RPC schon. Wenn Sie Lesezugriffe über Infura oder Alchemy proxien, sind Sie an deren Tarif gebunden. Für Fiat-Flüsse wie die ETH-zu-USD-Konvertierung kombinieren die meisten Teams diese Integration mit einer Fiat On-Ramp- und Off-Ramp-API, damit Benutzer Guthaben aufladen können, ohne die dApp zu verlassen.

MetaMask API-Preise

Die MetaMask-Erweiterung und das SDK sind kostenlos. Es fallen keine Kosten pro Verbindung, pro Signatur oder pro Transaktion an. MetaMask erzielt Einnahmen durch Swap-Gebühren, wenn Benutzer innerhalb der Wallet handeln, und durch die MetaMask Card, nicht von dApp-Entwicklern.

Kosten entstehen Ihnen durch den RPC-Endpunkt, den Ihre dApp für Lesezugriffe verwendet. Ein kostenloser Alchemy- oder Infura-Tarif deckt die meisten kleinen Apps ab; Produktions-dApps liegen in der Regel zwischen 49 und 299 US-Dollar pro Monat für dedizierten Durchsatz.

Testen der MetaMask API mit Apidog

Browserbasiertes Signieren ist schwer zu debuggen, da der Anfragefluss eine Erweiterung, eine Seite und manchmal ein mobiles Deep-Link umfasst. Hier verdient sich Apidog seinen Platz im Wallet-Entwickler-Toolkit. Sie können den rohen JSON-RPC-Endpunkt Ihrer dApp ansteuern, bestätigen, dass eth_chainId und eth_getBalance das zurückgeben, was Sie erwarten, und den gesamten Ablauf als Testsuite speichern.

Importieren Sie die Ethereum JSON-RPC-Spezifikation, legen Sie Ihre Node-URL als Umgebungsvariable fest, und Sie haben eine wiederverwendbare Sammlung für jede EVM-Chain. Apidog simuliert auch Antworten, sodass Ihre Frontend-Entwickler gegen einen gefälschten eth_sendTransaction entwickeln können, während der Smart Contract noch geprüft wird. Für CI können Sie dieselbe Sammlung von der Befehlszeile ausführen und den Build fehlschlagen lassen, wenn sich die Antwortstruktur ändert. Wenn Sie mit Postman-Sammlungen gekämpft haben, die sich nie teamübergreifend synchronisieren, erklärt unser Leitfaden zum API-Testen ohne Postman im Jahr 2026, warum Apidog Multi-Protokoll-dApp-Tests besser handhabt.

Laden Sie Apidog herunter, um loszulegen.

FAQ

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen