Ein finalisierter Dusk-Zufluss kann real sein und dennoch das falsche sein, das ich als Einzahlung gutschreiben sollte. Das ist die Scanner-Falle, vor der ich zuerst schützen würde. moonlightHistory(receiver) ist kein Feed für „Kundeneinzahlungen“. Es kann direkte Moonlight-Überweisungen, Vertragsauszahlungen, Rückerstattungen, Staking-Withdrawals und Phoenix-zu-Moonlight-Konvertierungen zurückgeben, weil alle von ihnen dasselbe öffentliche Konto erhöhen können.

Also kann ich die Ingestion nicht auf „Receiver stimmt überein und Wert > 0“ reduzieren.

Für eine direkte Moonlight-Einzahlung brauche ich das Transfer-Contract-Event selbst: topic moonlight, reverted false, den erwarteten Receiver und einen positiven Wert. Dusk warnt sogar davor, die Transaktionsfamilie zu raten, indem man Events zählt, weil eine Transaktion zusätzliche Contract-Events ausgeben kann, ohne dass sich das tatsächlich Gegebene ändert.

Die Folge ist übel in der Verwahrstellenbuchhaltung. Wenn mein Scanner jede finalisierte Zuführung gutschreibt, kann eine interne Rückerstattung oder ein Staking-Withdrawal denselben Ledger-Pfad betreten wie frisches Kundengeld. Der Chain-Saldo ist korrekt, während meine Kundenschulden falsch werden.

Ich würde einen unbekannten Zufluss lieber ablehnen, als ihn stillschweigend als Einzahlung zu bezeichnen.

Auf Dusk sagt mir finalized, dass das Geld bewegt wurde. Der Event-Typ sagt mir, warum.

#dusk $DUSK @Dusk