Skip to content

v0.23.2 — no transaction depends on the RPC websocket any more

Choose a tag to compare

@CryptoGnome CryptoGnome released this 25 Aug 00:06
· 54 commits to main since this release
bab9562
  • Finishes what v0.23.1 started. sendAndConfirmTransaction confirms through an onSignature websocket subscription, so it was only as available as the ws endpoint. With Helius answering that endpoint 429 once a second, every confirm was guaranteed to fail while the transactions landed perfectly over HTTP — that is how a rent reclaim reported has expired: block height exceeded for a tx that had already succeeded.
  • send() now broadcasts with sendTransaction and resolves every outcome through signatureFate(), which polls getSignatureStatuses and distinguishes expired from unknown via isBlockhashValid. That distinction is what the no-double-execute rule depends on, and a bare confirm cannot make it.
  • Behaviour preserved, checked against the web3.js source: sendTransaction always overwrites recentBlockhash/lastValidBlockHeight, signs, and forces a new blockhash when the derived signature repeats — so retries still produce a different signature and tx.recentBlockhash is exactly what was signed. skipPreflight: false is kept, so program failures still abort rather than retry. Nothing is resent before the previous attempt's fate is known.
  • Verified on live money before release: a real rent reclaim confirmed on the server (+0.00207 SOL) with zero tx attempt … failed lines since deploy. The identical operation two hours earlier logged has expired: block height exceeded and had to be recovered.
  • ws error: 429 may still appear in stderr; nothing on the critical path reads that transport any more.