> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Wie man getSignaturesForAddress verwendet

> Erfahren Sie mehr über die Anwendungsfälle von getSignaturesForAddress, Codebeispiele, Anforderungsparameter, Antwortstruktur und Tipps.

Die [`getSignaturesForAddress`](https://www.helius.dev/docs/api-reference/rpc/http/getsignaturesforaddress) RPC-Methode ermöglicht es Ihnen, eine Liste bestätigter Transaktionssignaturen abzurufen, die ein spezielles Konto betreffen. Dies ist nützlich, um den Transaktionsverlauf eines Kontos abzurufen. Signaturen werden in umgekehrt chronologischer Reihenfolge (die neuesten zuerst) zurückgegeben.

<Tip>
  Für erweiterte Filterung, Sortierung und Token-Kontoverlauf verwenden Sie stattdessen [`getTransactionsForAddress`](/docs/de/rpc/gettransactionsforaddress). Beachten Sie, dass `getSignaturesForAddress` keine Transaktionen beinhaltet, die mit zugehörigen Token-Konten verbunden sind.
</Tip>

## Häufige Anwendungsfälle

* **Transaktionsverlauf des Kontos:** Anzeige der vergangenen Transaktionen für die Brieftasche eines Benutzers. Für eine fortgeschrittene Analyse der Transaktionsgeschichte sollten Sie Helius's [Enhanced Transactions API](https://www.helius.dev/docs/enhanced-transactions) in Betracht ziehen.
* **Aktivitätsprüfung:** Überprüfung aller Transaktionen, die mit einem bestimmten Smart Contract oder Konto verbunden sind.
* **Spezifische Transaktionssuche:** Finden einer bestimmten Transaktion durch Durchsuchen des Kontoverlaufs, wenn nur die beteiligte Adresse bekannt ist.
* **Datenindexierung:** Aufbau eines lokalisierten Index von Transaktionen für schnellere Abfragen und Analysen.

## Anforderungsparameter

1. **`address`** (`string`): (Erforderlich) Der base-58 kodierte öffentliche Schlüssel des Kontos, für das Transaktionssignaturen abgerufen werden sollen.
2. **`options`** (`object`, optional): Ein optionales Konfigurationsobjekt mit den folgenden Feldern:
   * **`limit`** (`number`, optional): Die maximale Anzahl der zurückzugebenden Signaturen. Der Standardwert ist 1000, und das Maximum ist 1000.
   * **`before`** (`string`, optional): Eine base-58 kodierte Transaktionssignatur. Wenn angegeben, beginnt die Anfrage mit der Suche nach Transaktionen vor dieser Signatur.
   * **`until`** (`string`, optional): Eine base-58 kodierte Transaktionssignatur. Wenn angegeben, sucht die Anfrage nach Transaktionen, bis diese Signatur erreicht ist (exklusiv).
   * **`commitment`** (`string`, optional): Gibt die [Verbindlichkeitsebene](https://www.helius.dev/blog/solana-commitment-levels) an, die für die Anfrage verwendet werden soll. Unterstützte Werte sind `finalized` oder `confirmed`. Der `processed` Zustand wird nicht unterstützt. Wenn nicht angegeben, wird die Standardverbindlichkeit des RPC-Knotens verwendet (normalerweise `finalized`).
   * **`minContextSlot`** (`number`, optional): Der minimale Slot, auf dem die Anfrage ausgewertet werden kann. Dies ist kein Filter für historische Transaktionen, sondern legt den minimalen Slot für den Kontext des Knotens fest.

<Warning>
  **Batchverarbeitung nicht unterstützt**

  Diese Archivierungsmethode unterstützt keine Batchverarbeitung. Stellen Sie nur einzelne Anfragen.
</Warning>

## Antwortstruktur

Das `result` Feld der JSON-RPC-Antwort ist ein Array von Signaturinformationsobjekten. Jedes Objekt hat die folgende Struktur:

* **`signature`** (`string`): Die base-58 kodierte Transaktionssignatur.
* **`slot`** (`u64`): Der Slot, in dem die Transaktion verarbeitet wurde.
* **`err`** (`object` | `null`): Ein Fehlerobjekt, wenn die Transaktion fehlgeschlagen ist, oder `null`, wenn sie erfolgreich war.
* **`memo`** (`string` | `null`): Das Memo, das mit der Transaktion verbunden ist, falls vorhanden.
* **`blockTime`** (`i64` | `null`): Die geschätzte Produktionszeit des Blocks, der die Transaktion enthält, als Unix-Zeitstempel (Sekunden seit der Epoche). `null`, wenn nicht verfügbar.
* **`confirmationStatus`** (`string` | `null`): Der Bestätigungsstatus der Transaktion (z. B. `processed`, `confirmed`, `finalized`). `null`, wenn nicht verfügbar (z. B. bei älteren Helius-Antworten).

## Beispiele

### 1. Abrufen der neuesten Signaturen für eine Adresse

Dieses Beispiel ruft die neuesten (bis zu 1000) Transaktionssignaturen für eine bestimmte Adresse ab.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  # Replace SYSTEM_PROGRAM_ID with the address you want to query
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getSignaturesForAddress",
      "params": [
        "11111111111111111111111111111111" 
      ]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection, PublicKey } = require('@solana/web3.js');

  async function getLatestSignatures() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    // Replace with the public key you want to query
    const address = new PublicKey('11111111111111111111111111111111'); 

    try {
      const signatures = await connection.getSignaturesForAddress(address);
      if (signatures && signatures.length > 0) {
        console.log(`Found ${signatures.length} signatures:`);
        signatures.forEach((sigInfo, index) => {
          console.log(`--- Signature ${index + 1} ---`);
          console.log(`  Signature: ${sigInfo.signature}`);
          console.log(`  Slot: ${sigInfo.slot}`);
          console.log(`  Block Time: ${sigInfo.blockTime ? new Date(sigInfo.blockTime * 1000).toLocaleString() : 'N/A'}`);
          console.log(`  Error: ${JSON.stringify(sigInfo.err)}`);
          console.log(`  Memo: ${sigInfo.memo || 'N/A'}`);
          console.log(`  Confirmation Status: ${sigInfo.confirmationStatus || 'N/A'}`);
        });
      } else {
        console.log('No signatures found for this address.');
      }
    } catch (error) {
      console.error('Error fetching signatures:', error);
    }
  }

  getLatestSignatures();
  ```
</CodeGroup>

### 2. Abrufen von Signaturen mit Limitierung

Dieses Beispiel ruft eine festgelegte Anzahl von jüngsten Transaktionssignaturen für eine Adresse ab.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  # Replace TARGET_ACCOUNT_ADDRESS with the address you want to query
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getSignaturesForAddress",
      "params": [
        "TARGET_ACCOUNT_ADDRESS",
        {
          "limit": 5 
        }
      ]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection, PublicKey } = require('@solana/web3.js');

  async function getLimitedSignatures() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    // Replace with the public key you want to query
    const address = new PublicKey('Vote111111111111111111111111111111111111111'); 
    const limit = 5;

    try {
      const signatures = await connection.getSignaturesForAddress(address, { limit });
      console.log(`Fetched up to ${limit} signatures:`);
      signatures.forEach((sigInfo, index) => {
        console.log(`${index + 1}. Signature: ${sigInfo.signature}, Slot: ${sigInfo.slot}`);
      });
    } catch (error) {
      console.error(`Error fetching limited signatures for ${address.toBase58()}:`, error);
    }
  }

  getLimitedSignatures();
  ```
</CodeGroup>

### 3. Paginierung durch Transaktionshistorie

Dieses Beispiel zeigt, wie man den Transaktionsverlauf in Chargen abruft, indem der `before` Parameter verwendet wird.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Initial request (get the latest 2)
  # Replace <api-key> with your Helius API key
  # Replace TARGET_ACCOUNT_ADDRESS with the address you want to query
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getSignaturesForAddress",
      "params": [
        "TARGET_ACCOUNT_ADDRESS",
        { "limit": 2 }
      ]
    }'

  # Suppose the last signature from the above response was LAST_SIGNATURE_FROM_PREVIOUS_BATCH
  # Fetch the next 2 transactions before that one
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getSignaturesForAddress",
      "params": [
        "TARGET_ACCOUNT_ADDRESS",
        { 
          "limit": 2,
          "before": "LAST_SIGNATURE_FROM_PREVIOUS_BATCH" 
        }
      ]
    }'
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  // Replace <api-key> with your Helius API key
  const { Connection, PublicKey } = require('@solana/web3.js');

  async function paginateSignatures() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    // Replace with the public key you want to query - e.g. a known active address
    const address = new PublicKey('Vote111111111111111111111111111111111111111'); 
    const batchSize = 2;
    let lastSignature = null;
    let allSignatures = [];
    const maxPages = 3; // Limit how many pages we fetch for this example

    try {
      for (let i = 0; i < maxPages; i++) {
        console.log(`Fetching page ${i + 1}...`);
        const options = { limit: batchSize };
        if (lastSignature) {
          options.before = lastSignature;
        }

        const signatures = await connection.getSignaturesForAddress(address, options);
        
        if (signatures.length === 0) {
          console.log('No more signatures found.');
          break;
        }

        signatures.forEach(sigInfo => {
          allSignatures.push(sigInfo.signature);
          console.log(`  Found: ${sigInfo.signature} in slot ${sigInfo.slot}`);
        });
        
        lastSignature = signatures[signatures.length - 1]?.signature;

        if (signatures.length < batchSize || !lastSignature) {
           console.log('Fetched all available signatures or reached end of page.');
           break;
        }
        // Optional: Add a small delay if making many sequential requests
        // await new Promise(resolve => setTimeout(resolve, 200)); 
      }
      console.log(`
  Total signatures fetched (${allSignatures.length}):`);
      allSignatures.forEach((sig, idx) => console.log(`${idx + 1}. ${sig}`));

    } catch (error) {
      console.error('Error paginating signatures:', error);
    }
  }

  paginateSignatures();
  ```
</CodeGroup>

## Entwicklertipps

* **Paginierung:** Um einen vollständigen Transaktionsverlauf für ein aktives Konto zu erhalten, müssen Sie wahrscheinlich mehrere Anfragen stellen, wobei Sie den `before` Parameter mit der letzten Signatur der vorherigen Charge und einem `limit` verwenden.
* **Ratenbegrenzung:** Beachten Sie die Ratenbegrenzungen des RPC-Knotens, wenn Sie umfangreiche Transaktionsverläufe abrufen.
* **Reihenfolge:** Signaturen werden immer von neu nach alt zurückgegeben.
* **`limit` Parameter:** Der `limit` Parameter kann zwischen 1 und 1000 liegen. Wenn nicht angegeben, beträgt der Standardwert 1000.
* **`until` Parameter:** Dieser Parameter kann verwendet werden, um die Abrufung von Signaturen zu stoppen, wenn eine bekannte ältere Signatur erreicht wurde, was nützlich sein kann, wenn man nur Transaktionen bis zu einem bestimmten Punkt benötigt.
* **`minContextSlot`:** Dieser Parameter filtert keine historischen Transaktionen. Er gibt den minimalen Slot an, den der RPC-Knoten für seinen Kontext bei der Auswertung der Anfrage verwenden soll. Wenn der Zustand des Knotens älter ist als dieser Slot, kann er einen Fehler zurückgeben.
* **Transaktionsdetails:** Diese Methode gibt nur Signaturen und grundlegende Informationen zurück. Um vollständige Transaktionsdetails zu erhalten, würden Sie die `getTransaction` Methode mit jeder Signatur verwenden.
* **Einschränkung für Token-Konten:** Diese Methode gibt nur Transaktionen zurück, die direkt auf die angegebene Adresse verweisen. Sie enthält keine Transaktionen, die Token-Konten betreffen, die von der Adresse verwaltet werden. Für einen vollständigen Token-Verlauf, einschließlich zugehöriger Token-Konten, verwenden Sie [`getTransactionsForAddress`](/docs/de/rpc/gettransactionsforaddress) mit dem `tokenAccounts` Filter.

Durch die Verwendung von `getSignaturesForAddress` mit seinen Paginierungsoptionen können Sie effektiv Transaktionsverläufe für jede Solana-Adresse abrufen und verwalten.

## Verwandte Methoden

<CardGroup cols={2}>
  <Card title="getTransactionsForAddress" href="/docs/de/rpc/gettransactionsforaddress">
    Erweiterte Filterung, Sortierung und Token-Kontoverlauf
  </Card>

  <Card title="getTransaction" href="/docs/de/api-reference/rpc/http/gettransaction">
    Vollständige Transaktionsdetails aus einer Signatur abrufen
  </Card>
</CardGroup>
