Add built-in Ethereum remote client / wallet / Dapp browser
See original GitHub issueWe’re in the process of adding a first class Ethereum remote client / wallet feature to Brave by integrating a fork of Metamask that we’ll modify, enhance and maintain. Sometimes native APIs that only Brave supports will be used, in those cases it probably doesn’t make sense to upstream those parts.
We’ll be upstreaming as much as we can to MetaMask. We have been, and will continue to collaborate with the MetaMask team as this work progresses.
Some bigger main differences will be:
- Initial UI will not include a browser action button, but be a menu item in the hamburger menu that opens up the full wallet view.
- Dapp detection UI and popup UI will be used. The user will need to give permission to a page to see any available API (e.g. EIP 1102
window.ethereum
andweb3
). - It will use Brave branding.
- The UI will be modified in some ways.
- The seed key will be derived from the Brave key (currently only used for Sync) via a 1 way transformation. Which means you only need to backup 1 set of BIP-39 style codewords and then you can use either or both of client side encrypted sync and the wallet. Sync uses curve25519 whereas Ethereum uses secp256k1.
Rollout:
- Desktop will be rolled out first.
- Android is in the process of being re-written on top of Brave Core and it will support this feature after we add extension support here https://github.com/brave/brave-browser/issues/4493. We are planning to also tie into Samsung and HTC private enclave and / or wallet.
Future Brave rewards features will integrate and use this wallet support for P2P transactions.
Some stats from MetaMask which are relevant :
Here’s some stats for the month of April for MetaMask:
264,000 MAU
30% of active users confirm on chain transactions
1.5152M transactions
Of 100% of network type activity:
- 63% of activity happens on mainnet
- 14.5% Ropsten
- 8% Rinkeby
- 6% Ganache
- 2% Kovan
- 6.5% Other
Of 100% of initiation type for transactions:
- 76% via popup from apps
- 24% via the user
Privacy Preserving Product Analytics (P3A)
Of 100% transaction types:
- 18% token transfers
- 12% ETH sends
- 3% approve
- 2.5% transfer from
- 0.2% contract deployment
- 64% Other contract interaction
Top mainnet sites by volume:
- 0x universe
- Cryptokitties
- Dice 2 Win
- Axie Infinity
- Fork Delta
Diversity of transactions to apps:
- Over 25 apps have over 5k transactions
Source: https://medium.com/metamask/metamask-metrics-fbec0e2ceaa7
Here are the issues closed as part of this feature: https://github.com/brave/brave-browser/issues?q=label%3Afeature%2Fcrypto-wallets+is%3Aclosed
Test Plan
I’m going to need help with this but:
-
New profile and navigating to brave://wallet or chrome://wallet should take a bit longer the first time and actually install the component and work seamlessly.
-
New profile and instead going to the hamburger menu for crypto wallet should do the same and install and open the wallet.
-
Chromium Process Task Manager in the hamburger menu tools should not show that it is running before installing it via one of the 2 above methods.
-
Test basic wallet functionality for ETH send/receive
-
Test basic wallet functionality for ERC20 send/receive
-
Test basic Dapp functionality, buy a cryptokitty and Sire it. Use a Dex.
-
Try changing from mainnet to another network, make sure it works.
-
Check closed issues that are labeled feature/crypto-wallets inside of 0.70.x milestone for more ideas.
Issue Analytics
- State:
- Created 4 years ago
- Reactions:20
- Comments:8 (7 by maintainers)
Top GitHub Comments
sgtm
Can you please elaborate, why it needs to wait for it?