You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v0.23.2 — no transaction depends on the RPC websocket any more
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Finishes what v0.23.1 started.sendAndConfirmTransaction confirms through an onSignaturewebsocket 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 zerotx 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.