Skip to content

should check nonce hash in processConfirmNonce - #37

Merged
cedricfung merged 2 commits into
mainfrom
improves/nonce-check
Nov 13, 2026
Merged

cedricfung merged 2 commits into
mainfrom
improves/nonce-check

Conversation

@hundredark

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved critical confirmation-handling issues can cause repeated replay crashes, incorrect legacy decoding, and nonce-expiry delays that hold up newer calls.

3 open issues
What changed in this PR

Strengthens Solana system-call confirmation by validating the durable nonce before creating withdrawals and signing sessions.

Changes:

  • Adds the nonce hash to observer confirmation payloads and updates decoding.
  • Validates the transaction’s blockhash and nonce-advance program, accounts, authority, and sysvar.
  • Adds tests for missing, truncated, and incorrect nonce hashes.
File Description
solana/​system_call.go Adds the system-call nonce validator.
solana/​observer.go Includes the nonce hash in available confirmations.
solana/​mvm.go Validates the nonce and updates prepare-call decoding.
solana/​computer_test.go Tests invalid nonce payload rejection and updates valid confirmations.

Review effort: Max

Comment thread solana/mvm.go
Comment on lines +337 to +340
if len(extra) < uuid.Size+32 {
return node.failRequest(ctx, req, "")
}
nonceHash := solana.HashFromBytes(extra[uuid.Size : uuid.Size+32])
Comment thread solana/mvm.go Resolved
Comment thread solana/observer.go
Comment on lines 646 to +648
if failureReason == "" {
nonceHash := solana.MustHashFromBase58(nonce.Hash)
extra = append(extra, nonceHash[:]...)
@cedricfung
cedricfung merged commit b9e9eae into main Nov 13, 2026
3 checks passed
@cedricfung
cedricfung deleted the improves/nonce-check branch November 13, 2026 12:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants