core icon indicating copy to clipboard operation
core copied to clipboard

fix: incorrect token balance changes for simulations of multiple tokens that include an NFT mint

Open dbrans opened this issue 1 year ago • 2 comments

Explanation

When simulating a transaction resulting in an NFT mint, we skip the prior owner check for the NFT since the token does not exist yet. However, for subsequent tokens, we were using the incorrect index for the prior balance transaction.

The fix is to keep a separate prevBalanceIndex, which we only increment if a prior balance transaction was included in the simulation.

References

  • Related to https://github.com/MetaMask/metamask-extension/issues/24586

Changelog

@metamask/transaction-controller

  • FIXED: Incorrect token balance changes for simulations of multiple tokens that include an NFT mint.

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 highlighted breaking changes using the "BREAKING" category above as appropriate

dbrans avatar May 17 '24 14:05 dbrans

@metamaskbot publish-preview

dbrans avatar May 17 '24 14:05 dbrans

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "14.0.0-preview-73f66baf",
  "@metamask-previews/address-book-controller": "4.0.1-preview-73f66baf",
  "@metamask-previews/announcement-controller": "6.1.0-preview-73f66baf",
  "@metamask-previews/approval-controller": "6.0.2-preview-73f66baf",
  "@metamask-previews/assets-controllers": "29.0.0-preview-73f66baf",
  "@metamask-previews/base-controller": "5.0.2-preview-73f66baf",
  "@metamask-previews/build-utils": "2.0.1-preview-73f66baf",
  "@metamask-previews/composable-controller": "6.0.1-preview-73f66baf",
  "@metamask-previews/controller-utils": "9.1.0-preview-73f66baf",
  "@metamask-previews/ens-controller": "10.0.1-preview-73f66baf",
  "@metamask-previews/eth-json-rpc-provider": "3.0.2-preview-73f66baf",
  "@metamask-previews/gas-fee-controller": "15.1.2-preview-73f66baf",
  "@metamask-previews/json-rpc-engine": "8.0.2-preview-73f66baf",
  "@metamask-previews/json-rpc-middleware-stream": "7.0.1-preview-73f66baf",
  "@metamask-previews/keyring-controller": "16.0.0-preview-73f66baf",
  "@metamask-previews/logging-controller": "3.0.1-preview-73f66baf",
  "@metamask-previews/message-manager": "8.0.2-preview-73f66baf",
  "@metamask-previews/name-controller": "6.0.1-preview-73f66baf",
  "@metamask-previews/network-controller": "18.1.0-preview-73f66baf",
  "@metamask-previews/notification-controller": "5.0.1-preview-73f66baf",
  "@metamask-previews/permission-controller": "9.0.2-preview-73f66baf",
  "@metamask-previews/permission-log-controller": "2.0.1-preview-73f66baf",
  "@metamask-previews/phishing-controller": "9.0.2-preview-73f66baf",
  "@metamask-previews/polling-controller": "6.0.2-preview-73f66baf",
  "@metamask-previews/preferences-controller": "11.0.0-preview-73f66baf",
  "@metamask-previews/profile-sync-controller": "0.0.0-preview-73f66baf",
  "@metamask-previews/queued-request-controller": "0.10.0-preview-73f66baf",
  "@metamask-previews/rate-limit-controller": "5.0.1-preview-73f66baf",
  "@metamask-previews/selected-network-controller": "13.0.0-preview-73f66baf",
  "@metamask-previews/signature-controller": "16.0.0-preview-73f66baf",
  "@metamask-previews/transaction-controller": "29.0.0-preview-73f66baf",
  "@metamask-previews/user-operation-controller": "10.0.0-preview-73f66baf"
}

github-actions[bot] avatar May 17 '24 14:05 github-actions[bot]