Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: cross chain swap STX #28460

Merged
merged 48 commits into from
Dec 5, 2024
Merged

feat: cross chain swap STX #28460

merged 48 commits into from
Dec 5, 2024

Conversation

infiniteflower
Copy link
Contributor

@infiniteflower infiniteflower commented Nov 14, 2024

Description

This PR improves support for Smart Transactions (STX). It will not show the STX status page if the tx is a Bridge tx. Instead users will be immediately sent to the Activity list. If the user opens the Bridge tx detaills, they should be able to see the proper info.

The main change is that in BridgeStatusController the txHistory is now keyed by txMeta.id rather than txMeta.hash. This is because for an STX we might not have the hash immediately, but we still want to look things up.

We also add a way to call addTransaction from the UI side. Previously we used addTransactionAndWaitForPublish. However for STX, this will cause the app to wait until a txHash is available before returning a txMeta, which means we can't even use the txMeta.id to key a BridgeHistoryItem. If we use addTransaction this will allow us to receive a txMeta object back immediately and use txMeta.id.

Open in GitHub Codespaces

Related issues

Depends on MetaMask/core#4918

Manual testing steps

  1. Add BRIDGE_USE_DEV_APIS=1 to .metamaskrc
  2. Go to Settings > Advanced, make sure Smart Transactions is on
  3. Switch network to Ethereum
  4. Go to Bridge
  5. Selection source network, source token, dest network, dest token
  6. Request a quote
  7. Execute a bridge
  8. Go to Activity
  9. Click on the Bridge tx

Screenshots/Recordings

Before

After

Screen.Recording.2024-11-25.at.11.05.55.AM.mov

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Copy link
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@infiniteflower infiniteflower force-pushed the mb893-cross-chain-swap-tx-status-2 branch from 3d57b48 to c1adb80 Compare November 14, 2024 16:03
@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch from 4359f25 to 44ac2e3 Compare November 14, 2024 16:07
@infiniteflower infiniteflower changed the title Mb1571 cross chain swap stx feat: Mb1571 cross chain swap STX Nov 14, 2024
@infiniteflower infiniteflower changed the title feat: Mb1571 cross chain swap STX feat: cross chain swap STX Nov 14, 2024
@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch 3 times, most recently from c082ed0 to 0825eeb Compare November 14, 2024 21:22
@infiniteflower infiniteflower force-pushed the mb893-cross-chain-swap-tx-status-2 branch from e43b87a to 4ad79f2 Compare November 20, 2024 02:19
@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch from 0825eeb to e296149 Compare November 20, 2024 02:29
@infiniteflower infiniteflower force-pushed the mb893-cross-chain-swap-tx-status-2 branch from 4ad79f2 to 05c5197 Compare November 20, 2024 02:47
@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch 2 times, most recently from 67de92a to 0e21993 Compare November 21, 2024 01:56
github-merge-queue bot pushed a commit that referenced this pull request Nov 21, 2024
## **Description**

This PR implements the following:

1. Submit bridge transaction for normal transactions
3. Submit bridge transaction for native gas tokens that don't require
approval
4. Submit bridge transaction for ERC20s that require approval

Does not fully:
1. Submit bridge transaction for smart transactions
- You can submit an STX, but the status screens don't make the most
sense right now.
- Improved STX support be handled by
#28460 and
MetaMask/core#4918

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/27262?quickstart=1)

## **Related issues**

- Targeting: #27522

## **Manual testing steps**

1. Go to Bridge
2. Fill in source/dest token and amounts
3. Get a quote
4. Execute Bridge

## **Screenshots/Recordings**

<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->

### **Before**

<!-- [screenshots/recordings] -->

### **After**

<!-- [screenshots/recordings] -->


https://github.com/user-attachments/assets/b73f917d-e3e4-468b-b0fa-29f41f559488




## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
@infiniteflower infiniteflower force-pushed the mb893-cross-chain-swap-tx-status-2 branch from 088a7b4 to 076a868 Compare November 21, 2024 19:45
@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch 4 times, most recently from cc7daf3 to 86a80a0 Compare November 22, 2024 22:00
@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch from 09c70ae to 686cf28 Compare November 26, 2024 20:17
@infiniteflower infiniteflower changed the base branch from mb893-cross-chain-swap-tx-status-2 to cross-chain-swaps-status-ui November 26, 2024 20:17
@metamaskbot
Copy link
Collaborator

Builds ready [098d118]
Page Load Metrics (1915 ± 151 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint36130451750560269
domContentLoaded154429601880309148
load155330231915315151
domInteractive217444178
backgroundConnect981372311
firstReactRender1683322211
getState566242010
initialActions01000
loadScripts114220791366213103
setupStore65615157
uiStartup169631982117327157
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -289 Bytes (-0.00%)
  • ui: 37.58 KiB (0.48%)
  • common: 2.85 KiB (0.03%)

@metamaskbot
Copy link
Collaborator

Builds ready [5b2b7fb]
Page Load Metrics (1707 ± 59 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint15481958171111857
domContentLoaded15331908168211153
load15461960170712359
domInteractive24118492612
backgroundConnect1099272411
firstReactRender1675452311
getState56217199
initialActions01000
loadScripts1102143412349747
setupStore65815168
uiStartup17232262193614971
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: -289 Bytes (-0.00%)
  • ui: 37.6 KiB (0.48%)
  • common: 2.85 KiB (0.03%)

@infiniteflower infiniteflower force-pushed the mb1571-cross-chain-swap-stx branch from f33d3f0 to 86e1202 Compare December 2, 2024 23:14
@metamaskbot
Copy link
Collaborator

Builds ready [42c5559]
Page Load Metrics (1942 ± 103 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint160325311942211101
domContentLoaded159525001909210101
load160325321942215103
domInteractive258339178
backgroundConnect975352311
firstReactRender159224178
getState953241434421
initialActions00000
loadScripts12042006147519192
setupStore77912167
uiStartup189229912250277133
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 521 Bytes (0.01%)
  • ui: 1.17 KiB (0.02%)
  • common: 239 Bytes (0.00%)

@infiniteflower infiniteflower requested a review from a team as a code owner December 4, 2024 15:28
@metamaskbot
Copy link
Collaborator

Builds ready [c577043]
Page Load Metrics (2270 ± 126 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint40126541865741356
domContentLoaded179527842235252121
load184428852270262126
domInteractive26245574622
backgroundConnect9131342914
firstReactRender159128168
getState1182781603416
initialActions01000
loadScripts137721761731213102
setupStore7141021
uiStartup207232562625298143
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 613 Bytes (0.01%)
  • ui: 1.17 KiB (0.02%)
  • common: 239 Bytes (0.00%)

Copy link
Contributor

@dan437 dan437 left a comment

Choose a reason for hiding this comment

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

Nice job! I've shared feedback about some UI improvements in DMs and it will be resolved in upcoming PRs before this feature is enabled in production.

@infiniteflower infiniteflower added this pull request to the merge queue Dec 5, 2024
Merged via the queue into main with commit 58f727f Dec 5, 2024
78 checks passed
@infiniteflower infiniteflower deleted the mb1571-cross-chain-swap-stx branch December 5, 2024 16:50
@github-actions github-actions bot locked and limited conversation to collaborators Dec 5, 2024
@metamaskbot metamaskbot added the release-12.10.0 Issue or pull request that will be included in release 12.10.0 label Dec 5, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
release-12.10.0 Issue or pull request that will be included in release 12.10.0 team-bridge team-swaps
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

4 participants