What
sendTransaction and getTransaction calls in src/lib/stellar.ts have no retry-on-network-error logic. Transient failures (timeout, 503, network blip) cause immediate transaction failure.
Why
Stellar RPC endpoints can experience transient failures. Without retries, a single network hiccup causes a transaction to fail even though it may have succeeded on-chain.
Scope
- Add retry wrapper for Stellar RPC calls
- Exponential backoff with jitter
- Configurable max retries and base delay
- Only retry on transient errors (timeout, 503, network error)
- Do NOT retry on permanent errors (400, 422)
Acceptance Criteria
Technical Context
src/lib/stellar.ts:34 — sendTransaction
src/lib/stellar.ts:43 — getTransaction
src/lib/registry.ts:53 — simulateTransaction
- New env vars:
RPC_MAX_RETRIES (default: 3), RPC_RETRY_BASE_MS (default: 1000)
What
sendTransactionandgetTransactioncalls insrc/lib/stellar.tshave no retry-on-network-error logic. Transient failures (timeout, 503, network blip) cause immediate transaction failure.Why
Stellar RPC endpoints can experience transient failures. Without retries, a single network hiccup causes a transaction to fail even though it may have succeeded on-chain.
Scope
Acceptance Criteria
RPC_MAX_RETRIES)RPC_RETRY_BASE_MSTechnical Context
src/lib/stellar.ts:34—sendTransactionsrc/lib/stellar.ts:43—getTransactionsrc/lib/registry.ts:53—simulateTransactionRPC_MAX_RETRIES(default: 3),RPC_RETRY_BASE_MS(default: 1000)