App developers have problems with re-broadcasting and have to attach extra logic to handle the case of a new transaction versus the same (but already confirmed) transaction.
A way to fix this problem is to provide a unified idempotent endpoint that does the following in 1 api call:
If it's a new transaction (unconfirmed), then accept and return the same data as now; and
If it's a transaction that was settled (confirmed) from before, then still return a returnResult: success and instead also include the SPV proof and transaction details.
This is basically combining the POST /mapi/tx and GET /mapi/tx/:txid endpoints into one. This will lead to a more reliable experience for developers and reduce integration difficulty.
Simply return txid and currentHighestBlockHash and currentHighestBlockHeight also from GET /mapi/tx/:txid and then both the broadcast and status response is mostly identical.
App developers have problems with re-broadcasting and have to attach extra logic to handle the case of a new transaction versus the same (but already confirmed) transaction.
A way to fix this problem is to provide a unified idempotent endpoint that does the following in 1 api call:
returnResult: success
and instead also include the SPV proof and transaction details.This is basically combining the
POST /mapi/tx
andGET /mapi/tx/:txid
endpoints into one. This will lead to a more reliable experience for developers and reduce integration difficulty.