März 31, 2020

IOTA Community Node Pool

IOTA Community Node Pool

Was ist denn das? Ein schlechter Aprilscherz?! NEIN!

Nach dem schmerzlichen Verlust des CarriotaFields gab es für Nodebetreiber keine einfache Möglichkeit mehr durch Spenden der Community eine kleine Belohnung für das Betreiben einer Node zu erhalten und wir möchten das gerne wieder ändern.

Dies wird auch nun ganz anders ablaufen, als man es vorher vom Field gewohnt war, denn hier muss man nicht bis zum Ende einer Season warten, sondern bekommt seinen Anteil einer Spende sofort auf seine Spendenadresse ausgezahlt.

Kurz gesagt ist der Pool eine Sammelstelle für IOTA Nodes- Trägt man die Pool-Adresse (https://nodes.tanglebay.org) in sein Trinity Wallet oder IOTA Applikation ein, hat man Zugriff auf über 40 IOTA Nodes. Zusätzlich gibt es noch POW Nodes, die das Proof of Work in nur wenigen Millisekunden berechnen können. Jeder Befehl, der von einem Node ausgeführt wird, erbringt dem Node gewisse Punkte. Aus diesen Punkten wird die Anzahl der zu verteilenden IOTA´s berechnet, die von der Community gespendet werden. Die Spende wird direkt an alle Nodes, abhängig ihrer Punkte ausgezahlt. Die Übersichtsseite des Pool ist über https://pool.einfachiota.de erreichbar. Für jede Spende muss eine neue Adresse generiert werden, das kann man hier tun: https://pool.einfachiota.de/donate.

Der Community Pool ist ein etwas komplexeres Projekt, das von verschiedenen Community Mitglieder ermöglicht worden ist. Folgenden werden die einzelnen Module etwas genauer erklärt und welche Funktion sie bieten.

Module 1 - Load Balancer

Die Software für die Load Balancer des ICNP's (aktuell 3 Load Balancer) wurde von mio (Discord mio#7632) entwickelt. Diese Software richtet sich speziell an die Verteilung von Node-API-Requests und die Sicherstellung der Funktionstüchtigkeit der gelisteten Nodes.

Dabei brauchen Nodebetreiber keine zusätzliche Software auf ihrem Server zu installieren, sondern es reicht eine einfache Anfrage mittels einen Terminalbefehls um die Node dem Pool hinzuzufügen. Dabei kann man den Anzeigenamen selbst definieren und seine eigene Spendenadresse angeben (dazu später mehr). Damit nicht einfach jemand die Node eines anderen hinzufügen kann, überprüfen wir, ob der Request auch wirklich von dem Server kommt, welcher hinzugefügt werden soll. Auch das Verwalten der Node innerhalb des Pools ist vor Missbrauch geschützt, da beim Hinzufügen der Node, der jeweilige Nodebetreiber ein Passwort erhält, womit nur er selbst die Node wieder entfernen kann oder die Node updaten, um z.B. die Spendenadresse zu ändern. Das Passwort also gut sichern! Der aktuelle Season-Score ist an das Passwort der Node geknüpft, somit kann man auch beim Wechsel der Domain oder eines anderen Ports seine Punkte wiederherstellen.

Die Load Balancer bieten aber auch den Vorteil, dass Nodebetreiber nicht ihre Adresse öffentliche publizieren müssen, da Clients mit den Nodes nicht direkt kommunizieren, sondern immer über die Pool Balancer. Des Weiteren schützen diese die Nodes vor Überlastung und pausieren bei Bedarf das Balancing der Node. Welche Node, welche Anfrage erhält geschieht durch das Zufallsprinzip. Standortnähe/Pingzeit spielt bei der Zuweisung keine Rolle.

Module 2 - Rankingsystem

Das Rankingsystem wurde von Oostech (Discord Oostech#6884) entwickelt. Dieses stellt die Schnittstelle zwischen dem INCP, Webseite und Donationsystem bereit. Das Modul holt sich die aktuellen Nodeinformationen in einem festgelegten Intervall und berechnet anhand der definierten Punkte (siehe weiter unten) die Rangliste. Des Weiteren ermittelt es für die Nodedetailseite alle durchgeführten Requests einer Node.

Die Punkte der verschiedenen Befehle setzen sich wie folgt zusammen:

  • attachToTangle - 50 Pkt.
  • broadcastTransactions - 5 Pkt.
  • checkConsistency - 5 Pkt.
  • findTransactions - 5 Pkt.
  • getBalances - 3 Pkt.
  • getInclusionStates - 3 Pkt.
  • getNodeInfo - 1 Pkt.
  • getTransactionsToApprove - 10 Pkt.
  • getTrytes - 3 Pkt.
  • storeTransactions - 20 Pkt.
  • wereAddressesSpentFrom - 5 Pkt.

Zusätzlich spielt noch der Zeitfaktor eine Rolle, sprich eine langsame Node bekommt nicht die vollen 50 Punkte für "attachToTangle", sondern je nach benötigter Zeit weniger Punkte. Die Punkte geben somit immer nur das absolute maximum an, um schnelle Nodes mit mehr Punkten zu belohnen.

Module 3 - Register-Service

Das zweite Modul sorgt dafür, dass wenn Nodes hinzugefügt, entfernt oder aktualisiert werden, dies auch an allen Balancern innerhalb des Pools geschieht. Dabei wird die Anfrage entsprechend gleichzeitig an alle Balancer geschickt, sofern diese auch alle verfügbar sind. Sollte ein Balancer ausfallen, so wird das Verwalten der Nodes für diesen Zeitraum unterbrochen, damit Nodes nicht nur teilweise hinzugefügt werden (dies werden wir hoffentlich in Zukunft noch optimieren). Das Modul wurde von Thoralf (Discord Thoralf#3558) entwickelt.

Module 4 - Webseite

Die Pool-Webseite wurde von Huhn (Discord huhn#0511) entwickelt und basiert auf Vue.js. Die Webseite ermöglicht euch eine Übersichtsseite des aktuell Season-Ranking, sowie die Vorteile einer Registrierungsseite. Des Weiteren die Möglichkeit über den Menüpunkt "Spenden" eine Spende an die Nodes zu tätigen. Des Weiteren haben wir ein FAQ angelegt, welches wir mit der Zeit um weitere Frage natürlich ergänzen werden.

Bei der Registrieren-Seite habt ihr die Möglichkeit eure Node-Informationen entsprechend in das Formular einzutragen und euch den entsprechenden Befehl erzeugen zu lassen (Wichtig: Hier werden keine Daten gespeichert!). Diesen Befehl gebt ihr dann in euer Terminalfenster auf eurer Node ein und seid nach erfolgreichem Hinzufügen ein Teil des ICNP's.

Des Weiteren bietet die Webseite noch die Möglichkeit für Nodebetreiber, die Nodedetails ihrer Nodes anzuzeigen und somit die Möglichkeit, die genauen Werte zu ermitteln, welches vom Pool erfasst wurden.

Module 5 - Spendensystem

Das Spendensystem wurde von Huhn (Discord huhn#0511) und Thoralf (Discord Thoralf#3558) entwickelt und basiert auf dem IOTA-Payment-Modul. Dieses ermöglicht die sofortige Verteilung einer Spende auf die entsprechenden Nodes. Der Anteil einer Node von einer Spende wird anteilig an den Punkten der Node zum aktuellen Gesamtpunktestand ermittelt. Bevor eine Verteilung an eine Node getätigt wird, wird natürlich überprüft, ob die Adresse gültig ist (eine entsprechende Kennzeichnung findet ihr auf der Webseite). Wenn eine Adresse ungültig ist (wereAddressesSpentFrom == true zählt als ungültig), erhält man nichts.

Hier ein kurze Zusammenfassung des Ablaufs einer Spende:

  1. Spende wird getätigt
  2. Spendensystem wartet auf bestätigung der Spende durch das IOTA Netzwerk
  3. Spendensystem ermittelt die Spendenanteile einer Node anhand der Punkte
  4. Transaktionen werden erstellt und an das Netzwerk gesendet
  5. Spendensystem überprüft die Bestätigung der Transaktionen und Promotet diese
  6. Eingang der Spende bei der Spendenadresse des Nodebetreibers

Was ist eine Season?

Eine Season bezeichnen wir einen Zeitraum, in welcher die aktuelle Rangliste gilt und bewertet wird. Geplant ist, dass eine Season immer einen Monat dauert und am ersten Tag eines Monats um 00:01 Uhr neugestartet wird.

Dies hat mehrere Gründe:

  1. Entfernung inaktiver Nodes
  2. Entfernung von Nodes, wo das Passwort vergessen worden ist
  3. Zurücksetzung des Scores, sodass auch neue Nodes eine Chance auf eine höhere Platzierung haben

Wie kann man mit seiner Node teilnehmen?

Um seine Node beim Pool hinzufügen zu können gibt es zunächst einige Anforderungen:

  1. Eine erreichbare API durch die Pool Load Balancer
  2. Die API muss über HTTPS erreichbar sein, sowie ein gültiges SSL-Zertfikat

Sobald man alle Anforderungen erfüllt geht man am einfachsten auf https://pool.einfachiota.de/register und kann dort entsprechend sich den CURL Befehl zum hinzufügen der Node generieren lassen.

Sollte man später seine Spendenadresse updaten wollen, so ist es notwendig zuerst die Node zu entfernen und anschließend mit dem alten Passwort und der neuen Spendenadresse wieder hinzuzufügen. Sollte man das alte Passwort nicht benutzen, so startet man wieder bei 0 Punkten. Pro IP kann nur eine Node hinzugefügt werden.

Projektteam

  • mio (Module 1)
  • Oostech (Module 2)
  • Thoralf (Module 3+5)
  • huhn (Module 4+5)

Nutzungsbedingungen

  1. Es besteht kein Anspruch seitens der Nodebetreiber auf Auszahlung einer Spende des IOTA Community Node Pools (ICNP) durch einfachIOTA
  2. einfachIOTA verpflichtet sich jedoch, alle erhaltenen Spenden durch ICNP an die Nodes zu verteilen. Sollte aufgrund eines Fehlers eine Spende nicht verteilt werden können, so wird diese durch einfachIOTA zu einem späteren Zeitpunkt an die Nodes verteilt. Dabei wird die zum Eingang der Spende aktuelle Rangliste nicht berücksichtigt, sondern die aktuelle Punktzahl zum Zeitpunkt der manuellen Verteilung.
  3. einfachIOTA behält sich das Recht vor Anpassungen an der Punkteverteilung, dem Auszahlungssystem oder sonstigen Komponenten des ICNP vorzunehmen, ohne die Nutzer darüber in Kenntnis setzen zu müssen
  4. einfachIOTA übernimmt keine Haftung bei Verlust von IOTA Token oder Verlust durch interne Abläufe.
  5. Der Rechtsweg ist ausgeschlossen.