MetaMask Monthly: January 2020

Monthly updates from the MetaMask Team

MetaMask
Published in
7 min readFeb 4, 2020

--

We are looking for Senior Mobile Developer!

Do you have….

  • A track record of great mobile app development.
  • Familiarity with the Ethereum blockchain, and Decentralized Applications.
  • Strong JavaScript experience.
  • Experience with React Native.

If the answer is yes then we want you to to join our team!
How? Apply Here!!!

MetaMasks MetaTransaction Challenge

This month we announced The Generalized MetaTransaction Contest for the Gitcoin Take Back The Web Hackathon. The purpose was to enable the best possible user experience for building and interacting with decentralized applications. If you didn’t hear about it we gave some context of what we were looking for Here. After all said and done we couldn’t be happier with the results. This hackathon absolutely exceeded our expectations, and has really forced us to rethink what contests can achieve in this space. We give due respect to the contestants and winner of the contest Here.

We began this contest with the goal of engaging community participation around the formation of a standard that could benefit a wide variety of wallets with the smallest effort on the part of developers and end users, and we couldn’t be happier with the results.

We knew this was not an easy task, which is why we posted what was the largest prize for the hackathon. After posting our 20 eth bounty, Gitcoin raised the prize by 1000 DAI, bringing the total prize pool to around ~$4500 equivalent at today’s rates. We were hoping to get even a few people to take a shot, but what we got was so much more.

  • 28 participants registered and began work.
  • 12 participants submitted work.
  • 7 participants submitted work correctly by the deadline.
  • 4 participants satisfied every one of our suggested ideal criteria of a general purpose framework that allows any smart contract to support MetaTransactions for any user (even normal key-based accounts), along with interactive demos that work today. 🤯
  • Bloxis wrote a wonderful blog post advocating for the value of this goal.
  • We got a big thread on ethereum-magicians discussing the initiative.

Congrats To Our Winner!

For drafting a simple yet flexible EIP, making a working demo and code that any developer could try out today, all with replay protection that stood out from all other working submissions, we have decided to award our one prize to wighawag.

Some other stand-out details from wighawag’s entry included heavy reuse of existing EIPs, thoughtful consideration of handling gas limits and failed transactions, using the solc 0.6.1 compiler (very forward-looking), and a UI that is both simple but also allows exploring the more advanced parameters of the protocol. Also by using a global singleton proxy contract, contracts using this standard re-use deployed code (making them cheaper), and transactions are able to be refunded in other tokens than the contract being called.

A screen shot of wighawag’s demo site and one of its EIP-712 signatures, which is both binary efficient and fairly human readable (and will only become more so as it gets more feedback and adoption)

Next we’re hoping to help see wighawag’s EIP-1776 proposal get more experimentation, some security auditing and bug bounties, and then some broader proliferation, with hope of eventually rendering messages like this like normal transactions in web3 wallets like MetaMask.

MetaMask Snaps Highlight

This month a MetaMask user who goes by the GitHub name Brechtpd has built a MetaMask Snap that can be used to sign zkRollup transactions for exchanges built on Loopring! Hes also stated that the transactions can be signed the same way if not better then Ethereum transactions today! In his twitter thread Brech went on to explain “A user’s EdDSA keypair is generated using the secret App Key exposed by their plugin system. The same keypair is regenerated when the user restores from his seed phrase.” You can check out the plugin here!

Don’t know what zkrollups are? EthHub provides a good overview here. The TLDR is that ZK-Rollups are one of the options being developed for layer 2 construction that increases scalability through mass transfer processing rolled into a single transaction.

Google Play App store Removes MetaMask Ban

Last Month Google finally permitted The MetaMask mobile app back on the Google Play (Android) store after an unwarranted suspension. They stated that they had a policy that bans mining on mobile, which we don’t. We submitted an appeal which was to our surprise rejected and they simply echoed the same policy: “No mining on android”. Which we still don’t. It’s unclear whether the reviewer didn't understand the policy, or whether they were enforcing an unwritten policy and there is something else amiss. Either way, it was time to stand up and Protect Web 3.

This isn’t the first time google spontaneously blocked our crypto wallet. Our community spoke loudly then, and we were spontaneously re-listed. Whats unsettling is this isn’t the only sudden and unexplained ban that google has issued this week. There was also a sudden ban of many crypto YouTube accounts.

We would like to thank the thousands who spoke out and supported us on social media showing Google that they wouldn’t support a platform that censors disintermediation. We are certainly aware of the other great browsers out there like Firefox and brave and some nice YouTube alternatives coming out. So if the ban continued longer then it did then we would have started to work on other ways of bringing our services to users confined to the Android platform while they converted to something more open.

Help us help you!

Just recently we have enabled a link on the MetaMask GitHub repository that will allow you to sponsor the work we do here at MetaMask. Since we first started back in 2015 we haven't charged users for access to the product that we provide. Moving into the new year, one thing we are going to focus on is how we can continue to sustain MetaMask in the long run. If you gained value from the product we have built or are excited to see what we are building for the future of the decentralized web please consider sponsoring our work via our Open Collective here.
A one time contribution or reoccurring contribution can take us farther then you know! For example if every one of our active installs (1.2 Million) contributed at least $5, that could help sustain the development of MetaMask for the next few years! We are excited to continue on this path of building a product that bridges you to distributed web of tomorrow and we would appreciate your support on this mission!

Development What’s New?

MetaMask v 7.7.3 is out and auto-updating in browsers near you. Next time you pop it open, check out some of the improvements listed below. These changes are new as of this month.

  • #7484: Ensure transactions are shown in the order they are received. Ensures that the tx-state-manager orders transactions by id, and to ensure that ids are applied in the order they are received by the transaction controller (and not after an indeterminate async operation).
  • #7944: Only resolve ENS on mainnet. This is for the ENS resolver that acts on addresses in the browser address bar; there were usability concerns with resolving testnet addresses there, as the user might not know what the current network is.
  • #7753: Fixed gas estimate for tokens. Fixes an outstanding issue with the send token screen. When advanced gas inputs were showing and token amounts where change, the newly estimated gas value would not be the submitted gas value if there was no blur event before clicking “Submit”.
  • #7473: Fixes batch transaction UX by addressing long-standing errors in batch transaction handling in the UI, and modifying json-rpc-engine's ordered batch request handling. Transactions are now ordered from oldest to newest in the background and in the UI. Users can still freely navigate back and forth.
  • #7501: fixes one part of the accessibility of our checkboxes in the on-boarding flow. We were previously creating custom checkboxes without the correct assistive properties. In part, this now allows keyboard users to tab to and check the checkbox.
  • #7918: Update data on Approve screen after updating custom spend limit
  • #7919: Allow editing max spend limit
  • #7920: Validates custom spend limits
  • #7954: Update ENS registry addresses
  • #7901: Use eth-contract-metadata@1.12.1
  • #7910: Fixing broken JSON import help link
  • #7488: Fix text overlap when expanding transaction
  • #7491: Update gas when asset is changed on send screen
  • #7500: Remove unused onClick prop from Dropdown component
  • #7502: Fix chainId for non standard networks
  • #7519: Fixing hardware connect error display
  • #7579: Prevent Maker migration dismissal timeout state from being overwritten
  • #7581: Persist Maker migration dismissal timeout
  • #7604: Process URL fragment for ens-ipfs redirects
  • #7628: Fix typo that resulted in degrated account menu performance
  • #7558: Use localized messages for NotificationModal buttons

In the past month…

✅ (156) PRs merged

🛠 (231) commits

💫 (37) GitHub issues closed, (42)opened

🔧 900+ support tickets solved last month

💥 11,597 lines of code added and 12,378 deleted.

If you have any questions or suggestions, you can always reach out to us directly or file an issue on our GitHub.

Thanks for reading and stay foxy!!! 🦊

Jason & the MetaMask team

--

--

MetaMask

BizDev & Partnerships at Phantom | Previously @coinbase @metamask_io and @ConsenSys