brave / brave-browser

Brave browser for Android, iOS, Linux, macOS, Windows.
https://brave.com
Mozilla Public License 2.0
17.81k stars 2.33k forks source link

Add Brave Swap to Crypto Wallets #15859

Closed onyb closed 3 years ago

onyb commented 3 years ago

Improve layout of the Swap page

Status: ✅ (https://github.com/brave/ethereum-remote-client/pull/237)

Allow asset dropdowns to have an unselected state

Add a state to display a "Select asset" text when:

Status: ✅ (https://github.com/brave/ethereum-remote-client/pull/240)

Swap amount validation

The amount entered must be validated against the available token balance AND the available ETH for paying gas.

Status: ✅ (https://github.com/brave/ethereum-remote-client/pull/241)

Gas computation

The current gas estimates are completely off and need to be fixed. Here is a list of related TODOs.

Status: ✅ (https://github.com/brave/ethereum-remote-client/pull/240 and https://github.com/brave/ethereum-remote-client/pull/241)

Max amount button

Add a button near the From asset field, allowing users to set the maximum available balance in the amount field. The logic for this already exists (from the Send workflow), but there is some cleanup and integration work to do.

Status: ✅ (https://github.com/brave/ethereum-remote-client/pull/241)

Add more tokens as Swap pairs

The allowed asset pairs are currently hardcoded. We need to obtain the list of tokens supported by 0x API, and add it to our Swap implementation.

Status: ✅ (https://github.com/brave/ethereum-remote-client/pull/240)

Quote refresh

Periodically obtain a fresh quote (say every 30 seconds) and update the Redux state. Also needs to be done whenever there's a change in asset pairs and the amount. The queries to the API must be debounced.

Also, implement a countdown in the UI.

Status: ✅ (https://github.com/brave/ethereum-remote-client/pull/240)

Search

Users should be able to search for tokens. Fuse.js can be used to implement fuzzy search. Most of the work is on the UI side.

Status: TODO

Fix component unit tests

Status: ⏭️ ONGOING

Code cleanups

Several components have leftover code from the Send boilerplate. Additionally, certain files could benefit from higher-order components to avoid duplication of code.

Status: ⏭️ (https://github.com/brave/ethereum-remote-client/pull/242)

End-to-end swap

We need to carefully audit that the generated raw transaction is actually valid.

Nice to have: deploy 0x contracts and Swap API locally and perform an end-to-end swap transaction.

Status: ⏭️ (https://github.com/brave/ethereum-remote-client/pull/242)

~Approval screen (nice to have)~

~This is not necessary to roll out the first version of the Swap feature, but an additional screen for "Sign" would be nice to have. Today, the user must approve the swap from the transaction queue, which is not ideal.~

Update: User is now automatically redirected to a view for approving the transaction. Status: ⏭️ (https://github.com/brave/ethereum-remote-client/pull/242)

Specify spending allowance

Allow user to approve token spending allowance. Requires a dedicated screen.

Status: ⏭️ (https://github.com/brave/ethereum-remote-client/pull/242)

srirambv commented 3 years ago

Verification passed on

Brave 1.26.67 Chromium: 91.0.4472.114 (Official Build) (x86_64)
Revision 4bb19460e8d88c3446b360b0df8fd991fee49c0b-refs/branch-heads/4472@{#1496}
OS macOS Version 10.15.7 (Build 19H114)
Component 1.0.31 Dev
Verified test plan from brave/ethereum-remote-client#244 - Verified able to swap ETH to an ERC token successfully ([Txhash](0xab15c13f5794dc63314e2c23b63303e73cd42092f9f15e300a6969652b56e7eb)) ![image](https://user-images.githubusercontent.com/17010094/123972365-b04a5680-d9b2-11eb-9f54-a0fe084299ac.png) - Verified able to swap an ERC20 Token to another ERC 20 Token ([Approval](https://etherscan.io/tx/0x1aec2ab1cd592ae367498d4036ca16af0eaf904962b05830114bb5b9908696c0) [Txhash](https://etherscan.io/tx/0x88c67894647722e81d6d8e7d5d61d136536f05c223762876aff54737af814f08)) ![image](https://user-images.githubusercontent.com/17010094/124085994-83e11980-da48-11eb-90a4-3e0b22301ba6.png) - Verified swap transactions from `ETH -> ERC20` or `ERC20 -> ERC20` includes `0.875%` Brave fees sent to `0xbd9420a98a7bd6b89765e5715e169481602d9c3d` `ETH -> LINK` | `BAT -> DAI` -- | -- ![image](https://user-images.githubusercontent.com/17010094/124086413-f05c1880-da48-11eb-9d68-5279f02d213f.png) | ![image](https://user-images.githubusercontent.com/17010094/124086354-e0443900-da48-11eb-88a6-416faa0d5fe4.png) **Swap amount validation** - Verified amount entered is validated against the available balance taking Gas fee into account Balance + Fee Included | Insufficient funds | Insufficient gas fee | Insufficient funds + Insufficient gas -- | -- | -- | -- ![image](https://user-images.githubusercontent.com/17010094/124086926-6ceef700-da49-11eb-85a6-c951f92b76b8.png) | ![image](https://user-images.githubusercontent.com/17010094/124086960-75dfc880-da49-11eb-87f8-14709d483d3b.png) | ![image](https://user-images.githubusercontent.com/17010094/124088551-f2bf7200-da4a-11eb-902a-08cbff71363b.png) | ![image](https://user-images.githubusercontent.com/17010094/124088682-15ea2180-da4b-11eb-9f4d-aa25ec099bd3.png) **Gas computation** - Verified live quotes & gas computations are shown and update as soon as the input value is changed https://user-images.githubusercontent.com/17010094/124100910-c6a9ee00-da56-11eb-800d-d3ebb68ca108.mov **Max amount button** - Verified max button is shown above input field - Verified selecting max button pre-populates the input field with available balance for the selected token - Verified manually entered value is replaced with all available balance when max button is clicked - Verified if manually entered value is more than available balance, clicking max button resets value to the available balance https://user-images.githubusercontent.com/17010094/124104186-ebec2b80-da59-11eb-919c-a645e4e43353.mov **Tokens as Swap pairs**
Verified 311 tokens are added for swap pairs ```html
ETH
WETH
USDT
USDC
UNI
LINK
BUSD
MATIC
WBTC
DAI
AAVE
0XBTC
1INCH
2KEY
ABAT
ABUSD
ADAI
ADX
AE
AENJ
AERGO
AKNC
ALEPH
ALINK
AMANA
AMKR
AMLT
AMPL
ANT
APPC
AREN
ART
ASNX
AST
ASUSD
ATRI
ATUSD
AUC
AUSDC
AUSDT
AVAL
AWBTC
AXN
AZRX
BADGER
BAL
BASIC
BAT
BC
BCPT
BETHER
BLZ
BMX
BNT
BOA
BOB
BOX
BTU
C20
CAG
CAMP
CAT
CBAT
CDAI
CEL
CELR
CETH
CHAI
CHSB
COMP
CRBN
CREP
CRO
CRU
CSAI
CUSDC
CUSDT
CVP
CWBTC
CZRX
DATA
DAY
DCN
DDIM
DDX
DF
DG
DGD
DIA
DKA
DMST
DNT
DODO
DRC
DREAM
DRT
DTH
DUCK
EDG
EL
ELF
ELTCOIN
ELY
ENG
ENJ
ENTRP
ETHBNT
EURS
FET
FKX
FLX
FNT
FOAM
FRM
FTM
FUN
FWB
GAME
GEN
GET
GLM
GLQ
GNO
GOLD
GRID
GRT
GUP
GUSD
HEX
HGT
HOT
HUNT
HUSD
IDRT
IMP
IND
IQN
JET
JOY
KEEP
KEY
KNCL
KTON
LDO
LEND
LGO
LMY
LOOMOLD
LPT
LRC
LTO
LUN
LUNA
LVN
MAAPL
MAHA
MAMZN
MANA
MAS
MATTER
MBABA
MDX
MET
METM
MFT
MGOOGL
MIAU
MINDS
MIR
MITH
MKR
MLN
MMSFT
MNFLX
MOD
MQQQ
MSLV
MTA
MTL
MTLX
MTSLA
MTWTR
MUSD
MUSO
MVIXY
MYB
NANJ
NBU
NCT
NDX
NEU
NEXO
NMR
OCTO
OGN
OGO
OMG
ONE
ORBS
OST
OUSD
OVR
OXT
PARETO
PAX
PAXG
PERL
PERP
PKT
PLA
PLAY
PLOT
PLR
PLU
PNK
POLY
POOLZ
POP
POWR
PPT
PROPS
QNT
QRX
QSP
RAE
RAI
RARI
RBC
RDN
REEF
REN
RENBCH
RENBTC
RENFIL
RENZEC
REP
REQ
REVV
RFI
RFR
RFUEL
RING
RLC
RNDR
ROOBEE
ROOK
ROUTE
RVT
SAI
SAN
SATT
SBTC
SETH
SIG
SKL
SKM
SNGLS
SNT
SNTVT
SNX
SOUL
SPANK
SPN
SPND
STAKE
STAR
STETH
STMX
STORJ
SUSD
SWM
SWT
SYAX
SYFL
SYLO
TBTC
TKN
TLN
TOP
TRST
TUSD
UBI
UMA
UPX
USDN
USDS
USDX
UST
VAL
VIDT
VSP
WINGS
WIS
WISE
WOO
WTC
XAUR
XBP
XGG
XNK
XOR
YEED
YFDOT
YFI
YFL
YLD
ZAP
ZCRT
ZEON
ZORA
ZRX
```
**Quote refresh** - Verified quote auto-refreshes every 40secs - Verified if the input value is changed or the GWEI is changed, quote is auto-reset to 40 sec and refreshes value very 40 sec https://user-images.githubusercontent.com/17010094/124108302-01635480-da5e-11eb-92ce-4a44204bd7e6.mov **ERC20 -> ERC20 Approval & Swap** - Verified selecting an ERC20 token to swap to another ERC20 token brings up approval (LINK -> DAI) [Confirmation of approval](https://etherscan.io/tx/0x40bfc4ef87c84e4581928402b598691f99c6d2503a5cca47f49ecc4d24f6d245) [Transaction](https://etherscan.io/tx/0xcf78894c82dfa4961e343bf2b9d28cd08eeeed4989e9adacccc8cf4609dd2051) **Swap using Hardware Keys** - Verified able to connect Ledger Nano to the CW successfully - Verified able to perform a swap using Ledger Nano ([Txhash](https://etherscan.io/tx/0xb35e9906d7b1552612048b7c41738b098dea697e344c0235ce03f57dc4dff1a0)) **Set Allowance Warning** - Verified set allowance tooltip is shown conditionally when an allowance is set in the past ![image](https://user-images.githubusercontent.com/17010094/124267546-4e176000-db30-11eb-9973-c2935f9150d8.png)

Verification passed on

Brave 1.27.87 Chromium: 91.0.4472.124 (Official Build) beta (64-bit)
Revision 7345a6d1bfcaff81162a957e9b7d52649fe2ac38-refs/branch-heads/4472_114@{#6}
OS Windows 10 OS Version 2009 (Build 19043.1052)
Component 1.0.32 Dev
Verified test plan from brave/ethereum-remote-client#244 - Verified able to swap ETH to an ERC token successfully ([Txhash](https://etherscan.io/tx/0x6bf6cc405fb652c6036589ca7c97b7e8ecc2cdbbdaa13a1b33a296f97fa8d4a7)) ![image](https://user-images.githubusercontent.com/17010094/124273981-9cc8f800-db38-11eb-94d3-e59459835fc8.png) - Verified able to swap an ERC20 Token to another ERC 20 Token ([Approval](https://etherscan.io/tx/0x78fbae14ccb832d1653106f9a5d3f7de1fd7c60097e7e247d7a291dd2fa75131) [Txhash](https://etherscan.io/tx/0xbd02daf0e337caf2671f9ec665641d59577945bb893d07a3499e487481214894)) ![image](https://user-images.githubusercontent.com/17010094/124273772-596e8980-db38-11eb-8ead-4f124268bbc5.png) - Verified swap transactions from `ETH -> ERC20` or `ERC20 -> ERC20` includes `0.875%` Brave fees sent to `0xbd9420a98a7bd6b89765e5715e169481602d9c3d` `ETH -> BAT` | `DAI -> LINK` -- | -- ![image](https://user-images.githubusercontent.com/17010094/124274075-bcf8b700-db38-11eb-9d1a-ce44e1751921.png) | ![image](https://user-images.githubusercontent.com/17010094/124273682-3c39bb00-db38-11eb-9894-38f9a76ee802.png) **Swap amount validation** - Verified amount entered is validated against the available balance taking Gas fee into account Balance + Fee Included | Insufficient funds | Insufficient gas fee | Insufficient funds + Insufficient gas -- | -- | -- | -- ![image](https://user-images.githubusercontent.com/17010094/124276112-51fcaf80-db3b-11eb-909a-7fd2e37aa178.png) | ![image](https://user-images.githubusercontent.com/17010094/124276063-43ae9380-db3b-11eb-972e-c98769b4d856.png) | ![image](https://user-images.githubusercontent.com/17010094/124276500-c9cada00-db3b-11eb-9324-dd8c07ac6e8b.png) | ![image](https://user-images.githubusercontent.com/17010094/124276592-eb2bc600-db3b-11eb-8ab3-d60177a1e286.png) **Gas computation** - Verified live quotes & gas computations are shown and update as soon as the input value is changed https://user-images.githubusercontent.com/17010094/124269767-37bed380-db33-11eb-960b-b6f63c064c0d.mov **Max amount button** - Verified max button is shown above input field - Verified selecting max button pre-populates the input field with available balance for the selected token - Verified manually entered value is replaced with all available balance when max button is clicked - Verified if manually entered value is more than available balance, clicking max button resets value to the available balance https://user-images.githubusercontent.com/17010094/124277128-9ccaf700-db3c-11eb-98c1-f6ced2ac060b.mov **Tokens as Swap pairs**
Verified 311 tokens are added for swap pairs ```html
ETH
WETH
USDT
USDC
UNI
LINK
BUSD
MATIC
WBTC
DAI
AAVE
0XBTC
1INCH
2KEY
ABAT
ABUSD
ADAI
ADX
AE
AENJ
AERGO
AKNC
ALEPH
ALINK
AMANA
AMKR
AMLT
AMPL
ANT
APPC
AREN
ART
ASNX
AST
ASUSD
ATRI
ATUSD
AUC
AUSDC
AUSDT
AVAL
AWBTC
AXN
AZRX
BADGER
BAL
BASIC
BAT
BC
BCPT
BETHER
BLZ
BMX
BNT
BOA
BOB
BOX
BTU
C20
CAG
CAMP
CAT
CBAT
CDAI
CEL
CELR
CETH
CHAI
CHSB
COMP
CRBN
CREP
CRO
CRU
CSAI
CUSDC
CUSDT
CVP
CWBTC
CZRX
DATA
DAY
DCN
DDIM
DDX
DF
DG
DGD
DIA
DKA
DMST
DNT
DODO
DRC
DREAM
DRT
DTH
DUCK
EDG
EL
ELF
ELTCOIN
ELY
ENG
ENJ
ENTRP
ETHBNT
EURS
FET
FKX
FLX
FNT
FOAM
FRM
FTM
FUN
FWB
GAME
GEN
GET
GLM
GLQ
GNO
GOLD
GRID
GRT
GUP
GUSD
HEX
HGT
HOT
HUNT
HUSD
IDRT
IMP
IND
IQN
JET
JOY
KEEP
KEY
KNCL
KTON
LDO
LEND
LGO
LMY
LOOMOLD
LPT
LRC
LTO
LUN
LUNA
LVN
MAAPL
MAHA
MAMZN
MANA
MAS
MATTER
MBABA
MDX
MET
METM
MFT
MGOOGL
MIAU
MINDS
MIR
MITH
MKR
MLN
MMSFT
MNFLX
MOD
MQQQ
MSLV
MTA
MTL
MTLX
MTSLA
MTWTR
MUSD
MUSO
MVIXY
MYB
NANJ
NBU
NCT
NDX
NEU
NEXO
NMR
OCTO
OGN
OGO
OMG
ONE
ORBS
OST
OUSD
OVR
OXT
PARETO
PAX
PAXG
PERL
PERP
PKT
PLA
PLAY
PLOT
PLR
PLU
PNK
POLY
POOLZ
POP
POWR
PPT
PROPS
QNT
QRX
QSP
RAE
RAI
RARI
RBC
RDN
REEF
REN
RENBCH
RENBTC
RENFIL
RENZEC
REP
REQ
REVV
RFI
RFR
RFUEL
RING
RLC
RNDR
ROOBEE
ROOK
ROUTE
RVT
SAI
SAN
SATT
SBTC
SETH
SIG
SKL
SKM
SNGLS
SNT
SNTVT
SNX
SOUL
SPANK
SPN
SPND
STAKE
STAR
STETH
STMX
STORJ
SUSD
SWM
SWT
SYAX
SYFL
SYLO
TBTC
TKN
TLN
TOP
TRST
TUSD
UBI
UMA
UPX
USDN
USDS
USDX
UST
VAL
VIDT
VSP
WINGS
WIS
WISE
WOO
WTC
XAUR
XBP
XGG
XNK
XOR
YEED
YFDOT
YFI
YFL
YLD
ZAP
ZCRT
ZEON
ZORA
ZRX
```
**Quote refresh** - Verified quote auto-refreshes every 40secs - Verified if the input value is changed or the GWEI is changed, quote is auto-reset to 40 sec and refreshes value very 40 sec https://user-images.githubusercontent.com/17010094/124277609-2084e380-db3d-11eb-846f-c523796a1410.mov **ERC20 -> ERC20 Approval & Swap** - Verified selecting an ERC20 token to swap to another ERC20 token brings up approval (DAI -> MATIC) [Confirmation of approval](https://etherscan.io/tx/0xa911b502ebbeccacaf4ba6df0f119271a0de7aca55093a9ae133a0bf72df8c3c) [Transaction](https://etherscan.io/tx/0x1e9f0ee5e49e58b6cb433133a6ca592eeb82f6e1c9f19f8a58aafbe1298b588c) **Swap using Hardware Keys** - Verified able to connect Ledger Nano to the CW successfully - Verified able to perform a swap using Ledger Nano ([Txhash]()) **Set Allowance Warning** - Verified set allowance tooltip is shown conditionally when an allowance is set in the past ![image](https://user-images.githubusercontent.com/17010094/124268747-d3e7db00-db31-11eb-8b05-7d594d614d05.png)

Verification passed on

Brave 1.28.37 Chromium: 91.0.4472.124 (Official Build) nightly (64-bit)
Revision 7345a6d1bfcaff81162a957e9b7d52649fe2ac38-refs/branch-heads/4472_114@{#6}
OS Linux
Component 1.0.32 Dev
Verified test plan from brave/ethereum-remote-client#244 - Verified able to swap ETH to an ERC token successfully ([Txhash](https://etherscan.io/tx/0xaa5dfc277dc20954b9e3e18c2ff239287f1701548f54850a6b189ff05e42b74b)) ![image](https://user-images.githubusercontent.com/17010094/124291297-57aec100-db4c-11eb-8bff-871cfb03b233.png) - Verified able to swap an ERC20 Token to another ERC 20 Token ([Approval]() [Txhash](https://etherscan.io/tx/0x074309a651fcf34ceac43495db154d1a52fa0cb1918f957fc010a29545ea878f)) - Verified swap transactions from `ETH -> ERC20` or `ERC20 -> ERC20` includes `0.875%` Brave fees sent to `0xbd9420a98a7bd6b89765e5715e169481602d9c3d` `ETH -> LINK` | `LINK - BAT` -- | -- ![image](https://user-images.githubusercontent.com/17010094/124295086-55e6fc80-db50-11eb-91c8-068ef4c816d8.png) | ![image](https://user-images.githubusercontent.com/17010094/124283824-3ea21200-db44-11eb-8d87-f637ef291abe.png) **Swap amount validation** - Verified amount entered is validated against the available balance taking Gas fee into account Balance + Fee Included | Insufficient funds | Insufficient gas fee | Insufficient funds + Insufficient gas -- | -- | -- | -- ![image](https://user-images.githubusercontent.com/17010094/124287297-c2a9c900-db47-11eb-8718-1a4f04c137d5.png) | ![image](https://user-images.githubusercontent.com/17010094/124287032-79f21000-db47-11eb-8b53-0493dff3e036.png) | ![image](https://user-images.githubusercontent.com/17010094/124287073-84140e80-db47-11eb-8d4f-d82b9daab478.png) | ![image](https://user-images.githubusercontent.com/17010094/124287138-942bee00-db47-11eb-851b-50ac806c8253.png) **Gas computation** - Verified live quotes & gas computations are shown and update as soon as the input value is changed https://user-images.githubusercontent.com/17010094/124289250-01d91980-db4a-11eb-862b-8ae7a8b3d85b.mp4 **Max amount button** - Verified max button is shown above input field - Verified selecting max button pre-populates the input field with available balance for the selected token - Verified manually entered value is replaced with all available balance when max button is clicked - Verified if manually entered value is more than available balance, clicking max button resets value to the available balance https://user-images.githubusercontent.com/17010094/124289353-1d442480-db4a-11eb-89e4-8e31606ba0da.mp4 **Tokens as Swap pairs**
Verified 311 tokens are added for swap pairs ```html
ETH
WETH
USDT
USDC
UNI
LINK
BUSD
MATIC
WBTC
DAI
AAVE
0XBTC
1INCH
2KEY
ABAT
ABUSD
ADAI
ADX
AE
AENJ
AERGO
AKNC
ALEPH
ALINK
AMANA
AMKR
AMLT
AMPL
ANT
APPC
AREN
ART
ASNX
AST
ASUSD
ATRI
ATUSD
AUC
AUSDC
AUSDT
AVAL
AWBTC
AXN
AZRX
BADGER
BAL
BASIC
BAT
BC
BCPT
BETHER
BLZ
BMX
BNT
BOA
BOB
BOX
BTU
C20
CAG
CAMP
CAT
CBAT
CDAI
CEL
CELR
CETH
CHAI
CHSB
COMP
CRBN
CREP
CRO
CRU
CSAI
CUSDC
CUSDT
CVP
CWBTC
CZRX
DATA
DAY
DCN
DDIM
DDX
DF
DG
DGD
DIA
DKA
DMST
DNT
DODO
DRC
DREAM
DRT
DTH
DUCK
EDG
EL
ELF
ELTCOIN
ELY
ENG
ENJ
ENTRP
ETHBNT
EURS
FET
FKX
FLX
FNT
FOAM
FRM
FTM
FUN
FWB
GAME
GEN
GET
GLM
GLQ
GNO
GOLD
GRID
GRT
GUP
GUSD
HEX
HGT
HOT
HUNT
HUSD
IDRT
IMP
IND
IQN
JET
JOY
KEEP
KEY
KNCL
KTON
LDO
LEND
LGO
LMY
LOOMOLD
LPT
LRC
LTO
LUN
LUNA
LVN
MAAPL
MAHA
MAMZN
MANA
MAS
MATTER
MBABA
MDX
MET
METM
MFT
MGOOGL
MIAU
MINDS
MIR
MITH
MKR
MLN
MMSFT
MNFLX
MOD
MQQQ
MSLV
MTA
MTL
MTLX
MTSLA
MTWTR
MUSD
MUSO
MVIXY
MYB
NANJ
NBU
NCT
NDX
NEU
NEXO
NMR
OCTO
OGN
OGO
OMG
ONE
ORBS
OST
OUSD
OVR
OXT
PARETO
PAX
PAXG
PERL
PERP
PKT
PLA
PLAY
PLOT
PLR
PLU
PNK
POLY
POOLZ
POP
POWR
PPT
PROPS
QNT
QRX
QSP
RAE
RAI
RARI
RBC
RDN
REEF
REN
RENBCH
RENBTC
RENFIL
RENZEC
REP
REQ
REVV
RFI
RFR
RFUEL
RING
RLC
RNDR
ROOBEE
ROOK
ROUTE
RVT
SAI
SAN
SATT
SBTC
SETH
SIG
SKL
SKM
SNGLS
SNT
SNTVT
SNX
SOUL
SPANK
SPN
SPND
STAKE
STAR
STETH
STMX
STORJ
SUSD
SWM
SWT
SYAX
SYFL
SYLO
TBTC
TKN
TLN
TOP
TRST
TUSD
UBI
UMA
UPX
USDN
USDS
USDX
UST
VAL
VIDT
VSP
WINGS
WIS
WISE
WOO
WTC
XAUR
XBP
XGG
XNK
XOR
YEED
YFDOT
YFI
YFL
YLD
ZAP
ZCRT
ZEON
ZORA
ZRX
```
**Quote refresh** - Verified quote auto-refreshes every 40secs - Verified if the input value is changed or the GWEI is changed, quote is auto-reset to 40 sec and refreshes value very 40 sec https://user-images.githubusercontent.com/17010094/124289564-5f6d6600-db4a-11eb-98ce-aca12b73b758.mp4 **ERC20 -> ERC20 Approval & Swap** - Verified selecting an ERC20 token to swap to another ERC20 token brings up approval (BUSD -> LINK) [Confirmation of approval](https://etherscan.io/tx/0x9d8dd9f5a287b377a2af639613fbf15da19bfe8ae701907a05c468c32cd0c732) [Transaction](https://etherscan.io/tx/0xbb2febe4b46da00c8b6201e8538c4e6cb94bea68fc488ef6637a28ec842787af) **Swap using Hardware Keys** - Verification not done as Linux still has issues with connecting to hardware keys **Set Allowance Warning** - Verified set allowance tooltip is shown conditionally when an allowance is set in the past ![image](https://user-images.githubusercontent.com/17010094/124293669-cc82fa80-db4e-11eb-87da-baa16c60a334.png)