brave-core
brave-core copied to clipboard
feat(wallet): transaction simulations
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
orQA/No
;release-notes/include
orrelease-notes/exclude
;OS/...
) to the associated issue - [ ] Checked the PR locally:
- [ ] 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
- Enable Transaction simulations flag: chrome://flags/#brave-wallet-enable-transaction-simulations
- Create a new transaction
- Test approval/denial of the opt-in modal
- 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.)
- 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.)
- 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
- Enable transaction simulation as outlined in scenario 1.
- 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
- open the panel and observe the queued transactions
- Simulation should occur and show expected results for each transaction