Was ist "Dust Protection"?

Da IOTA "feeless" - also gebührenfrei - ist und man somit problemlos Mikrotransaktionen senden kann (z.B. einen einzigen IOTA-Token, sprich ein IOTA), können Angreifer durch das Versenden zahlreicher Mikrotransaktionen das Netzwerk sehr einfach und ohne großartige Kosten "zuspammen". Die aus den Mikrotransaktionen resultierenden Adressen mit einer sehr kleinen Balance bezeichnen wir als "Dust", also zu deutsch: "Staub". Um "Dust" im Netzwerk zu vermeiden, sind Mikrotransaktionen mit weniger als einer Million IOTA-Token (1 MIOTA) an eine andere Adresse nur erlaubt, wenn die Versandadresse bereits vorher mit einem Mindestbetrag "aufgeladen" wurde. Diese erste Transaktion ist sozusagen die Initialtransaktion für die nachfolgenden Mikrotransaktionen.

Wie funktioniert das konkret?

Die "Dust Protection" ist fest im Kernprotokoll verankert.

Jede Node im Netzwerk muss zwingend den Kontostand jeder einzelnen Adresse - abgesehen von Nullwert-Adressen - kennen. Ansonsten könnten Netzwerkteilnehmer mehr IOTA-Token versenden als sie haben, es käme zum klassischen double spent.

Diesen Umstand könnten Angreifer jedoch als Angriffsvektor nutzen, indem man schlicht sehr viele Adressen mit bspw. jeweils einem IOTA "auflädt". Dann müssten all diese Adressen vom gesamten Netzwerk gespeichert werden, wodurch der grundsätzliche Speicherbedarf den jede Node hat - selbst ohne die aktuelle Historie aller Transaktionen zu sichern - ins Unermessliche ansteigen würde. Um das Ganze noch einmal zu verdeutlichen: Mit 1 MIOTA (Gegenwert zum Zeitpunkt dieses Artikels in etwa $0,75), könnte man bereits 1 Mio. Adressen mit jeweils 1 IOTA "dusten" und diese 1 IOTA-Balance-Adressen müssten dauerhaft von allen Nodes gesichert werden. Dies ist jedoch im Zuge von Chrysalis mit der Einführung einer sogenannten "minimum balance" - also einem minimalen Guthaben, das jede Adresse aufweisen muss - deutlich teurer bzw. faktisch nicht "bezahlbar" für einen Angreifer geworden. Konkret liegt das minimale Guthaben aktuell bei 1 MIOTA pro Adresse, dieser Betrag kann aber in Zukunft noch angepasst werden.

Dadurch wird es jedoch nicht unmöglich, Beträge unter 1 MIOTA zu versenden. Denn sobald eine Adresse das minimale Guthaben von mind. 1 MIOTA aufweist, kann man damit 10 kleinere Transaktionen von beliebiger Höhe empfangen oder versenden, bis man wieder den Mindestwert aufladen muss. In der Wallet müssen dafür sogenannte "SigLockedDustAllowanceOutputs" freigeschaltet sein. Wenn auf einer Adresse beispielsweise 1,064 MIOTA liegen, kann man natürlich nicht einfach 1 MIOTA versenden und den verbleibenden Dust auf der Adresse zurück lassen, weil es dann nach der Transaktion wieder < 1 MIOTA wären, was nicht erlaubt ist. Deswegen muss man in diesem Fall den Dust vorher oder gleichzeitig senden.