Current-Vault FDC XRPPayment Evidence on Coston2
Status: A real XRPL Testnet payment was attested through Flare FDC, verified by the live Coston2 FdcVerification contract, and closed loan 1 on the vault used by the frontend.
The earlier zero message-integrity code (MIC) request is retained only as a negative operational control. The request below was generated by Flare's verifier and contains a nonzero MIC.
End-to-end evidence
| Stage | Evidence |
|---|---|
| Vault | 0x9a2E0476a02137116C8656786d323d937FaCfBCa |
| Loan draw | Coston2 tx 0x96f2d2d728358e132c3da71e4a343bbf265ecf4f7861424a5ec2fcfe0e9beedb |
| Loan | ID 1, collateral 5 FXRP, principal 0.009 USDT0, principal quote 8,883 drops |
| Commitment | 0xc2d6031fec793217487f842273ab961025a7b0765e746788dd51e30438b7d0d7 |
| XRPL payment | E43DB387E6BE299B442E20683AAC9C0D9E3A0A6CF684408B013FAC5E9A77E3FA — tesSUCCESS, 100,000 drops |
| XRPL source | rDWR3JTZjwnPhywxVrqgrrs3Tr4Q2sWujT |
| XRPL destination | rrpBcxxoHZuBWSTT2ZfCwHkQBBdfnLqgbK (protocol settlement account) |
| FDC request | Coston2 tx 0x6cedfc97dcdf915ff9d754cf8869e3a3dae442bf0d5768e36bc2549b3f023576 |
| Finalized round | 1424121; IRelay.isFinalized(200, 1424121) == true |
| DA response | HTTP 200; raw proof in evidence/fdc/raw-proof-response.json |
| Live verifier | FdcVerification.verifyXRPPayment(proof) == true |
| Vault close | Coston2 tx 0x65b24ffcdceb9ce26fb5c075c62680d802478b8b61f6efac82da0c983cd53ef8; state CLOSED, collateral released, SBT minted |
Reproduce verification
forge script script/FDC/VerifyXRPPayment.s.sol \
--rpc-url https://coston2-api.flare.network/ext/C/rpc \
--sig "run(string)" evidence/fdc/raw-proof-response.jsonThe submission script checks the on-chain loan state before broadcasting. Once a loan is CLOSED, it exits successfully without replaying the proof.
Root cause and prevention
Flare's verifier supplies the MIC-bearing abiEncodedRequest. A hand-encoded zero-MIC request can pay FdcHub fees yet not be indexed by providers. The retrieval driver rejects zero-MIC inputs and performs bounded post-finalization DA retries before reporting a provider indexing failure.