xrpl.js portiert Entropie-Fix in die 4.x-Linie der meisten Nutzer
Die Maintainer von xrpl.js, der wichtigsten JavaScript-Bibliothek für das XRP Ledger, haben eine Korrektur der Wallet-Erzeugung aus Entropie in die ältere 4.x-Linie des Pakets xrpl und in ripple-keypairs 2.x übertragen. Die Backports wurden am 28. September übernommen, ein Release-Pull-Request für ripple-keypairs 2.1.0 am 1. Oktober. Im npm-Register war diese Version am 2. Oktober noch nicht gelistet.
Der Fehler hatte laut Pull Request zwei Hälften. Wallet.fromEntropy leitete die Eingabe durch Uint8Array.from(), das jedes iterierbare Objekt annimmt und Zeichenketten über Number() umwandelt – Buchstaben wurden zu NaN und als Null gespeichert. Wallet.fromEntropy('abcdefghijklmnop') lieferte daher ohne Fehler eine echte, nutzbare Wallet aus 16 Null-Bytes. Unabhängig davon akzeptierte generateSeed in ripple-keypairs jede Entropie ab 16 Bytes und behielt nur die ersten 16, sodass Eingaben mit gleichem Anfang dieselbe Wallet ergaben.
Die Korrektur, zuerst in xrpl 5.2.0 und ripple-keypairs 3.1.0 veröffentlicht, lässt fromEntropy die Eingabe prüfen und generateSeed genau 16 Bytes verlangen. Der Grund für den Backport steht in den Zahlen der Maintainer: Auf die 4.x-Linie entfallen 59 % der wöchentlichen xrpl-Downloads, rund 195.000, auf ripple-keypairs 2.x 60 % der wöchentlichen Downloads, während die korrigierten Linien 5.x und 3.x nur 2,8 und 3,2 % ausmachen. Beide Hälften seien nötig, heißt es, weil ein korrigiertes generateSeed allein das Null-Array, das eine Zeichenkette erzeugt, weiterhin annimmt.
Eine zweite, am 1. Oktober übernommene Korrektur lässt signMultiBatch den Sponsor einer gesponserten inneren Transaktion als erforderlichen Batch-Unterzeichner behandeln, wie es die Prüfung auf dem Server verlangt; bisher warf die Bibliothek einen Fehler, und die nötige Signatur ließ sich gar nicht erzeugen.

Warum das wichtig ist
Eine aus Null-Bytes abgeleitete Wallet kann jeder ableiten. Die Korrektur hilft nur Code, der aktualisiert wird – und der Großteil des Ökosystems steht auf der Linie, für die es noch kein Release gibt.