Moonbeam
July 13, 2021

Collator auf Moonbeam. Inbetriebnahme

Einführung

Collators sind Mitglieder des Netzwerks, die die Parachains pflegen, an denen sie teilnehmen. Sie betreiben einen full node (sowohl für ihre jeweilige Parachain als auch für die relay chain) und sie erzeugen den Zustandsübergangsbeweis (the state transition proof) für relay chain Validatoren.

Mit der Veröffentlichung von Moonbase Alpha v6 können Benutzer full node erstellen, die collateFunktion aktivieren und als Collator am Ökosystem teilnehmen.

Moonbeam verwendet das Nimbus Parachain Consensus Framework. Dies bietet einen zweistufigen Filter zum Zuweisen von Collatoren zu einem Blockproduktionsslot:

  • Der Parachain-Staking-Filter wählt die 32 besten Collatoren in Bezug auf die im Netzwerk staked Token aus. Dieser gefilterte Pool wird als ausgewählte Kandidaten bezeichnet, und ausgewählte Kandidaten werden jede Runde rotiert
  • Der Teilmengenfilter mit fester Größe wählt eine pseudozufällige Teilmenge der zuvor ausgewählten Kandidaten für jeden Blockproduktions-Slot aus

Folgen Sie dieser Anleitung:

Technische Voraussetzungen

Aus technischer Sicht müssen Collatoren folgende Anforderungen erfüllen:

Accounts- und Staking-Anforderungen

Ähnlich wie bei Polkadot-Validatoren müssen Sie account erstellen. Für Moonbeam ist dies ein H160-account oder im Grunde ein Konto im Ethereum-Stil, von dem Sie die privaten Schlüssel besitzen. Darüber hinaus benötigen Sie zum Sammeln einen nominierten stake (DEV-Token). Die Slots sind derzeit begrenzt, können aber im Laufe der Zeit erweitert werden.

Collatoren müssen mindestens 1000 DEV haben, um ein Kandidat zu werden. Nur die 32 besten Collatatoren nach nominiertem stake werden im aktiven Set sein.

Konto in PolkadotJS

Ein Collator hat ein Konto, das seinen Collationsaktivitäten zugeordnet ist. Dieses Konto wurde einer author ID zugeordnet, um ihn als Blockproduzent zu identifizieren und die Auszahlungen aus Blockprämien zu senden.

Derzeit haben Sie zwei Möglichkeiten, ein Konto bei PolkadotJS zu eröffnen:

  • Importieren eines bestehenden (oder Erstellen eines neuen) H160-Kontos aus externen Wallets oder MetaMask und MathWallet
  • Ein neues H160-Konto mit PolkadotJS erstellen

Sobald Sie ein H160-Konto in PolkadotJS importiert haben, sollten Sie es auf der Registerkarte "Accounts" sehen. Stellen Sie sicher, dass Sie Ihre öffentliche Adresse (PUBLIC_KEY) zur Hand haben, da sie zum Konfigurieren der Bereitstellung Ihres full node mit den Collatoroptionen erforderlich ist.

Werden Sie Collator-Kandidat

Ermitteln Sie die Größe des Kandidatenpools

Zuerst müssen Sie die candidatePool Größe abrufen (dies kann sich durch die Governance ändern), da Sie diesen Parameter in einer späteren Transaktion übermitteln müssen. Dazu müssen Sie das folgende JavaScript-Code in PolkadotJS ausführen:

// Simple script to get candidate pool size
const candidatePool = await api.query.parachainStaking.candidatePool();
console.log(`Candidate pool size is: ${candidatePool.length}`);
  1. Gehen Sie zum Tab "Developer"
  2. Klicken Sie auf "JavaScript"
  3. Kopieren Sie den Code aus dem vorherigen Snippet und fügen Sie ihn in das Code-Editor-Feld ein
  4. (Optional) Klicken Sie auf das Symbol zum Speichern und legen Sie einen Namen für den Codeausschnitt fest, z. B. "Get candidatePool size". Dadurch wird das Code-Snippet lokal gespeichert
  5. Klicken Sie auf die Schaltfläche Ausführen. Der Code wird ausgeführt.
  6. Kopieren Sie das Ergebnis, da Sie es benötigen, wenn Sie dem Kandidatenpool beitreten

Dem Kandidatenpool beitreten

Sobald Ihr Node läuft und mit dem Netzwerk synchronisiert ist, werden Sie ein Collator Kandidat sein (und treten dem Kandidatenpool bei), indem Sie die folgenden Schritte in PolkadotJS ausführen:

  1. Navigieren Sie zum Tab "Developers" und klicken Sie auf "Extrinsics".
  2. Wählen Sie das Konto aus, das Sie mit Ihren Collatoraktivitäten verknüpfen möchten.
  3. Bestätigen Sie, dass Ihr Collator-Konto mindestens 1000 DEV-Token plus zusätzlichen Transaktionsgebühren hat.
  4. Wählen Sie die parachainStaking im Menü "submit the following extrinsics" aus.
  5. Öffnen Sie das Dropdown-Menü, das alle möglichen Extrinsiken im Zusammenhang mit dem Staking auflistet, und wählen Sie die Funktion joinCandidates()
  6. Legen Sie die bond auf mindestens 1000 DEV-Token fest, was der Mindestbetrag ist, der als Collator Kandidat auf Moonbase Alpha gilt. Für diese Prüfung zählt nur die collator bond. Zusätzliche Nominierungen zählen nicht
  7. Legen Sie die Kandidatenanzahl als Kandidatenpoolgröße fest. Um zu erfahren, wie Sie diesen Wert abrufen, lesen Sie diesen Abschnitt
  8. Senden Sie die Transaktion. Folgen Sie dem Assistenten und unterschreiben Sie die Transaktion mit dem Passwort, das Sie für das Konto festgelegt haben

Hinweis Funktionsnamen und die Mindestanforderung an bond können sich in zukünftigen Versionen ändern.

Wie bereits erwähnt, werden nur die 32 besten Collatatoren nach nominiertem Einsatz im aktiven Set sein.

Collating stoppen

Ähnlich wie bei der chill() Funktion von Polkadot führen Sie zum Verlassen des Kandidatenpools des Collators die gleichen Schritte wie zuvor aus, wählen jedoch in Schritt 5 die Funktion leaveCandidates() aus

Die Zeitpläne

Hinweis Die in der vorherigen Tabelle dargestellten Werte können sich in zukünftigen Versionen ändern.

Session Schlüssel (session keys)

Mit der Veröffentlichung von Moonbase Alpha v8 signieren Collatoren Blöcke mit einer author ID, bei der es sich im Grunde um einen session keys handelt. Um dem Substratstandard zu entsprechen, lauten die session keys des Moonbeam-Kollators SR25519. In dieser Anleitung erfahren Sie, wie Sie Ihre session keys erstellen/rotieren können, die Ihrem Collator-Node zugeordnet sind.

Stellen Sie zunächst sicher, dass Sie einen Collator-Node betreiben und die RPC-Ports verfügbar gemacht haben. Sobald Ihr Collator-Node läuft, sollte Ihr Terminal ähnliche Logs zeigen:

Als Nächstes können session keys rotiert werden, indem mit der Methode author_rotateKeys ein RPC-Aufruf an den HTTP-Endpunkt gesendet wird. Wenn sich der HTTP-Endpunkt Ihres Collators auf Port 9933befindet, könnte der JSON-RPC-Aufruf wie folgt aussehen:

curl http://127.0.0.1:9933 -H \
"Content-Type:application/json;charset=utf-8" -d \
  '{
    "jsonrpc":"2.0",
    "id":1,
    "method":"author_rotateKeys",
    "params": []
  }'

Der Collator-Node sollte mit dem entsprechenden public key der neuen author ID (session key) antworten.

Notieren Sie sich diesen public key der author ID. Als nächstes wird dies einer Adresse im H160-Ethereum-Stil zugeordnet, an die die Blockprämien gezahlt werden.

Autor-ID Ihrem Konto zuordnen (author ID)

Sobald Sie Ihre author ID (session keys) generiert haben, besteht der nächste Schritt darin, sie Ihrem H160-Konto (einer Adresse im Ethereum-Stil) zuzuordnen. Stellen Sie sicher, dass Sie die private keys zu diesem Konto besitzen, da hier die Blockprämien ausgezahlt werden.

Es gibt eine 100 DEV Token bond, die gesendet wird, wenn Ihre Autoren-ID Ihrem Konto zugeordnet wird. Diese bond ist pro registrierter Autoren-ID.

Das authorMapping Modul hat die folgenden Extrinsics programmiert:

  • addAssociation(address authorID) — ordnet Ihre authorID dem H160-Konto zu, von dem die Transaktion gesendet wird, und stellt sicher, dass es der wahre Besitzer seiner privaten Schlüssel ist. Es erfordert eine 100 DEV Token bond
  • clearAssociation(address authorID) — löscht die Verknüpfung einer authorID mit dem H160-Konto, von dem die Transaktion gesendet wird, das der Eigentümer dieser authorID sein muss. Erstattet auch die 100 DEV Token bond
  • updateAssociation(address oldAuthorID, address newAuthorID) — aktualisiert die Zuordnung von einer alten authorID zu einer neuen. Nützlich nach einer Schlüsselrotation oder -migration. Es führt sowohl die add- als auch die clear-Assoziationsextrinsik atomar aus und ermöglicht so die Schlüsselrotation, ohne dass eine zweite Bindung benötigt wird

Das Modul fügt außerdem die folgenden RPC-Aufrufe (chain state) hinzu:

  • mapping(address optionalAuthorID) — zeigt alle on-chain gespeicherten Zuordnungen an oder nur die, die sich auf die Eingabe beziehen, falls vorhanden

Externe Zuordnung

Um Ihre author ID Ihrem Konto zuzuordnen, müssen Sie sich im Kandidatenpool befinden. Sobald Sie ein Kandidat für den Collator sind, müssen Sie eine externe Zuordnung (Transaktion) senden. Beachten Sie, dass dadurch 100 DEV Token gebunden werden, und dies pro registrierter author ID. Führen Sie dazu die folgenden Schritte aus:

  1. Gehen Sie zum Tab "Developer"
  2. Wählen Sie die Option "Extrinsics"
  3. Wählen Sie das Konto aus, dem Sie Ihre author ID zuordnen möchten, mit der Sie diese Transaktion signieren möchten
  4. Wählen Sie authorMapping extrinsic
  5. Setzen Sie die Methode auf addAssociation()
  6. Geben Sie author ID ein
  7. Klicken Sie auf "Submit Transaction"

Wenn die Transaktion erfolgreich ist, sehen Sie eine Bestätigungsmeldung auf Ihrem Bildschirm. Stellen Sie im Gegenteil sicher, dass Sie dem Kandidatenpool beigetreten sind.

Überprüfen der Zuordnungen

Sie können auch die aktuellen on chain Zuordnungen überprüfen, indem Sie den chain-Status überprüfen. Führen Sie dazu die folgenden Schritte aus:

  1. Gehen Sie zum Tab "Developer"
  2. Wählen Sie die Option "Chain state"
  3. Wählen Sie authorMapping als den abzufragenden Zustand aus
  4. Wählen Sie die Methode mappingWithDeposit
  5. Geben Sie author ID für die Abfrage an. Optional können Sie den Slider deaktivieren, um alle Zuordnungen abzurufen
  6. Klicken Sie auf die Schaltfläche "+", um den RPC-Aufruf zu senden

Sie sollten das H160-Konto sehen können, das mit der angegebenen author ID verknüpft ist. Wenn keine author ID enthalten war, würde dies alle on-chain gespeicherten Zuordnungen zurückgeben.

Original Artikel (engl.)