rippled 8650: Nicht autorisierte XRPL-Trustlines sollen nichts empfangen
Pull Request 8650 im Repository rippled, eröffnet am 27. Oktober und noch in Prüfung, ist der zweite von zwei Teilen, die auf Wunsch eines Reviewers aus einem früheren PR herausgelöst wurden; der erste, 8648, ist vorher zu prüfen. Beide hängen am selben Amendment, fixCleanup3_5_0, auf dem Ledger ändert sich also nichts, solange Validatoren es nicht aktivieren.
Das Problem liegt in der Zahlungslogik. Auf dem XRP Ledger kann ein Emittent verlangen, dass ein Konto erst freigegeben werden muss, bevor es seinen Token halten darf; die Prüfung in DirectIPaymentStep::check griff aber nur, wenn der Saldo der Trustline genau null war. Eine Linie mit Saldo empfing weiter, und laut PR konnte so eine nicht autorisierte Position wachsen; eine Zahlung über die Null hinweg konnte einen Inhaber zudem zum nicht autorisierten Inhaber des Tokens der Gegenseite machen. Der PR nennt das als Mechanismus hinter Issue 5450.
Mit dem Amendment darf eine nicht autorisierte Linie gar nicht mehr empfangen, und der Schritt scheitert mit dem endgültigen Code tecNO_AUTH statt mit dem wiederholbaren terNO_AUTH. Die Sperre greift nur, wenn der Schritt dem Ziel den Token der Quelle übergeben würde; ein Konto, das selbst Freigaben verlangt, kann also weiterhin einen fremden IOU zurückgeben. Eine Rückgabe ist auf den zurückgebbaren Betrag begrenzt, eine zu große scheitert mit tecPATH_PARTIAL. Ein Saldo, der bereits auf einer nicht autorisierten Linie liegt, bleibt ausgebbar, denn die Freigabe regelt Halten und Empfangen, nicht Senden; solche Salden überlässt der PR dem Einfrieren. Auswirkungen auf die API meldet er keine, dafür eine neue Testsuite TrustLineAuth.

Was das bedeutet
Für Emittenten regulierter Token wog die Lücke schwerer, als der Umfang des Codes vermuten lässt: „Freigabe erforderlich“ war ein Versprechen, das nur bei null galt. Die Korrektur lässt es bei jedem Saldo gelten, zeigt aber auch, wo die Regel endet. Gelder, die eine nicht autorisierte Linie schon erreicht haben, holt das Amendment nicht zurück; darum muss sich weiterhin der Emittent kümmern.