Skip to content

Conversation

@khanti42
Copy link
Contributor

@khanti42 khanti42 commented Jan 19, 2026

Explanation

EIP-7702 delegated transactions were incorrectly using the user's EOA nonce, causing nonce conflicts and preventing transactions from appearing in the activity tab. In EIP-7702, the delegation address manages its own nonce sequence, not the user's EOA.

This PR sets isExternalSign for EIP-7702 txs.

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Fixes nonce/signing flow for EIP-7702 batches.

  • Set isExternalSign = true when adding EIP-7702 batch transactions (presence of nestedTransactions) to bypass internal nonce assignment
  • Record delegationAddress for metrics only; do not derive isExternalSign from it
  • Update CHANGELOG.md to note the fix

Written by Cursor Bugbot for commit 1d3d23a. This will update automatically on new commits. Configure here.

}

// Skip nonce assignment for delegated transactions (EIP-7702)
// The delegation address manages its own nonce sequence externally
Copy link
Member

Choose a reason for hiding this comment

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

Even if the account is upgraded, it can still sign and submit transactions normally meaning the nonces are valid.

This just records the current delegated address for any transaction, for metrics.

@khanti42 khanti42 changed the title fig: skip nonce assignment for EIP-7702 delegated transactions fix: set isExternalSign to true for delegated transactions Jan 23, 2026
@khanti42 khanti42 marked this pull request as ready for review January 23, 2026 09:37
@khanti42 khanti42 requested review from a team as code owners January 23, 2026 09:37
cursor[bot]

This comment was marked as outdated.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

deviceConfirmedOn,
disableGasBuffer,
id: random(),
isExternalSign: isEIP7702Batch,
Copy link

Choose a reason for hiding this comment

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

EIP-7702 batch isExternalSign override by gas fee token check

Medium Severity

The new isExternalSign = isEIP7702Batch can be overridden by checkGasFeeTokenBeforePublish when a transaction has both nestedTransactions and a gasFeeToken, and the user has sufficient native balance. The checkGasFeeTokenBeforePublish function unconditionally sets isExternalSign = false in this case, which would cause the original nonce conflicts for EIP-7702 batch transactions that the PR aims to fix.

Fix in Cursor Fix in Web

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