SolanaKeypairWalletProvider returns a signature when confirmation reports an execution error

Aperta Adatta ai principianti
#1,615 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@snuff12 ci sta già lavorando.

Dal 1/11/2026.

  • #1616 di @snuff12 — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
70/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
typescript
Ambito
blockchain

Direzione di ricerca

Il bug si trova in typescript/agentkit/src/wallet-providers/solanaKeypairWalletProvider.ts: il risultato di conferma restituito da confirmTransaction viene atteso con await, ma il suo value.err non viene mai controllato. Inizia dai tre metodi sendTransaction, signAndSendTransaction e nativeTransfer, e dalla fixture Jest esistente del provider che simula Connection. È completato quando un value.err non nullo fa rifiutare la promise con la firma e l'errore di esecuzione, null continua a risolversi con la firma e le eccezioni di invio o di conferma continuano a propagarsi.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

SolanaKeypairWalletProvider waits for confirmation but discards the returned value.err. A transaction can therefore be submitted and confirmed with an execution failure while sendTransaction, signAndSendTransaction, and nativeTransfer resolve with its signature.

Affected code

Reproduced against main at f2f3e8c11a91d56a17979a229a172ba6e61a85c2, in typescript/agentkit/src/wallet-providers/solanaKeypairWalletProvider.ts.

Reproduction

In the existing provider Jest fixture, let Connection.sendTransaction resolve to signature123 and Connection.confirmTransaction resolve to:

{
  context: { slot: 1 },
  value: { err: { InstructionError: [0, { Custom: 7 }] } },
}

Invoke each of sendTransaction(tx), signAndSendTransaction(tx), and nativeTransfer(to, amount) with the existing valid transaction/balance fixtures. All three resolve to signature123 on the unmodified source. They do not reject, even though the confirmation explicitly reports failed execution. This can occur when execution fails after submission/preflight; a resolved confirmation promise alone does not imply successful execution.

Expected result and impact

Reject with an error carrying the submitted signature and execution error. Continue returning the signature when value.err === null, and preserve submission/confirmation exceptions. Otherwise callers can treat a failed transfer as successfully completed.

Verification

Three regression cases fail on the original source (21 other provider tests pass); the patched provider passes all 24. This reproduction uses controlled RPC results and does not spend funds or claim a live-network transaction.

Related: #1558 concerns EVM/ERC20 receipt status; this report concerns the separate Solana keypair provider and its confirmation result.

AI-assisted investigation and regression tests, prepared with Codex.

Lingua principale
TypeScript
Stelle
1.3k
Fork
889
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di coinbase/agentkit

Tutte le issue di coinbase/agentkit

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.