Skip to content

Ramp transfers are marked completed without any on-chain settlement (both directions) #559

Description

@resourcefulmind

Area: API / ramps settlement

Ramp transfers reach status: completed while no on-chain transaction occurs and balances do not change, in both directions:

  • On-ramp: a Lightspark on-ramp reached completed with signature: null; the destination wallet received 0 of the token.
  • Off-ramp: a Lightspark off-ramp reached completed with signature: null; the source wallet's balance was unchanged, so the amount never left.

A plain on-chain transfer in the same environment settles correctly (a real signature, balances move), so this is specific to the ramp settlement path, not an environment limitation.

Reproduce

curl "$BASE/v1/payments/transfers/$TRANSFER_ID" -H "Authorization: Bearer $KEY"
#   status completed, signature null, slot null
curl "$BASE/v1/wallets?includeBalances=true" -H "Authorization: Bearer $KEY"
#   the affected wallet balance is unchanged

Impact: a reconciliation process or a caller polling for completed will believe funds moved when they did not. On money movement this is a correctness problem.
Suggested fix: do not mark a ramp transfer completed until the on-chain leg confirms with a real signature. Use an intermediate status such as settling for the fiat-settled-but-not-yet-delivered state.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdocumentationImprovements or additions to documentationtriagedThis issue has been reviewed by a maintainer and has planned next steps on how to proceed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions