Die IOTA Foundation weiß, dass alle schon lange darauf gewartet haben. Endlich haben wir die Implementierung lokaler Snapshots abgeschlossen, eine Funktion, mit der man seine Node betreiben kann, ohne den gesamten Transaktionsverlauf dabei speichern zu müssen. Dies bedeutet eine schnellere Synchronisierung, geringere Systemressourcenanforderungen und kein Warten mehr auf globale Snapshots, um die Datenbank zu bereinigen.

Während Hans Moog den Großteil der Logik hinter dieser Funktion implementierte, war das Überprüfen und Testen lokaler Snapshots ein großer Aufwand für das gesamte IRI-Team.

Bei IRI 1.6.0 handelt es sich nicht nur um lokale Snapshots! Wir haben auch an vielen anderen Verbesserungen gearbeitet, von denen wir glauben, dass das Betreiben eines Nodes von nun an zu einer viel besseren Erfahrung wird!

Was muss ich tun?

Es ist einfach. Lade einfach die neueste Version herunter und aktualisiere deine Node. Lokale Snapshots sind standardmäßig aktiviert. In der Version sind auch gleich vernünftige Konfigurationsoptionen vorgegeben, so dass man den Node direkt betreiben kann.

Die Werte kann man natürlich nach Belieben ändern.  Sie können beispielsweise mit den folgenden beiden Konfigurationsoptionen steuern, wie viele Daten der Node speichert:

  • LOCAL_SNAPSHOTS_DEPTH
  • LOCAL_SNAPSHOTS_PRUNING_DELAY

Standardmäßig speichern die Nodes ungefähr 30 Tage Transaktionsdaten.

Sie können auch das Intervall ändern, in dem synchronisierte Nodes lokale Snapshots durchführen.

  • LOCAL_SNAPSHOTS_INTERVAL_SYNCED

Nicht synchronisierte Nodes führen seltener Snapshots aus, sodass sie sich auf die Ressourcen konzentrieren können, um sich auf den neuesten Stand zu bringen:

  • LOCAL_SNAPSHOTS_INTERVAL_UNSYNCED

Weitere Informationen zur Verwendung von lokalen Snapshots gibt es in der Dokumentation.

Betrieb öffentlicher Nodes mit lokalen Snapshots

Standardmäßig speichern Nodes mit lokalen Snapshots Transaktionsdaten im Zeitraum von etwa einem Monat.

Wenn du eine öffentlichen Node betreibst und LOCAL_SNAPSHOT_PRUNING aktivieren möchtest, halte dich mindestens an den Standardwert von LOCAL_SNAPSHOTS_PRUNING_DELAY (40000) oder höher.

Was enthält IRI 1.6.0 noch?

Viel. Viele der Verbesserungen wurden bereits vor Weihnachten in Version 1.5.6 geteilt, aber es lohnt sich, einige davon hier hervorzuheben:

Die Leistung einer synchronsierenden Node wurde erheblich verbessert

Bisher war der Rechenaufwand für einen noch nicht synchronisierte Node sehr hoch. Durch das Entfernen von redundantem Hashing und die Validierung von Antworten im Gossip-Protokoll wurden wesentliche Verbesserungen erzielt.

Liste der standardmäßigen Remote-API-Grenzwerte

Als Sicherheitsmaßnahme für Nodes beschränken wir jetzt standardmäßig einige Remote-API-Aufrufe.  Dadurch wird sichergestellt, dass dein Node nicht mit Anfragen von externen Parteien, denen die IP-Adresse bekannt ist, zu gespammt wird. Standardmäßig beschränkte Anfragen sind:

  • addNeighbors
  • getNeighbors
  • removeNeighbors
  • attachToTangle
  • interruptAttachToTangle

Man kann die Aufrufe über remote zur Verfügung stellen, indem man in der Konfigurationsdatei ein anderes REMOTE_LIMIT_API definiert.

Rufe eine Liste der auf der Node aktivierten Funktionen ab

Der getNodeInfo-API-Aufruf gibt jetzt eine Liste der Features zurück, die eine Node aktiviert hat. So kann man beispielsweise feststellen, ob der Node Proof of Work (PoW) unterstützt!

Verbesserte Synchronisation für TCP-Nachbarn

Bei bestimmten Szenarien kann die Synchronisation mit TCP benachbarten Nodes blockiert werden. Dies wurde nun von unserem Community-Mitglied GJEEE behoben!

PearlDiver-Threads sind jetzt konfigurierbar

Mit einem weiteren Beitrag unseres Community-Mitglieds CodeMonkeySteve kann man nun PearlDiver-Threads besser steuern. Dies ist nützlich, wenn man beispielsweise auf einem dedizierten Node-Server so viele Kerne wie möglich verwenden möchten.

Code-Bereinigungen, Refaktorisierung und Dokumentation

Etwas Mühe wurde aufgewendet, um einiges an der Codebasis aufzuräumen und eine Dokumentation hinzuzufügen. Ein Shout-out geht an unser Community-Mitglied #ChEfKoCh (Legacycode) raus, der dabei geholfen hat!

Was kommt als nächstes?

Wir haben einige Dinge, auf die wir uns als nächstes konzentrieren wollen:

  • Verfestigungsverbesserungen - einfachere und performantere Verfestigungslogik.
  • Refaktorisierung der Datenbankschicht
  • API-Redesign und Refaktorisierung
  • Konfiguration und andere Fehlerbehebungen

Versionshinweise

Eine vollständige Liste aller Änderungen in der Version 1.6.0-RELEASE findet ihr hier.

Vielen Dank!

Vielen Dank an unsere Community für Ihre Geduld, während wir diese Funktion fertigstellten und an alle RC-Tester, die uns Feedback zu den verschiedenen Builds gaben. Ihr habt diesen großen Meilenstein für IRI möglich gemacht.

Ein großes Dankeschön geht auch an das gesamte IRI-Team für die großartige Arbeit!

Wenn ihr Feedback oder Fragen habt, nehmt bitte an der Diskussion im #iri-Kanal unseres Discords teil.


Quelle: https://blog.iota.org/iri-1-6-0-with-local-snapshots-out-now-fc4d991faba8