brave-core icon indicating copy to clipboard operation
brave-core copied to clipboard

feat(wallet): transaction simulations

Open josheleonard opened this issue 1 year ago • 77 comments

Resolves https://github.com/brave/brave-browser/issues/24269 Resolves https://github.com/brave/brave-browser/issues/24271 Resolves https://github.com/brave/brave-browser/issues/34617 Resolves https://github.com/brave/brave-browser/issues/31949 Resolves https://github.com/brave/brave-browser/issues/32205 Resolves https://github.com/brave/brave-browser/issues/34981 Resolves https://github.com/brave/brave-browser/issues/25755 Resolves https://github.com/brave/brave-browser/issues/26613

Security/Privacy review: https://github.com/brave/reviews/issues/1551

Submitter Checklist:

  • [x] I confirm that no security/privacy review is needed and no other type of reviews are needed, or that I have requested them
  • [x] There is a ticket for my issue
  • [x] Used Github auto-closing keywords in the PR description above
  • [x] Wrote a good PR/commit description
  • [x] Squashed any review feedback or "fixup" commits before merge, so that history is a record of what happened in the repo, not your PR
  • [x] Added appropriate labels (QA/Yes or QA/No; release-notes/include or release-notes/exclude; OS/...) to the associated issue
  • [ ] Checked the PR locally:
    • npm run test -- brave_browser_tests, npm run test -- brave_unit_tests wiki
    • npm run lint, npm run presubmit wiki, npm run gn_check, npm run tslint
  • [ ] Ran git rebase master (if needed)

Reviewer Checklist:

  • [ ] A security review is not needed, or a link to one is included in the PR description
  • [ ] New files have MPL-2.0 license header
  • [ ] Adequate test coverage exists to prevent regressions
  • [ ] Major classes, functions and non-trivial code blocks are well-commented
  • [ ] Changes in component dependencies are properly reflected in gn
  • [ ] Code follows the style guide
  • [ ] Test plan is specified in PR before merging

After-merge Checklist:

  • [ ] The associated issue milestone is set to the smallest version that the changes has landed on
  • [ ] All relevant documentation has been updated, for instance:
    • [ ] https://github.com/brave/brave-browser/wiki/Deviations-from-Chromium-(features-we-disable-or-remove)
    • [ ] https://github.com/brave/brave-browser/wiki/Proxy-redirected-URLs
    • [ ] https://github.com/brave/brave-browser/wiki/Fingerprinting-Protections
    • [ ] https://github.com/brave/brave-browser/wiki/Brave%E2%80%99s-Use-of-Referral-Codes
    • [ ] https://github.com/brave/brave-browser/wiki/Web-Compatibility-Exceptions-in-Brave
    • [ ] https://github.com/brave/brave-browser/wiki/QA-Guide
    • [ ] https://github.com/brave/brave-browser/wiki/P3A

Test Plan:

Note: Brave EVM Brave Swap, EVM CoW Swap, & Matcha (0x) swap transactions will skip simulation since we can determine the changes without an external service.

Scenario 1: Opt-in modal displays and feature activates as expected

  1. Enable Transaction simulations flag: chrome://flags/#brave-wallet-enable-transaction-simulations
  2. Create a new transaction
  3. Test approval/denial of the opt-in modal
  4. Test that opt-in modal appears if "Ask" is selected as the option in brave://settings/web3 (See the results of transactions before you sign.)
  5. Test that opt-in modal does not appear and simulation is not occurring if "No" is selected as the option in brave://settings/web3 (See the results of transactions before you sign.)
  6. Test that opt-in modal does not appear and simulation is occurring if "Yes" is selected as the option in brave://settings/web3 (See the results of transactions before you sign.)

Scenario 2: Simulation occurs as expected

  1. Enable transaction simulation as outlined in scenario 1.
  2. Queue the following transactions
  • Solana Send (Native)
  • Solana Send (NFT)
  • Solana Send (SPL token)
  • Jupiter swap
  • EVM Send (Native)
  • EVM Send (Erc20)
  • EVM Send (ERC721)
  • EVM Token approval (Erc20)
  • EVM token approval (ERC721)
  • Uniswap swap
  1. open the panel and observe the queued transactions
  2. Simulation should occur and show expected results for each transaction

josheleonard avatar Jan 29 '24 16:01 josheleonard