5ec2c1cb - UMA-On-Chain-Settlement am OpenCryptoPay-Callback abdecken - #1450
Draft
joshuakrueger-dfx wants to merge 1 commit into
Draft
5ec2c1cb - UMA-On-Chain-Settlement am OpenCryptoPay-Callback abdecken#1450joshuakrueger-dfx wants to merge 1 commit into
joshuakrueger-dfx wants to merge 1 commit into
Conversation
…decken Deckt den Fluss ab, den DFXswiss/backend neu annimmt: Ein UMA-Wallet fragt am LNURL-pay-Callback mit settlementLayer und settlementAsset nach einer On-Chain-Zahlung. Vier Fälle, alle als reine API-Fälle per fetch, ohne Browser: - Kasse ohne PayToAddress bekommt weiterhin eine BOLT11-Invoice - Kasse mit PayToAddress bekommt eine ethereum:-URI, deren Betrag der Transferbetrag der Quote in Asset-Einheiten ist und nicht der gesendete Millisatoshi-Wert - der payRequest führt settlementOptions nur bei einer Kasse mit PayToAddress - method und asset schlagen die UMA-Parameter PAYMENT_LOC_MIN_FEE=0 in env/api.env ist die Voraussetzung dafür, dass unter ENVIRONMENT=loc überhaupt Transferbeträge entstehen; ohne sie antwortet GET /v1/lnurlp/:id mit 404 "No BTC transfer amount found". Die Variable wird vom Companion-PR im Backend ausgewertet.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Offene ToDos (nicht aus diesem Branch schließbar)
DFXswiss/backend#5379liefert sowohl die UMA-Parameter am Callback als auch die Auswertung vonPAYMENT_LOC_MIN_FEE. Warum nicht von hier: anderes Repo. Wer: wer den Backend-PR reviewt.EN: Adds end-to-end coverage for the UMA on-chain settlement flow that
DFXswiss/backend#5379introduces at the OpenCryptoPay LNURL-pay callback. Four API-only cases, no browser. Also setsPAYMENT_LOC_MIN_FEE=0in the stack's API env, without which no payment-link quote gets transfer amounts underENVIRONMENT=loc.DE: Deckt den UMA-On-Chain-Fluss ab, den
DFXswiss/backend#5379am OpenCryptoPay-LNURL-Callback einführt. Vier reine API-Fälle, kein Browser. Setzt zusätzlichPAYMENT_LOC_MIN_FEE=0in der API-Env des Stacks — ohne die entstehen unterENVIRONMENT=locgar keine Transferbeträge.Not symptom-driven: Keine Störungsmeldung. Anlass ist eine neu gebaute Backend-Funktion, die auf Schicht 3 noch keinen Beleg hat, und eine dabei gemessene Lücke der Harness.
Scale: Betrifft die gesamte E2E-Abdeckung des OpenCryptoPay-Zahlungsflusses, die bisher bei null lag: Kein bestehender Spec ruft
/v1/lnurlp/:iderfolgreich auf — die vorhandenen Payment-Link-Fälle prüfen Fehlerpfade, und ein Frontend-Fall erwartet ausdrücklich „NO PAYMENT ACTIVE" mit der Begründung, dass unterENVIRONMENT=lockein Live-Pricing verfügbar ist.Smaller fix considered: Nur Unit-Tests im Backend — insufficient because die beweisen die Weiche und die Betragsrechnung, aber nicht, dass eine echte API mit echter Postgres am Ende eine
ethereum:-URI mit dem richtigen Betrag ausliefert. Genau diese Kette ist der Zweck der Harness (docs/test-architecture.mdim Backend: ein Fehlermodus wird auf der niedrigsten Schicht getestet, die ihn ausdrücken kann; die Kette durch API und DB gehört hierher).Details
Die Fälle
PayToAddressPayToAddressblockchain: "Ethereum"und eineethereum:-URI, deren Betrag der Transferbetrag der Quote in Asset-Einheiten ist, nicht der gesendete Millisatoshi-WertsettlementOptionserscheint nur bei einer Kasse mitPayToAddressmethod/assetmitgesendet, gewinnen sie, und die UMA-Parameter bleiben wirkungslosAlles reine
fetch-Fälle nach dem Muster vonspecs/fixtures/auth.ts(signatureLogin) undspecs/fixtures/factories.ts(createPaymentLink); keinepage-Fixture, kein Browser. Die Kassen-Konfiguration wird per SQL gesetzt, weil die Factory keinestandardsannimmt.Warum die Env-Variable hierher gehört
getMinFeegibt unterENVIRONMENT=locundefinedzurück — bewusst, weil es lokal keine Node-Verbindungen gibt und der Guard sonst in Timeouts liefe. Die Folge trifft die ganze Kette:createTransferAmountlässt die Asset-Liste leer,createTransferAmountsnimmt den Eintrag nicht auf, undcreatePayRequestfindet keinen BTC-Transferbetrag. Der Companion-PR macht diesen Floor konfigurierbar, ohne den Guard zu entfernen; hier wird er auf0gesetzt.Bekannte Grenze der Harness
Der Lightning-Fall lässt sich in dieser Umgebung nicht grün bekommen:
createPaymentLinklegt eine synthetische Deposit-Adressee2e-ln-<tag>an, die keine LNURL ist, und der Callback antwortet400 "Deposit LNURLp Address not found"; der loc-HTTP-Mock für LNBits liefert{mock:true}ohnepayment_request. Der Fall bleibt im Spec, weil er den Regressionspfad beschreibt, den das Backend schützt — er ist aber eine zweite, eigenständige Harness-Grenze und in diesem PR nicht behoben. Die drei EVM-Fälle laufen durch.