> ## 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.

# So verwenden Sie getLeaderSchedule

> Erfahren Sie mehr über getLeaderSchedule Anwendungsfälle, Codebeispiele, Anfrageparameter, Antwortstruktur und Tipps.

Die [`getLeaderSchedule`](https://www.helius.dev/docs/api-reference/rpc/http/getleaderschedule) RPC-Methode gibt die Zuordnung der Blockproduktionsleitung zu Validierern für eine bestimmte Epoche zurück. Das Verständnis des Leader-Zeitplans kann für die Netzwerkanalyse nützlich sein, um vorherzusagen, welcher Validator zu bestimmten Zeiten Blöcke produzieren wird, oder für Tools, die mit bestimmten Leitern interagieren.

## Häufige Anwendungsfälle

* **Netzwerküberwachung:** Beobachten Sie die Verteilung der Leader-Slots unter Validierern in einer Epoche.
* **Transaktionsweiterleitung (Fortgeschritten):** Einige fortgeschrittene Anwendungen könnten versuchen, Transaktionen zum aktuellen oder kommenden Leader zu leiten, obwohl dies im Allgemeinen vom Netzwerk und den RPC-Knoten gehandhabt wird.
* **Validator-Leistungsanalyse:** Korrelieren Sie den Leader-Zeitplan mit der tatsächlichen Blockproduktion, um die Betriebszeit und Leistung des Validators zu bewerten.
* **Verständnis der Epoch-Fortschreitung:** Sehen Sie, welche Validierer während einer Epoche für die Blockproduktion verantwortlich sind.

## Anfrageparameter

Die Methode kann bis zu zwei optionale Parameter annehmen:

1. **`slot`** (u64, optional): Eine Slotnummer. Wenn angegeben, wird der Leader-Zeitplan für die Epoche, die diesen Slot enthält, abgerufen. Wenn `null` oder weggelassen, wird der Leader-Zeitplan für die aktuelle Epoche abgerufen.
2. **`config`** (Objekt, optional): Ein Konfigurationsobjekt, das Folgendes enthalten kann:
   * **`commitment`** (String, optional): Gibt das [Commitment-Level](https://www.helius.dev/blog/solana-commitment-levels) an. Wenn nicht bereitgestellt, wird das Standard-Commitment des Knotens verwendet.
   * **`identity`** (String, optional): Ein base-58-kodierter öffentlicher Schlüssel eines Validators. Wenn angegeben, enthält der zurückgegebene Zeitplan nur Slots, die diesem speziellen Validator zugewiesen sind.

## Antwortstruktur

Das `result` Feld der JSON-RPC-Antwort wird sein:

* `null`: Wenn die Epoche, die der angeforderten `slot` (oder aktuellen Epoche, wenn kein Slot bereitgestellt wird) entspricht, nicht gefunden wird oder ihr Leader-Zeitplan nicht verfügbar ist (z.B. für eine zukünftige, nicht berechnete Epoche).
* Ein **Objekt**: Wenn ein Zeitplan gefunden wird. Dieses Objekt ist eine Karte, bei der:
  * Jeder **Schlüssel** der base-58-kodierte öffentliche Schlüssel (Identität) eines Validators ist.
  * Der entsprechende **Wert** ein Array von Zahlen ist. Jede Zahl ist ein Slot-Index *relativ zum Beginn der Epoche*, für den dieser Validator der Leader ist.

Beispielsweise, wenn eine Epoche bei Slot `1000` beginnt und ein Validator hat `[0, 1, 5]` in seinem Zeitplan, bedeutet dies, dass dieser Validator der Leader für die Slots `1000`, `1001` und `1005` ist.

## Beispiele

### 1. Abrufen des Leader-Zeitplans für die aktuelle Epoche

Dieses Beispiel ruft den vollständigen Leader-Zeitplan für die aktuelle Epoche ab.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getLeaderSchedule"
    }'
  ```

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

  async function fetchCurrentLeaderSchedule() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    try {
      const leaderSchedule = await connection.getLeaderSchedule(); // Fetches for current epoch by default
      if (leaderSchedule) {
        console.log('Leader Schedule for Current Epoch:');
        for (const [validatorIdentity, slots] of Object.entries(leaderSchedule)) {
          console.log(`  Validator: ${validatorIdentity}`);
          console.log(`    Slots (relative to epoch start): ${slots.join(', ')}`);
        }
      } else {
        console.log('Leader schedule for the current epoch not found or not yet available.');
      }
      // console.log(JSON.stringify(leaderSchedule, null, 2));
    } catch (error) {
      console.error('Error fetching leader schedule:', error);
    }
  }

  fetchCurrentLeaderSchedule();
  ```
</CodeGroup>

### 2. Abrufen des Leader-Zeitplans für einen bestimmten Validator in einer bestimmten Epoche (nach Slot)

Dieses Beispiel ruft den Leader-Zeitplan für eine gegebene Validator-Identität für die Epoche, die den Slot `200000` enthält, ab.

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <api-key> with your Helius API key
  # Replace VALIDATOR_PUBKEY with an actual validator identity public key
  curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getLeaderSchedule",
      "params": [
        200000,
        { "identity": "VALIDATOR_PUBKEY" }
      ]
    }'
  ```

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

  async function fetchValidatorEpochSchedule() {
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    const targetSlot = 200000;
    const validatorIdentity = 'VALIDATOR_PUBKEY'; // e.g., 'Vote111111111111111111111111111111111111111'

    try {
      const leaderSchedule = await connection.getLeaderSchedule(targetSlot, { identity: validatorIdentity });
      if (leaderSchedule && leaderSchedule[validatorIdentity]) {
        console.log(`Leader Schedule for Validator ${validatorIdentity} in epoch of slot ${targetSlot}:`);
        console.log(`  Slots (relative to epoch start): ${leaderSchedule[validatorIdentity].join(', ')}`);
      } else {
        console.log(`No leader slots found for validator ${validatorIdentity} in epoch of slot ${targetSlot}, or schedule not available.`);
      }
      // console.log(JSON.stringify(leaderSchedule, null, 2));
    } catch (error) {
      console.error('Error fetching validator leader schedule:', error);
    }
  }

  fetchValidatorEpochSchedule();
  ```
</CodeGroup>

## Entwicklertipps

* **Epochengrenzen:** Der Leader-Zeitplan ist für eine gesamte Epoche festgelegt. Sie können `getEpochInfo` verwenden, um die Start- und End-Slots einer Epoche zu finden.
* **Zukünftige Epochen:** Das Anfordern des Zeitplans für eine weit in der Zukunft liegende Epoche könnte `null` zurückgeben, wenn das Netzwerk ihn noch nicht berechnet hat.
* **Relative Slot-Indizes:** Denken Sie daran, dass die Slots in der Antwort relativ zum ersten Slot der *angeforderten* Epoche und nicht absolute Slotnummern in der Blockchain sind.
* **Große Antwort:** Für einen vollständigen Epoch-Zeitplan ohne Identitätsfilter kann die Antwort groß sein, da alle Validierer und ihre zugewiesenen Slots aufgelistet werden.

Dieser Leitfaden bietet die notwendigen Informationen zur Verwendung von `getLeaderSchedule`, um Blockproduzenten-Zuweisungen für eine beliebige Epoche im Solana-Netzwerk abzufragen.

## Verwandte Methoden

<CardGroup cols={2}>
  <Card title="getEpochInfo" href="/docs/de/api-reference/rpc/http/getepochinfo">
    Holen Sie sich aktuelle Epochsinformationen einschließlich der Slot-Grenzen
  </Card>

  <Card title="getSlotLeaders" href="/docs/de/api-reference/rpc/http/getslotleaders">
    Holen Sie sich die Leiter für einen bestimmten Slot-Bereich
  </Card>
</CardGroup>
