<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Dan Finlay on Medium]]></title>
        <description><![CDATA[Stories by Dan Finlay on Medium]]></description>
        <link>https://medium.com/@danfinlay?source=rss-9cdd320de5c9------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*zuB4aoCNjVTRiNyfkbu4zg@2x.jpeg</url>
            <title>Stories by Dan Finlay on Medium</title>
            <link>https://medium.com/@danfinlay?source=rss-9cdd320de5c9------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 20:51:13 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@danfinlay/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Security Notice: Extension Disk Encryption Issue]]></title>
            <link>https://medium.com/metamask/security-notice-extension-disk-encryption-issue-d437d4250863?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/d437d4250863</guid>
            <category><![CDATA[metamask]]></category>
            <category><![CDATA[security]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Wed, 15 Jun 2022 16:02:59 GMT</pubDate>
            <atom:updated>2022-06-15T16:12:28.171Z</atom:updated>
            <content:encoded><![CDATA[<h4>Researchers from Halborn found a case where user keys could be found unencrypted on disk in rare edge cases, which has been fixed for MetaMask Extension versions 10.11.3 and later</h4><h4><strong>Background</strong></h4><p>Security researchers at <a href="https://halborn.com/">Halborn</a> have disclosed an instance where a Secret Recovery Phrase used by web based wallets like MetaMask could be extracted from the disk of a compromised computer under some conditions. The following does <strong>not</strong> impact MetaMask Mobile users, and impacts a small segment of MetaMask Extension users as well as users of other browser/extension wallets. We felt this violated the user expectations of our password lock feature, and could therefore put some users at risk. We have since implemented mitigations for these issues, so these should not be problems for users of the MetaMask Extension versions 10.11.3 and later. <strong>If all of the following three conditions apply to you, you may be at risk</strong>, and you should read below for next steps:</p><ul><li>Your hard drive was unencrypted</li><li>You imported your Secret Recovery Phrase into a MetaMask extension <strong>on a device that is in possession of someone you do not trust, or your computer is compromised</strong></li><li>You used the “Show Secret Recovery Phrase” checkbox to view your Secret Recovery Phrase on-screen during that import process. (<em>see image</em>)</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*YbZt9F79EPRX1Le6" /></figure><p><strong>Impact</strong></p><p>This affects:</p><ul><li>All desktop operating systems and browsers that we have tested.</li><li>We tested on Windows, macOS, and Linux, with Google Chrome, Chromium, and Firefox browsers.</li><li>All versions of the MetaMask extension (prior to v10.11.3) on all browser versions.</li></ul><p>This does <em>not</em> affect MetaMask Mobile.</p><p>The Secret Recovery Phrase <em>does get cleared eventually</em>, but we cannot make guarantees about when at this time.</p><p>This vulnerability is most likely to affect users who had a device compromised or stolen soon after importing their Secret Recovery Phrase into MetaMask.</p><p>If all of the above conditions apply to you, then your Secret Recovery Phrase may be accessible to someone with access to the computer you imported your Secret Recovery Phrase on, and you may want to consider <a href="https://metamask.zendesk.com/hc/en-us/articles/4867408571803">migrating</a> funds from those accounts to be safe. We have prepared <a href="https://metamask.zendesk.com/hc/en-us/articles/4867408571803">a guide to migrating account funds here</a>. Use of any third party migration tools must be used at your own risk.</p><p>This vulnerability could be exploited either by a person with physical access to your machine or by malware. However, if your device is compromised by malware, there are already many other attacks we cannot protect against (like keyloggers, direct memory access, and program control).</p><p><strong>If you think you are vulnerable to this</strong></p><p>If your computer is not physically secure from people you do not trust, we recommend you <a href="https://metamask.zendesk.com/hc/en-us/articles/4425628474651-Enable-Full-Disk-Encryption-for-Improved-Physical-Security">enable full disk encryption on your system</a>. Additionally, you are not affected by this if your funds are managed by a hardware wallet. <a href="https://metamask.zendesk.com/hc/en-us/articles/4408552261275-Hardware-Wallet-Hub"><em>You can learn more about our hardware wallet support here</em></a><em>.</em></p><p>Affected users should consider migrating the funds from the accounts generated by that Secret Recovery Phrase to new accounts generated by a new Secret Recovery Phrase. <strong>We’ve </strong><a href="https://metamask.zendesk.com/hc/en-us/articles/4867408571803"><strong>set up a guide to help you do this</strong></a> if needed, and assembled a few software options that can help make it easier.</p><p>The rest of this document will provide some additional details, and suggestions about how to best keep your wallet safe. At a later date we will disclose more specifics about the nature of the issue, so that other software developers can avoid these issues themselves, but for now we are first disclosing recommended user actions to minimize the risks of theft.</p><p><strong>How secure am I?</strong></p><p>As stated before, if a computer is compromised–either outside of your physical control, or has malicious software on it–you can’t be sure of the security of any program running on it.</p><p>This is a problem that has been <a href="https://techmonitor.ai/techonology/hardware/password-manager-security">acknowledged and discussed by the 1Password team,</a> a popular password manager. Explaining the difficulties in solving it, Jeffrey Goldberg, a Principal Security Architect at 1Password, stated: “This is a well-known issue that’s been publicly discussed many times before, but any plausible cure may be worse than the disease.”</p><p>If you’re using a password manager, you’re likely more secure than those who aren’t — yet <a href="https://techmonitor.ai/techonology/hardware/password-manager-security">even password managers aren’t immune to flaws</a>.</p><p><strong>Conclusion</strong></p><p>Ultimately we’ve learned that our password encryption feature’s security was partially undermined by browser behavior. Since <a href="https://chromium.googlesource.com/chromium/src/+/master/docs/security/faq.md#why-arent-physically_local-attacks-in-chromes-threat-model">browsers themselves consider physical access attacks to be outside of their threat model</a>, and our current wallet is built on top of the browser, it has proven labor-intensive to reduce the size of this attack surface, and it may be impossible to fully eliminate it. Ultimately it is likely that only <a href="https://metamask.zendesk.com/hc/en-us/articles/4425628474651-Enable-Full-Disk-Encryption-for-Improved-Physical-Security">full disk encryption</a> can provide your computer strong safety against physical computer access.</p><p><strong>Is this something that you should have expected</strong>? It depends whether you thought your Secret Recovery Phrase could be recovered on disk or not. If you assumed your computer needed to be kept secure, you should be fine. If you believed the MetaMask password implied that no one with access to your computer was able to extract your accounts, then this may be a surprise to you.</p><p>At a high level, it should generally be expected for computers/browsers/etc. to store text inputs on some level, whether temporarily or permanently. However, due to the nature of how significant it is to keep your Secret Recovery Phrase secure, this specific scenario needs attention brought to it so users can act accordingly.</p><p>Fortunately, it seems that the password is still providing some level of security. We’ve only found that the Secret Recovery Phrase could be extracted under very specific circumstances, and we’ve been able to introduce new protections over the period that Halborn has waited to disclose, and have a few more we plan to implement. We will continue to introduce additional security mechanisms that reduce this risk even more. This means it is still good practice to lock your wallet if you’re not using it (or passing your computer to someone else).</p><p><strong>A few important things:</strong></p><ol><li><strong>Please take the time to </strong><a href="https://metamask.zendesk.com/hc/en-us/articles/4425628474651-Enable-Full-Disk-Encryption-for-Improved-Physical-Security"><strong>enable full disk encryption</strong></a><strong> on your computer</strong>. It’s the only way to be sure that someone with physical access to your computer isn’t able to extract all of its contents. We also recommend the usage of <a href="https://metamask.zendesk.com/hc/en-us/articles/4408552261275-Hardware-Wallet-Hub">hardware wallets</a> as an additional security measure.</li><li><strong>Clear your browser cache data</strong> (our research shows this may help some users in some cases)</li><li><strong>Remember that it’s your responsibility to keep your computer secure</strong>. No wallet or software can keep itself safe if the system it runs on is compromised. Take time to learn how to avoid installing a virus on your computer.</li></ol><p><strong>Here are a few guides for keeping different operating systems secure:</strong></p><ul><li><a href="https://support.microsoft.com/en-us/windows/keep-your-computer-secure-at-home-c348f24f-a4f0-de5d-9e4a-e0fc156ab221">Windows</a></li><li><a href="https://support.apple.com/en-in/guide/mac-help/flvlt003/mac">Mac</a></li><li><a href="https://support.apple.com/guide/iphone/use-built-in-security-and-privacy-protections-iph6e7d349d1/ios">iOS</a></li><li><a href="https://blog.google/products/android/top-tips-keeping-data-safe-and-secure-android/">Android</a></li><li><a href="https://safecomputing.umich.edu/protect-yourself/secure-your-devices/personal-computer/linuxunix">Linux</a></li></ul><p><strong>Conclusion</strong></p><p>We’d like to express our thanks to the team at <a href="https://halborn.com/">Halborn</a> for responsibly disclosing this, and for all of their hard work helping to protect this space. See <a href="https://halborn.com/blog/">more of their work</a>.</p><p>We’ve awarded Halborn $50,000 USD for this discovery.</p><p>Have concerns, want to learn more, or have a bug you’d like to disclose? Please reach out to us at <a href="mailto:security@metamask.io">security@metamask.io</a>.</p><p><strong>MetaMask is hiring!</strong> If you’re someone who can help make our products and this industry safer and more secure, consider <a href="https://consensys.net/open-roles/?role=security">joining our team</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d437d4250863" width="1" height="1" alt=""><hr><p><a href="https://medium.com/metamask/security-notice-extension-disk-encryption-issue-d437d4250863">Security Notice: Extension Disk Encryption Issue</a> was originally published in <a href="https://medium.com/metamask">MetaMask</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Welcoming MyCrypto to MetaMask]]></title>
            <link>https://medium.com/metamask/welcoming-mycrypto-to-metamask-8ee46e2ae740?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/8ee46e2ae740</guid>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[wallet]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[metamask]]></category>
            <category><![CDATA[ethereum]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Tue, 01 Feb 2022 14:02:14 GMT</pubDate>
            <atom:updated>2022-02-01T14:02:14.802Z</atom:updated>
            <content:encoded><![CDATA[<p>Building a wallet takes hard work and smart design. Building a crypto wallet that survives multiple market cycles but maintains a laser focus on user safety and stability? That takes special mettle.</p><p>I’ve seen a lot of wallets come and go during my time building MetaMask, and none are quite like MyCrypto. Eminently configurable (regularly adding every obscure configuration, hardware wallet, or new protocol feature ahead of basically everyone else) while staying friendly, usable, and maintaining a communications channel full of colorful education, smart security alerts, and nuanced analyses of the current climate.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*be_h0Q_W3tr3gTNYOW2dWA.png" /></figure><p>Taylor and her team have grown to be absolute cornerstones of the Ethereum ecosystem. Whether it’s Jordan’s relentless community engagement, Harry’s tireless anti-phishing initiatives, or the constant slew of open source libraries and experiments coming from their team, they have become an important part of what Ethereum is today.</p><p>For years our teams have collaborated. We’ve helped each other report scammers so they’ve been taken down faster, but also our wallets have literally inter-operated for years. It’s a weird thought, whilemany treat wallet development as a zero-sum game, MyCrypto found a wallet niche where they have been able to bridge so many signers and essential features for Ethereum users to have access to. I think it reflects their unique understanding of the way that web3 allows each component to interoperate, not just compete.</p><p>Our roles in the ecosystem are so aligned that I barely feel like I need to point them out: MyCrypto will help MetaMask become safer, more stable, and even more feature-rich. Together, we will continue to buld increasingly user-centric, extensible, and decentralized products. And now, with their web product and desktop application and our mobile apps and browser extensions, we will be able to connect people to the world of web3 in even more ways.</p><p>MyCrypto joins MetaMask at a moment of historic growth. Our team has never been larger, and we’re taking the opportunity to kick off several new teams: A security and anti-phishing team to ensure we are increasingly responsive to our increasingly dangerous environment. A core libraries team to ensure that our wallet is maximally small, robust, and portable across platforms. An API-focused team, to ensure that developers are able to make better dapps more easily, and a developer education team that helps make sure that builders know what’s possible.</p><p>For me, this represents a particularly powerful moment in our team’s history. When I helped start MetaMask with <a href="https://keybase.io/kumavis/">Kumavis</a>, I was a fast-iterating coder. I added features quickly (sometimes too quickly), but so much of what I feel I brought to the project was always being close to the metal, caring about interoperability and iterating on our APIs. As our team has scaled I’ve needed to step into a larger product-vision and user-experience type of role. With Taylor joining the team, we’re going to have a product leader with unprecedented experience and passion for keeping users safe. I expect her to be able to be able to much of that work better than I’ve been able to, and free me up to focus on some of the work that I’m better suited to.</p><p>It’s clear that the wallet has a challenging but special role to play in the next iteration of the web, and with our powers combined, I’m confident we’ll be helping usher it in better than ever.</p><p>From all of us at MetaMask to all of you building the next web: We hear you, we’re working hard to give you the experience you deserve.</p><p>To everyone on the MyCrypto team who is just joining now: Thanks for making us a part of your journey. Let’s take the wallet to new heights.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8ee46e2ae740" width="1" height="1" alt=""><hr><p><a href="https://medium.com/metamask/welcoming-mycrypto-to-metamask-8ee46e2ae740">Welcoming MyCrypto to MetaMask</a> was originally published in <a href="https://medium.com/metamask">MetaMask</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What Moxie Missed on Web3 Wallets]]></title>
            <link>https://medium.com/@danfinlay/what-moxie-missed-on-web3-wallets-8dc572e7f39b?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/8dc572e7f39b</guid>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[metamask]]></category>
            <category><![CDATA[wallet]]></category>
            <category><![CDATA[web3]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Tue, 11 Jan 2022 01:47:28 GMT</pubDate>
            <atom:updated>2022-01-11T17:26:25.719Z</atom:updated>
            <content:encoded><![CDATA[<p>I think Moxie&#39;s article on his First Impressions of Web3 has been making some waves lately in part because he&#39;s such a pragmatic and reasonable person and also because he actually dove in and thoughtfully considered the systems he was giving impressions on. He did a great job coming off as non-adversarial (to me, anyway). So I found his article extremely inviting to discuss a bit more about what I think he missed, mainly from my perspective, primarily the wallet/MetaMask perspective.</p><h3>Moxie Marlinspike on Twitter: &quot;Wrote some notes summarizing my first impressions of web3: https://t.co/16MoPROOGc / Twitter&quot;</h3><p>Wrote some notes summarizing my first impressions of web3: https://t.co/16MoPROOGc</p><p>I&#39;ll start by briefly noting the irony that he wrote his thoughts on a self-hosted blog. I am replying from a centralized blogging provider with a history of censoring crypto content (yes, I feel the shame, but I&#39;m being pragmatic).</p><p><em>Edit: I’ve now learned that </em><a href="https://mirror.xyz/"><em>Mirror</em></a><em> no longer requires an invite. It would’ve been cooler for me to write this from there.</em></p><h3>Things Moxie Got Right</h3><p>The way Ethereum dapps today rely on hosted providers <em>feels</em> shy of the original promise, and if they continue this trend, it would seem to imply there was no advantage to having a full node in the first place.</p><p>NFTs should be ashamed for how often they are mutable, and <a href="https://mirror.xyz/suzuha.eth/vb5E5lhzmPTcpxOJcz6Q211TDgSvoFwDLA6JSM1V37Q">as suzuha writes</a>, wallets should help users become aware of when they are (<a href="https://github.com/MetaMask/metamask-mobile/issues/3549">issue opened</a>).</p><p>The way wallets today rely on services like OpenSea for indexed data is not decentralized (although I disagree that this is the inevitable course of action, or a good direction to head).</p><h3>What Moxie Missed</h3><h4>The Presence of Client Friendly Protocols</h4><p>Moxie makes a big point of how modern wallets are doing nearly no validation of blockchain state, and are just trusting servers. This is basically needed for Ethereum in its current state, but it doesn’t need to always be so.</p><p>There are spaces in-between; protocols that are more friendly to running on-client. At MetaMask we pursued a light-client called Mustekala (now surviving in parts of TurboGeth and <a href="https://twitter.com/afdudley0/status/1480701568521490432?s=21">Laconic</a>), and both <a href="https://www.reddit.com/r/ethereum/comments/ryk3it/my_first_impressions_of_web3/hrrz15r/">Vitalik</a> and <a href="https://mirror.xyz/suzuha.eth/vb5E5lhzmPTcpxOJcz6Q211TDgSvoFwDLA6JSM1V37Q">Suzuha</a> discuss other protocols that give longer term hope in that direction , so I’ll leave it at that for now.</p><h4>HTTPS is signed data</h4><p>I know Moxie knows this well. Maybe he’s imagining some kind of HTTPS-downgrading attack on Infura, but for a user’s wallet that is requesting Infura information via HTTPS, the information coming from it is absolutely signed. Not in a way that enables p2p gossip of that data (the way I presume Laconic will), but still I think some of his points about <em>just how bad the status quo is </em>were slight exaggerations.</p><h4>The Right of Exit</h4><blockquote>Even nerds do not want to run their own servers at this point. Even organizations building software full time do not want to run their own servers at this point. If there’s one thing I hope we’ve learned about the world, it’s that people do not want to run their own servers. — Moxie Marlinspike</blockquote><p>One of <a href="https://medium.com/u/17995a9c1d1c">MetaMask</a>’s first design differentiators from the dominant player before us (Mist) was something that Moxie described: the introduction of a trusted source of blockchain data (Infura) instead of requiring every user to self-host an Ethereum “client”. This allowed users to get started right away and without constantly draining their laptop batteries. It was a game changer for adoption, and it kind of demonstrated what Moxie said here: People don’t really want to host their own server (certainly not one that is designed to consume a full laptop of capacity).</p><p>I think this revealed a fundamental truth about what wallets are, and it’s that wallets are <strong>portable</strong>. If a full-node isn’t portable, then a full node is not part of a wallet. If no full node is portable, then a wallet is just a tool for trusting somebody else. If a wallet is just a tool for trusting someone else, then who needs a blockchain? Why not just have a bank?</p><p>I think part of the answer is “right of exit”.</p><p>The right of exit doesn’t matter when you can fully trust your provider, forever. Maybe your bank is fine, and credit cards serve you, so the notion of digital money is unbelievably stupid sounding to you. If you’ve had your account frozen because the bank didn’t like where your money was coming from, you might have a different perspective on it.</p><p>I think a lot of web3 ethos lives right in here. It springs from a patchwork of deep wounds from a lifetime of being betrayed by seemingly every centralized institution that ever gained our trust. The most extreme stance is that this means the infrastructure must trust nobody, but upon hitting the impracticalities of that approach, I think <em>accountability</em> is a surprisingly strong second-best option.</p><p>While MetaMask ships with Infura, we’ve always allowed users to choose their own blockchain connection instead. I would even say that I think ideally the wallet could connect into user-chosen alternatives for all of its services, and the hard-coded exceptions like OpenSea today are mistakes, written to hastily satisfy the demands of the gold-rush crazed user demands, as Moxie described. We’re working to rectify those kinds of decisions, and we keep hiring people who thoughtfully care about getting these kinds of decisions handled right.</p><p>You might ask: Why in the hell would a business choose to make it easier to opt-out of themselves? I think we can just think of it as a feature. It may not be a feature that every user demands upfront, but it’s a feature that if we can adhere to, we can try to force ourselves to increasingly make the decisions that keep ourselves honest, and keep delivering the thing that our users wanted as faithfully as possible, which is basically just a shared digital space they can trust.</p><h4>There Are Viable Alternatives to the Centralized NFT Index</h4><p>I love the part of the article where Moxie breaks down the exact API calls that are enabling current wallet behaviors. I think this is an excellently lucid way to discuss how it works, and OpenSea is a great example of one (apologies to OpenSea for repeatedly punching at you. It isn’t you, it’s our over-reliance on you that is wrong).</p><p>The thing is, we know that “hitting a centralized index for your possessions” is a flawed strategy. In tokens MetaMask has done much better here IMO, while other wallets are highly prone to <a href="https://medium.com/metamask/phisher-watch-airdrop-scams-82eea95d9b2a">airdrop scams</a> where an attacker sends an asset “to the user” and it now appears in the user’s wallet (their sanctum!), and the phishing can commence from there.</p><p>Today, MetaMask is doing something similar via OpenSea, and this is no secret, and it sucks. Relying on a central detection API means that you are either missing assets you might care about (so much for equal opportunity!), or you are seeing assets you don’t (so much for safety!).</p><p>A better solution is to make asset detection a client-centric act of consent. Most wallets allow adding custom tokens. Via EIP-747, <a href="https://eips.ethereum.org/EIPS/eip-747">MetaMask also allows a site to suggest a custom asset to the user’s wallet</a>, and so the user’s wallet becomes the index of assets, no central server needed. We intend to do something similar for NFTs. For the middle-space between fully user-initiated and community-curated, <a href="https://tokenlists.org/">Uniswap’s token lists</a> standard is another approach to allowing the decentralization of the indexing phase. As more standards like this become widespread, I think we’ll see less and less delisting of fair art projects (like Moxie’s), while actually also improving performance and reducing reliance on external parties.</p><h4>The Role of the Wallet</h4><p>The last thing I want to touch on (and it relates to the above points) is the role of the wallet. What the hell is this new piece of technology we’re talking about? Your article’s headline is “web3”, after all, not “Ethereum”, indicating there are other pieces here that make up the system. Until a couple of years ago, I think people didn’t take wallets seriously, and thought of them as super thin software that ideally does nearly nothing, a bit like Moxie describes in his article. I think some of us at MetaMask thought similarly when we started out.</p><blockquote>MetaMask doesn’t actually <em>do</em> much, it’s just a view onto data provided by these centralized APIs. This isn’t a problem specific to MetaMask — what other option do they have?<br> — Moxie</blockquote><p>I’ve come to see the wallet’s role as enormously large, instead. So large that it’s at dangerous risk of bloat and massive re-centralization if it isn’t managed carefully. In particular, while the full node may be “providing all the data”, the wallet is the tool that helps the user give informed consent.</p><blockquote>the wallet is a tool that helps the user give informed consent.</blockquote><p>Cryptographic consent was historically fairly trivial: You were either signing or encrypting some data, so you’d get data on one side and garbage on the other. Even with basic cryptocurrencies you’re just managing balances and transactions, and this ends up being pretty much “write once, deploy everywhere”.</p><p>The challenge for a web3 wallet is that the user can consent to <em>arbitrary actions from turing-complete applications</em>. This makes getting informed consent much harder. Ideally, every sensitive action would initiate a coherent, user-readable confirmation.</p><p>This would already make the wallet a significantly more complicated endeavor than Moxie described, but it’s not only the application content but the protocols they are built on are also evolving constantly, with new opportunities to reduce the cost to the user, improve developer experience, or improve cryptographic veracity.</p><p>These somewhat combine into a shared concept, the fact that <strong><em>what a wallet lets you do is open-ended</em></strong>. The things we know for sure are:</p><ul><li>It’s cryptographic in nature. <strong>The user will have keys</strong>, even if they just authenticate to a custodial provider, or are part of a larger multi-sig.</li><li>Our primary purpose is for <strong>helping users interact with untrustworthy</strong> <strong>agents</strong>, and make informed decisions around them.</li></ul><p>When the kinds of consent a user might give are constantly evolving, there are a few ways a wallet can compete: It can either specialize in a sub-domain of the ecosystem, and try to absolutely master it (Be the best DeFi wallet! Be the best Cosmos wallet!), it could try to be a generalist (what MetaMask does today, which can make many individual use cases feel under-served while facilitating general experimentation), or maybe there is a way to invite our vast community to help expand and define the definition of wallet, in a way that is as permissionless and free as the web itself.</p><p>That’s why MetaMask has been working on the Snaps extensibility system, which enables anyone to write scripts that can provide APIs to sites, display confirmations to the user, and perform cryptographic operations. Snaps has been in stealth development for a while (our <a href="https://github.com/MetaMask/metamask-snaps-beta/wiki">previous docs</a> are very outdated), but we’ve got some updates related to it coming very soon.</p><p>With Snaps, the user (or an application they interact with) is not only able to choose alternatives to Infura, but they’re also able to choose alternatives to the entire relationship of wallet-server. A snap might help a user run light clients, choose alternative runtimes like <a href="https://starkware.co/">zk-STARK chains</a> or new <a href="https://agoric.com/blog/technology/wheres-the-crypto/">friendly languages</a>, or maybe it just lets users connect to their preferred centralized service. The point is that we’re making it easier for developers to iterate and validate approaches to differently distributed applications while holding each approach accountable so that we can explore and converge on what is worth trusting faster.</p><p>The point isn’t “web3”, it isn’t “decentralization” for the word’s sake. The point is developing tools that allow us to leverage computers to collaborate more effectively. It’s about accountability and choosing for ourselves what to trust. It’s about withholding trust from strangers on the internet but holding out the belief that we can build a better way.</p><p>I agree that in the end, people want well-curated experiences. But I also think that we’ve seen enough heroes betray us that it’s comforting to maintain a right of exit, and with designs like Snaps, I think we can facilitate more experimentation while improving the accountability of the software that runs our lives. Maybe it’ll converge on a totally trustworthy centralized platform, but until then, I’m excited to be making the tools that make it easier to explore our options.</p><p>I hope that adds some depth in the wallet perspective to someone like Moxie. I think most of his criticisms are generally correct, but I also think there are some aspects of this new stack (like the wallet) that are a bit more nuanced than he represented.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8dc572e7f39b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Phisher Watch: Airdrop Scams]]></title>
            <link>https://medium.com/metamask/phisher-watch-airdrop-scams-82eea95d9b2a?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/82eea95d9b2a</guid>
            <category><![CDATA[token]]></category>
            <category><![CDATA[phishing]]></category>
            <category><![CDATA[airdrop]]></category>
            <category><![CDATA[metamask]]></category>
            <category><![CDATA[ethereum]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Sun, 26 Sep 2021 20:38:01 GMT</pubDate>
            <atom:updated>2021-09-26T20:38:01.370Z</atom:updated>
            <content:encoded><![CDATA[<p>As cryptocurrency has grown, its users have become an increasingly hot target for phishers. Each time we make one type of phishing harder, the phishers come up with new techniques, and so it’s in everyone’s best interest to stay aware of the latest scams, and consider how you can keep yourself (and friends and users) safe from these attacks.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CefHDa8FkQjXjReXmRYpzg.png" /></figure><p>One approach that has been growing in popularity lately is what we’re calling “<strong>Airdrop scams</strong>”. A typical airdrop scam involves minting a new malicious token, sending it to user accounts, and relying on users investigating what this mysterious token is to phish those users.</p><p>You can see a video exploration of one such scam here:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fwww.youtube.com%2Fembed%2FM4rwlfzYskw%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fwww.youtube.com%2Fwatch%3Fv%3DM4rwlfzYskw&amp;image=https%3A%2F%2Fround-lake.dustinice.workers.dev%3A443%2Fhttps%2Fi.ytimg.com%2Fvi%2FM4rwlfzYskw%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/4dd5401c364a08d7ea4d30c1b05bd621/href">https://medium.com/media/4dd5401c364a08d7ea4d30c1b05bd621/href</a></iframe><p>Users that rely solely on MetaMask for their token holdings are not prone to this attack, because MetaMask has always held a firm line on not auto-detecting unknown tokens, and we only detect tokens that meet a high bar of credibility, as we’ve long recognized this is a strategy to attack and confuse users.</p><p>The problem starts when users are looking around other sites and wallets that show any token on the blockchain by the name that the token’s author has chosen. Sometimes these other wallets or block explorers will even optimistically render a value for that token, based on an easily faked liquidity position on an Automated Market Maker (AMM) exchange. These tokens however do not behave like normal tokens, and when those users try to swap them, they throw an error (whose text is also provided by the malicious contract author), which directs the user to a phishing site for help, where they are phished.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/912/0*_Uq_p-zLmn6PjZvv" /><figcaption>An example phishing error message. Don’t go to this site, it’s a scam!</figcaption></figure><p>This attack relies on several user behaviors:</p><ul><li>Users checking block explorers for token balances.</li><li>Block explorers auto-detecting and displaying any token that is minted at all (even though anyone can mint a token “named” anything, and the token name imbues no security at all).</li><li>Users expect that a detected token has value, or sites optimistically rendering AMM prices as a price oracle.</li><li>Users investigating automatically detected tokens.</li><li>Users then trust their investigations, and approve transactions, or even give their secret recovery phrases to the sites associated with those tokens.</li><li>Users looking to see why the transaction failed, and believing the error message presented to be representing credible information.</li></ul><p>Token auto-detection is a tricky situation. MetaMask has had a conservative approach to token detection, because we’d rather make a user have to add a token themselves than be exposed to a phisher’s token, but if a user relies on even a single mass-detecting token list, they are making themselves prone to this kind of attack.</p><p>MetaMask has been working on making token detection more effective and trustworthy, aggregating our auto-detection list from multiple sources, and also proactively blocking known scams, and are working towards also allowing users to more easily subscribe to (and share) their own trusted token lists.</p><p>While trusted lists may be a long-term solution, in the meanwhile we have many tools (especially block explorers, and also some wallets) that are extremely eager to detect any token that is air-dropped. This can result in phishing, annoyance, and unsolicited messages. In the short term, it would be valuable if all tool developers took this kind of attack more seriously, and consider the risks that we’re exposing users to when automatically detecting unfiltered blockchain activity.</p><p>As the decentralized web scales, auto-detection of all assets will become less and less sustainable, and so there is both a security and scalability problem with the modern expectation. The idea that a single global feed should be perfectly curated is a very Web2 way of thinking, and we think that it’s critical that we start recognizing the ways that unfiltered feeds expose us all to coordinated attacks from untrustworthy sources.</p><p>Web3 is all about building better ways of doing things. This can sometimes mean that some of the new ways feel high-friction, like managing account backups, or manually subscribing to tokens, but it’s these acts of user responsibility that enable decentralizing power away from any central party, and across the web of users.</p><p>I hope you’ll be careful out there when looking at any source of global data, and always consider “what did it take for someone to produce this?”. Oftentimes, there’s nothing stopping a scammer from putting whatever they want in front of your eyes.</p><p>Stay safe out there!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=82eea95d9b2a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/metamask/phisher-watch-airdrop-scams-82eea95d9b2a">Phisher Watch: Airdrop Scams</a> was originally published in <a href="https://medium.com/metamask">MetaMask</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Connect Users to Layer 2 networks with the MetaMask Custom Networks API]]></title>
            <link>https://medium.com/metamask/connect-users-to-layer-2-networks-with-the-metamask-custom-networks-api-d0873fac51e5?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/d0873fac51e5</guid>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[wallet]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[metamask]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Wed, 03 Mar 2021 21:07:25 GMT</pubDate>
            <atom:updated>2021-03-03T21:07:25.724Z</atom:updated>
            <content:encoded><![CDATA[<h3>Connect Users to Layer 2 Networks with the MetaMask Custom Networks API</h3><p>Today the fundamentals of Ethereum are stronger than ever. 1.3 million transactions settle more than $12 billion daily. 74% of all stablecoins are issued on Ethereum, worth $30 billion. More than 5 million unique NFTs have been bought and sold for over $300 million. Amidst the burgeoning demand to access liquidity and activity on Ethereum, the network is straining under the weight of its own success. Moving more computation to Layer 2 networks is the best immediate solution to Ethereum’s high gas fees, and a number of such networks are already live. What’s missing is a simple user interface for switching between Mainnet and the various Layer 2 networks that an application might require.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/716/1*zYrmdS0m8LV3hCtixTB1xg.png" /></figure><p>Our new Custom Networks API is our latest step on the way to seamless cross-chain user experiences in MetaMask. It allows developers to recommend a variety of chains to their users, including Layer 2 networks like <a href="https://polygon.technology/">Polygon</a> (formerly Matic), <a href="https://offchainlabs.com/">Arbitrum</a>, and <a href="https://optimism.io/">Optimism</a>; sidechains like <a href="https://activate.codefi.network/skale/stake">SKALE</a> and <a href="https://www.xdaichain.com/">xDAI</a>; and indeed any EVM-compatible chain, including enterprise networks and testnets. These networks are then added to the user’s network menu with a simple confirmation, and the user is able to switch between networks using the familiar network switching menu.</p><p>We are excited to support the growth of Layer 2 networks, and look forward to seeing what the Ethereum community will build with cheaper and faster transactions. Even so, keep in mind that not all networks are created equally, and they make different trade-offs in order to scale. Be sure to understand the security and reliability tradeoffs of any network you add to MetaMask, and ensure that you trust the site recommending a new network. We encourage all users to read our <a href="https://metamask.zendesk.com/hc/en-us/articles/360056196151">guide to using custom networks in MetaMask</a>.</p><p>Check out our <a href="https://docs.metamask.io/guide/rpc-api.html#wallet-addethereumchain">docs</a> to start recommending L2 networks to your users. If you’re a wallet developer interested in implementing this method, you will also want to check out the <a href="https://eips.ethereum.org/EIPS/eip-3085">EIP-3085</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d0873fac51e5" width="1" height="1" alt=""><hr><p><a href="https://medium.com/metamask/connect-users-to-layer-2-networks-with-the-metamask-custom-networks-api-d0873fac51e5">Connect Users to Layer 2 networks with the MetaMask Custom Networks API</a> was originally published in <a href="https://medium.com/metamask">MetaMask</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Real Time Data on MetaMask Swaps]]></title>
            <link>https://medium.com/metamask/real-time-data-on-metamask-swaps-c50d2c9ab020?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/c50d2c9ab020</guid>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[metamask]]></category>
            <category><![CDATA[data-analysis]]></category>
            <category><![CDATA[trading]]></category>
            <category><![CDATA[token]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Wed, 10 Feb 2021 23:58:14 GMT</pubDate>
            <atom:updated>2021-02-11T04:14:39.969Z</atom:updated>
            <content:encoded><![CDATA[<p>One of the profound evolutions of public blockchains like Ethereum is that financial data happens in real time, viewable by anyone. Increasingly, companies like <a href="https://duneanalytics.com/">Dune Analytics</a> are making it easier to transform this data into useful dashboards in a matter of minutes.</p><p>Today we created a public Dune Analytics dashboard so that you can view real-time data on token swaps happening through MetaMask’s <a href="https://consensys.net/blog/press-release/consensys-introduces-token-swaps-for-metamask/">new swap feature</a>. We include cumulative volume (USD), the cumulative number of swaps, the number of unique accounts (users), daily volume (USD), daily swaps, average swap size, and the volume distribution across liquidity sources. The MetaMask Swaps feature aims to leverage Web3 innovations by allowing users to directly compare offerings from a multitude of decentralized protocols, giving them better insight, while transacting in a non-custodial manner through those protocols. To this end — you can think of Swaps as similar to Expedia for travel quotes — except entirely non-custodial and the user transacts directly with these decentralized protocols.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*FS0dK1Alt3CLbJWJ" /></figure><p>The MetaSwap software currently aggregates information from <a href="https://uniswap.org/">Uniswap</a>, <a href="https://www.airswap.io/">AirSwap</a>, <a href="https://0x.org/api">0x API</a>, <a href="https://1inch.exchange/#/">1inch.exchange</a>, <a href="https://paraswap.io/#/">Paraswap</a>, <a href="https://www.totle.com/">Totle</a>, and private market makers. The outcome is that users now have more information available to them in one place, allowing them to have access to a united decentralized exchange system at the most competitive prices, all with fewer token approvals and a seamless user experience.</p><p>As you can see from the Volume Distribution chart in our dashboard, users are finding that each trading experience is unique. The pricing offered through decentralized protocols depends on factors such as the size of a swap and the tokens the user is attempting to swap. Certain decentralized exchange protocols appear to perform better for certain types of trades — and this is why we were thrilled to build the Swaps software. For instance, AMMs appear to provide users the best quotes in smaller trades, whereas RFQ based protocols appear to perform better for larger trades. MetaMask has always been about providing users access and autonomy in Web3 — and with the addition of Swaps, we’re providing a user interface for previously unconnected decentralized protocols.</p><p>To date MetaMask has provided an essential and free community service — one that remains largely open source. With the addition of the Swap services, we introduced a fee to those availing themselves of the Swaps feature. We are enthusiastically reinvesting in development to make MetaMask even better.</p><p><a href="https://duneanalytics.com/codefi/metamask-swaps-">Check out our new dashboard here</a> and let us know what you’d like to see added. Or fork it and build your own! That’s the power of open source software.</p><p>We think you’ll like what’s coming next with MetaMask. In the meantime, we are hiring a <a href="https://consensys.net/open-roles/2572388/">Javascript Engineer</a>, a Designer, and a <a href="https://consensys.net/open-roles/2772929/">QA Engineer</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c50d2c9ab020" width="1" height="1" alt=""><hr><p><a href="https://medium.com/metamask/real-time-data-on-metamask-swaps-c50d2c9ab020">Real Time Data on MetaMask Swaps</a> was originally published in <a href="https://medium.com/metamask">MetaMask</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Evolving our License for the Next Wave of MetaMask Users]]></title>
            <link>https://medium.com/metamask/evolving-our-license-for-the-next-wave-of-metamask-users-81b0b494c09a?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/81b0b494c09a</guid>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[metamask]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Thu, 20 Aug 2020 23:04:58 GMT</pubDate>
            <atom:updated>2020-08-20T23:04:58.688Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/385/0*yicNFBiRre5FIBjk" /><figcaption>SOURCE: <a href="https://xkcd.com/2347/">xkcd</a></figcaption></figure><p>If you have a phone, television, car, or a washing machine, it’s likely that you use free or open source software dozens of times before lunch. Thanks to the thousands of individuals that contribute to Linux, Firefox, Git, Node.js, v8, and many more projects, open source software development has fast become a critical feature of the Internet. Ethereum is no different. Open source development enables public participation and keeps Ethereum resilient. Despite open source software solving critical shared problems, fair compensation for the maintenance of these community goods remains a problem, with many different sustainability attempts — from donations, to grants, to copyleft licenses.</p><p>Since the first release of MetaMask, we’ve provided a browser extension to connect more than 4 million individuals to Ethereum with a permissive MIT license. However, in order to compete with products that exist upstream of our wallet in the web3 tech stack, such as web browsers, and to continue providing the most resilient and secure browser and wallet experience on Ethereum for the next wave of users, we need to evolve our approach and set parameters around how developers can distribute versions of MetaMask and be fairly compensated.</p><p>Going forward, MetaMask will be published under <a href="https://github.com/MetaMask/metamask-extension/blob/e4d4c9c45a134eace71d020ac0316deddc52213d/LICENSE"><strong>a new license</strong></a>. For all end users and most application developers and non-profits, this will not have any impact: MetaMask will continue to be free. Developers will have the same access to the MetaMask APIs that they’ve had in the past, enabling the same kinds of applications as before. MetaMask will continue publishing and iterating upon the wallet provider API in the public sphere, to ensure a widely cross-compatible ecosystem of applications. MetaMask remains committed to publishing all code in a public repository, so you are welcome to review and audit the codebase, or compete in our <a href="https://gitcoin.co/metamask/active">bug bounties</a> (and more bounties coming soon on <a href="https://hackerone.com/metamask">HackerOne</a>).</p><p>Developers can still copy, modify, and distribute versions of MetaMask. Yet for developers that copy, modify, or fork the MetaMask codebase for commercial use, we invite you to start a conversation with us to see how we can find a path forward together. For example, if you’ve copied MetaMask and offer it commercially to an audience larger than 10,000 monthly active users, we would like to enter into a formal commercial agreement.</p><p>MetaMask has provided an essential and free community service to this point, and to continue to do so, we need a sustainable future for what we see as a public good: a safe wallet.</p><p>To contribute to more adoptable standards and secure practices, the MetaMask team will continue to publish many of its internal modules as permissive open-source licensed modules. These include code related to key management, the provider API, our permissions system, and much more. We hope that through cross-project reuse, we can help build stronger foundations for our collective projects.</p><h3>FAQ</h3><blockquote><em>Why do you need to migrate from an MIT open source license to a tiered proprietary license?</em></blockquote><p>Currently, the status quo for compensating open source maintenance is not tenable. Here is a <a href="https://feross.org/funding-experiment-recap/">good article</a> about travails of funding open source software. The bottom line is that a developer shouldn’t have to decide between making proprietary software or continuing open source licenses. We also need to be on a fair playing field with other products in the ecosystem that exist upstream of MetaMask in the web3 tech stack. We decided to keep to the principles of open source development with auditable code, but reserve the right to come to enterprise agreements with distributors whose version of MetaMask serves more than 10,000 users. This protects MetaMask from free-riders or upstream competitors from exerting monopolistic control.</p><blockquote><em>If I’m not a developer, will this change my experience of MetaMask?</em></blockquote><p>No. This will not affect end-users of MetaMask.</p><blockquote><em>If I’m a developer and copied a version of MetaMask, will this affect me?</em></blockquote><p>Not necessarily. We encourage developers to inspect our code, submit requests, and copy it for the purpose of integrating a secure wallet experience for your application. Many projects, from Bitcoin’s Lightning Network to POA Network, have forked versions of MetaMask. However, if your wallet starts commercially serving more than 10,000 monthly active users, we now reserve the right to establish a proprietary license agreement.</p><blockquote><em>What is a tiered proprietary license?</em></blockquote><p>MetaMask’s entire codebase is now owned by ConsenSys. We publish code in a public repository for view/inspection. We permit distributing, copying, modifying and creating derivative works non-commercially, or commercially so long as the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. Any derivative works must also follow this same license restriction.</p><p><em>This post was written in partnership with </em><a href="https://medium.com/u/989e47254ee"><em>James Beck</em></a><em> of ConsenSys.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=81b0b494c09a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/metamask/evolving-our-license-for-the-next-wave-of-metamask-users-81b0b494c09a">Evolving our License for the Next Wave of MetaMask Users</a> was originally published in <a href="https://medium.com/metamask">MetaMask</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing MetaMask Version 8]]></title>
            <link>https://medium.com/metamask/announcing-metamask-version-8-9126dc2df98?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/9126dc2df98</guid>
            <category><![CDATA[metamask]]></category>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[web3]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Thu, 02 Jul 2020 14:30:58 GMT</pubDate>
            <atom:updated>2020-07-02T15:46:55.559Z</atom:updated>
            <content:encoded><![CDATA[<p>Everyone’s favorite way to use Ethereum applications now comes with a host of new features!</p><p>Today, we’re rolling out MetaMask Version 8. This represents a major upgrade to MetaMask and offers a number of new features that no wallet has delivered before.</p><h3>Unparalleled Privacy Control</h3><p>Most wallets today either manage a single account, or expose the currently selected user current account to all connected sites — broadly revealing users’ private information.</p><p>In MetaMask V8, when you connect to a website, you have the option to select one or more accounts to associate with that website or create a new account just for that site. You decide what each site has access to.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/944/0*p-4rRXLgIb2wtH-t" /></figure><p>This new feature enables you to easily switch between accounts, so you can control which accounts interact with different sites across the decentralized web.</p><p>If you open a site that is not connected to the selected account, MetaMask will alert you and allow you to connect.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/357/1*WMZUNYrmfpM4lSXUh1v9kQ.png" /></figure><p>A new connection indicator (seen here with “Not connected” shows your connection status and opens a menu with your account connections and site permissions.</p><p>These site permissions reflect our <a href="https://github.com/ethereum/EIPs/issues/2255">EIP-2255 permissions system</a>, which will become more rich over time. These new and enhanced permissions will enable powerful features like decryption, access to wallet information (like your favorite tokens or contacts), and paves the way for <a href="https://medium.com/metamask/introducing-the-next-evolution-of-the-web3-wallet-4abdf801a4ee?source=collection_home---6------5-----------------------">MetaMask Snaps</a> extensibility.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/750/0*Q1On_2zNMGuldIF0" /></figure><h3>A Slick, New UI</h3><p>Perhaps the most obvious change to version 8 is a refreshed MetaMask UI. Our team has focused on delivering these new features with a cohesive experience. When opening MetaMask version 8 for the first time, you’ll be introduced to our new features through helpful UI hints.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/714/0*4Rn9m1x-8zUqO7FY" /></figure><p>The home screen, asset page, and transaction history have been redesigned with your assets now easier to access. Instead of tapping a hamburger icon to view your assets, you now access them via the ‘Assets’ tab on the home screen.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/712/0*3PUwJ0lVoDDbq9qQ" /></figure><p>The ‘Assets’ tab contains a list of the assets you currently hold and are tracking in MetaMask. Click each asset to view a details page with the transaction history of that asset.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/712/0*A0vMhwBRSMs4JaWa" /></figure><p>The new ‘Activity’ tab is a redesigned transaction history view. With new iconography, each type of transaction is more easily recognizable.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/712/0*_nIp0zc4ggty5e3Q" /></figure><h3>More Features For Developers!</h3><h4>Introducing Web3 Encryption</h4><p>Thanks to a huge community contribution, MetaMask now ships with two new methods that allow websites to encrypt and decrypt messages intended for Web3 users.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/361/1*rp8Rtro90yaXXCRa6TWNWQ.png" /></figure><p>For now, these decryption requests each require user confirmation, so it’s mostly ideal for decrypting infrequent, important messages, like emails. Later on we have an opportunity to make this same decryption strategy available with the permissions system described above.</p><p>You can read more about the new decryption API <a href="https://docs.metamask.io/guide/experimental-apis.html#eth-rpc-methods">here</a>.</p><h4>Removing Friction From Your App Onboarding</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/0*2ulJqAEebAzOOjm1" /></figure><p>In the past, we’ve received feedback from developers that on-boarding users is a source friction in their funnel.</p><p>We want to make it as easy as possible for your users to interact with your application through their MetaMask account and make sure users who land on your site stay on your site.</p><p>To help, we’ve created a new <a href="https://github.com/MetaMask/metamask-onboarding">onboarding library</a> which enables applications to implement their own connect button. It allows a user to seamlessly land on your site, install MetaMask, and be automatically redirected back to your application so they can continue their journey. Learn more about using our new on-boarding library <a href="https://docs.metamask.io/guide/onboarding-library.html">here</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*19Ganfkd9JhqPoaE" /></figure><h4>Developers: Introducing the ERC-1193 Provider API</h4><p>The Ethereum provider just got a non-breaking upgrade! This EIP formalizes a JavaScript Ethereum Provider API for consistency across clients and applications.</p><p>The Provider’s interface is designed to be minimal, preferring that features are introduced in the API layer (see e.g. eth_requestAccounts) and agnostic of transport and RPC protocols.</p><p>Instead of using the old ethereum.sendAsync(options, callback) pattern everywhere, you now get a nice and simple const result = await ethereum.request({ method, params }).</p><p>It’s designed to be ergonomic and extensible API, friendlier to use than sending a full RPC object for each request, and perhaps best of all, it supports returning Promises and registering subscriptions.</p><p>Read more about it <a href="https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1193.md">here</a>.</p><h4>Upcoming changes for web3 site developers</h4><p><strong>If you’re a developer that relies on the window.web3 object injected by MetaMask, you’ll need to implement changes before we remove the injected web3 object or your site will break.</strong> We recommend migrating to using <a href="https://docs.metamask.io/guide/ethereum-provider.html">window.ethereum</a> or <a href="https://www.npmjs.com/package/ethers">ethers.js</a>, ASAP. We will announce a deprecation date as soon as we’re willing to commit to a firm date.</p><p>If you’re a developer that only relies on your own version of ethers or web3, you won’t need to take any action — just keep it up to date. If you are choosing a new convenience library, we recommend <a href="https://github.com/ethers-io/ethers.js/">ethers</a>.</p><p>Read our<a href="https://docs.metamask.io/guide/"> documentation</a> to learn more. Our docs site has recently been revamped, thanks in part to amazing contributions from the MetaMask community (shout out to Austin Akers!).</p><h3>Cutting Edge Security</h3><h4>LavaMoat is Live and in Production!</h4><p>Nothing is more important than your security at MetaMask. Our new LavaMoat tool helps raise the bar of security for nearly any JavaScript project.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/0*2tV-iLXYmqfVZ62o" /></figure><p>MetaMask is a web and JavaScript-based wallet. JavaScript often gets a bad reputation because untrusted code is often pulled into production environments. For a wallet, this is more dangerous than ever.</p><p><a href="https://github.com/LavaMoat/lavamoat">LavaMoat</a> is a set of tools we’re building that uses <a href="https://github.com/Agoric/ses-shim">Secure EcmaScript</a> to confine every third-party dependency in a piece of JavaScript code at build time. We hope to eventually confine every dependency in our entire wallet, greatly protecting us and our users from the category of “supply chain attacks”.</p><p>We’re happy to announce that we now have the first LavaMoat protected process live and in production! We now have <a href="https://faucet.metamask.io/">our ropsten test-network faucet</a> secured with this new build security system!</p><p>You can:</p><ul><li><a href="https://github.com/MetaMask/eth-faucet">Read the faucet code here</a></li><li><a href="https://www.youtube.com/watch?v=pOTEJy_FqIA&amp;feature=emb_title">Watch a video to learn more about the goals of LavaMoat</a></li><li><a href="https://github.com/LavaMoat/lavamoat/tree/master/packages/webpack">Get started with LavaMoat for webpack</a></li><li><a href="https://github.com/LavaMoat/lavamoat/tree/master/packages/browserify">Get started with LavaMoat for browserify</a></li></ul><h4>That’s Version 8!</h4><p>We hope you enjoy this new release of MetaMask. Learn more about MetaMask or download it at <a href="http://metamask.io">metamask.io</a>. If you’ve spotted a bug or have other feedback, please drop an <a href="mailto:support@metamask.io">email</a> to our support team.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9126dc2df98" width="1" height="1" alt=""><hr><p><a href="https://medium.com/metamask/announcing-metamask-version-8-9126dc2df98">Announcing MetaMask Version 8</a> was originally published in <a href="https://medium.com/metamask">MetaMask</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Our MetaTransaction Hackathon Winner!]]></title>
            <link>https://medium.com/metamask/our-metatransaction-hackathon-winner-a620551ccb9b?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/a620551ccb9b</guid>
            <category><![CDATA[economics]]></category>
            <category><![CDATA[software]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[ethereum]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Fri, 31 Jan 2020 19:40:50 GMT</pubDate>
            <atom:updated>2020-02-10T19:51:14.934Z</atom:updated>
            <content:encoded><![CDATA[<p>Wait no longer, we are writing to announce the conclusion of MetaMask’s first ever virtual hackathon, our <a href="https://medium.com/metamask/announcing-a-generalized-metatransaction-contest-abd4f321470b?source=collection_home---4------1-----------------------">Generalized MetaTransaction Contest</a>, part of <a href="https://gitcoin.co/">GitCoin’s</a> <a href="https://gitcoin.co/hackathon/take-back-the-web/?">Take Back the Web hackathon</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/514/1*gVOAIYF5Bj6qaXUu7BNmDg.png" /></figure><p>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.</p><p>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.</p><ul><li>28 participants registered and began work.</li><li>12 participants submitted work.</li><li>7 participants submitted work correctly by the deadline.</li><li>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. 🤯</li><li>Bloxis wrote <a href="https://medium.com/bloxis/generalised-ethereum-meta-transactions-our-take-cb9f027866e9">a wonderful blog post advocating for the value of this goal</a>.</li><li>We got <a href="https://ethereum-magicians.org/t/lets-discuss-metamasks-hackathon-on-generalized-meta-transactions/3923/10">a big thread on ethereum-magicians</a> discussing the initiative.</li></ul><p>Maybe most importantly, we saw a lot of incredibly talented Ethereum developers come together to share ideas and refine their approaches on <a href="https://keybase.io/team/metamask.developers">our metamask.developers keybase channel</a>.</p><h4>On to the Entries!</h4><p>Before we discuss the finalists, I’d like to take a moment to mention a couple outstanding features from some of our runners-up.</p><p><a href="https://github.com/admazzola/lavawallet-web/blob/master/README.md">Adamzolla’s Lava Protocol</a> created a global smart contract that would allow adding MetaTransactions to any ERC-20 token today. However, since it relies on setting the allowance for those tokens first, we felt it was not as truly gas-free as we wanted from a winner, but it still stands out as a totally unique contribution that could absolutely have use on the main-net today. It even includes <a href="https://lavaprotocol.com/">a working demo</a>!</p><p>Chris Buckland and Patrick McCorry submitted some <a href="https://github.com/PISAresearch/metamask-comp">excellent research towards a MetaTransaction standard</a>, and included <em>three replay protection strategy proposals</em>, which include features totally unique to all the entries, like supporting various degrees of concurrency. The judges had to rule this one out from the finalists because it wasn’t quite oriented at developers being able to use it immediately, nor did it have a demo, but this one makes important contributions to our understanding of what we can achieve with replay protection, so we had to give it a big nod.</p><h3>The Finalists</h3><p>We were incredibly lucky to have three MetaTransaction-celebrity judges volunteer to help evaluate our submissions:</p><ul><li>Mariano Conti of Maker, which recently shipped a MetaTransaction permit() method on its new DAI contract.</li><li>Mark Beylin, Founder of Bounties.network and the StandardBounties framework, which included a MetaTransaction method on its latest contract.</li><li>Austin Griffith, who popularized MetaTransactions with many developers.</li></ul><p>Upon reviewing the entries, we quickly realized we had enough high-quality entries that we were forced to hold a very high standard for the winner.</p><p>As MetaMask’s first hackathon prize ever (we’ve done mostly word of mouth!) we hadn’t considered that we’d get tons of great submissions, and so we hadn’t announced any runner-up prizes, so we were preparing to make a very hard decision.</p><p>At the time of judging, we had three finalists who had satisfied what we were calling “the high water mark”:</p><ul><li>A new standard that only requires inheriting a solidity class and replacing all calls to msg.sender to an internal method that is aware of the new MetaTransaction method, like _messageSender().</li><li>Adds a new method that allows anyone to submit transactions on behalf of other users to this contract.</li><li>Has support for batches of transactions.</li><li>Allows the original transaction signer to include a fee to the submitter.</li><li>Features a clean working demo that you can try right now.</li></ul><p>Those finalists were:</p><ul><li><a href="https://github.com/Amxx/GMTX">GMTX by Hadrien Croubois</a></li><li><a href="https://github.com/wighawag/singleton-1776-meta-transaction">EIP-1776 by wighawag</a></li><li>MetaMask-friendly GSN by <a href="https://openeth.dev/">OpenEth</a></li><li><a href="https://github.com/bcnmy/metatx-standard">Biconomy’s Metatx-Standard</a></li></ul><p>Each of these entries stood out in big ways:</p><ul><li>Working demos</li><li>EIP-712 compatible signatures, making for more readable signatures (with a possibility of being standardized and rendered better later)</li><li>A generic solidity class that can be inherited from on any solidity contract to add support for MetaTransactions for all of its methods.</li></ul><p>The judges were so impressed, that we decided we wanted to take more time to more deeply understand the entries, and so each judge took a different finalist entry to review in more detail, perhaps try building with, and report back to the group, so that we could have a more informed perspective on the submissions.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-8_ZS0sYH9VJt0CmU-RH5g.png" /><figcaption><a href="https://gmtx.app.hadriencroubois.com/">amxx’s demo site</a> is a beautiful MetaTx-powered on-chain chat room.</figcaption></figure><p>Let’s review some of the key features that distinguished our finalists:</p><h4>Community Engagement</h4><p>We never said this would be a judging criteria, so we didn’t weigh it too heavily, but we did say that likelihood of getting widespread adoption was a goal, and we believe that in a decentralized ecosystem, community engagement is an important strategy! So we gave extra credit to contestants who started conversations, sought out the best ideas, and shared their own ideas freely during the contest. Amxx was particularly active during our contest, but wighawag and Yoav had each built on EIPs, highlighting a long-running commitment to community standards.</p><h4>Developer Documentation</h4><p>Widespread adoption isn’t just about having a great proposal, it’s about communicating it in a way that gets developers to quickly understand what it is, how to use it, and building it into their own contracts. Amxx and wighawag both stood out as having very developer-friendly introductions, as if they were writing to future devs, and not just hackathon judges.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JMsApr91FcmYouzBudDcIw.png" /><figcaption>Yoav made <a href="https://openeth.dev/metacoin">a demo</a> site that allows managing a token without the user needing ether.</figcaption></figure><h4>Simplicity</h4><p>This contest was already asking for a lot of complexity, and asking devs to add some new code to their contracts is a scary thing to ask already, so making the smallest and most easily audited contribution possible has serious impact on how likely people are to adopt it. yavw took a slight hit here, because by using GSN, they took the complicated issue of fee repayment, and added a whole additional crypto-economic game on top of it. We found evaluating the game theory of the GSN to be slightly out of scope for this contest, and so we preferred proposals that had the <em>option</em> of integrating with GSN, <a href="https://github.com/Amxx/GMTX#relaying-a-gmtx-meta-transaction">like Amxx’s</a>.</p><h4>Fee Repayment</h4><p>We did not require submissions to include a method to repay the transaction relayer, since we believed there was already a lot of value to be had by accounts that were willing to relay each others’ transactions. That said, the submissions by amxx, wighawag, and yavw all had methods to optionally repay the relayer in an arbitrary token. That opens those submissions to a whole category of extra usage.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/965/1*87DK8ocNrzLovSkS0PDl0A.png" /><figcaption><a href="https://metatx.biconomy.io/">Biconomy’s demo app</a> was elegantly simple and easy to prove what it did, with a simple quote-owning contract.</figcaption></figure><h4>Replay protection</h4><p>In <a href="https://medium.com/metamask/announcing-a-generalized-metatransaction-contest-abd4f321470b">our intro post</a> we mentioned that replay protection was a looser suggestion, but when all the other criteria were met so well by all the front-runners, it became a valuable way to stand out. As it was, of the four finalists, three used a classic Ethereum-style nonce for replay protection, and <a href="https://github.com/wighawag/singleton-1776-meta-transaction">one (wighawag) implemented a two-dimensional nonce, which allows transaction parallelization and batching</a>.</p><p>Amxx also took a small hit in this category, because his replay protection scheme involved writing each transaction hash to blockchain state, which increases the gas price of these transactions. Reducing state bloat over time is a valuable property that we’d like to see more contracts value.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/965/1*87DK8ocNrzLovSkS0PDl0A.png" /></figure><h4>Batch Processing</h4><p>We did not list this as a requirement, but there are big blockchain throughput gains to be had by batching transactions together. Both amxx and wighawag had batching mechanisms in their submissions, but wighawag’s included the ability for the batch to share a signature, slightly improving performance, which is always valuable on a blockchain.</p><h3>Finally, the Winner</h3><p>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 <a href="https://github.com/wighawag/singleton-1776-meta-transaction">wighawag</a>.</p><p>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.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bshLqFbBqkp-7VOMHlsCWA.png" /><figcaption>A screen shot of <a href="https://metatx.eth.link/">wighawag’s demo site</a> 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 :wink:)</figcaption></figure><p>Next we’re hoping to help see wighawag’s <a href="https://github.com/ethereum/EIPs/issues/1776">EIP-1776</a> 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.</p><p>At MetaMask, we loved the top entries so much that we decided the other three finalists deserved prizes too, so they will be receiving bonus prizes of 500 DAI each, and in future hackathons we’ll be sure to include dedicated runner-up prizes.</p><p>This hackathon absolutely exceeded our expectations, and has really forced us to rethink what contests can achieve in this space.</p><p>We’d like to thank GitCoin, our judges, and all the contestants for moving the needle and making Ethereum get just a little more usable.</p><p>What do you think we should do for our next hackathon contest? What do you think would take these entries to the next level? Leave a reply below and let us know!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a620551ccb9b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/metamask/our-metatransaction-hackathon-winner-a620551ccb9b">Our MetaTransaction Hackathon Winner!</a> was originally published in <a href="https://medium.com/metamask">MetaMask</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing a Generalized MetaTransaction Contest]]></title>
            <link>https://medium.com/metamask/announcing-a-generalized-metatransaction-contest-abd4f321470b?source=rss-9cdd320de5c9------2</link>
            <guid isPermaLink="false">https://medium.com/p/abd4f321470b</guid>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[meta-transactions]]></category>
            <category><![CDATA[metamask]]></category>
            <dc:creator><![CDATA[Dan Finlay]]></dc:creator>
            <pubDate>Wed, 08 Jan 2020 23:01:25 GMT</pubDate>
            <atom:updated>2020-01-09T17:40:30.492Z</atom:updated>
            <content:encoded><![CDATA[<h3>Announcing The Generalized MetaTransaction Contest</h3><p>At MetaMask, we strive to enable the best possible user experience for building and interacting with decentralized applications. This means reducing user friction wherever we can, and we believe we have a way that requires a new Ethereum interface-layer EIP, which we would like to invite the wider developer community to help define, with our new <a href="https://gitcoin.co/issue/MetaMask/Hackathons/2/3865">GitCoin Take Back The Web Hackathon bounty: The Generalized MetaTransaction Contest</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*TDAjNyXpJ9HjUPBe-S5d6A.png" /></figure><p>Today, our users have to hold ether in every account to pay transaction fees for even the smallest interaction, to prevent them from spamming the network. This is a lot of overhead, especially when in many cases, a third party may be willing to pay a user’s transaction fees. This pattern of third-party transaction fee payment is known as Meta-Transactions, as popularized by <a href="https://medium.com/u/610daeab315b">Austin Thomas Griffith</a>.</p><p>There are two major ways that MetaTransactions can become available to users, and we are working towards both, but this bounty will focus on the latter.</p><h4>The Contract Account Approach</h4><p>We look forward to allowing every user to have a contract-based account, and these accounts could support MetaTransactions natively. We are currently facilitating this goal with our <a href="https://medium.com/metamask/introducing-the-next-evolution-of-the-web3-wallet-4abdf801a4ee">Snaps plugin system</a>, which will eventually support any number of different account types, such as the <a href="https://medium.com/u/e7281ad70ea">Gnosis</a> Safe wallet, which already supports this type of MetaTransaction today.</p><h4>The Contract Based Approach</h4><p>The second major approach to allowing MetaTransactions is for contracts to expose a MetaTransaction processing method on themselves. We have seen some projects recently begin driving this forward, with <a href="https://medium.com/bounties-network/going-live-with-meta-transactions-a425ab6b6994">Bounties Network</a> (<a href="https://github.com/Bounties-Network/StandardBounties/blob/master/contracts/StandardBounties.sol">code</a>) and Dai Stablecoin‘s <a href="https://medium.com/@Degens/betting-without-eth-dais-new-permit-feature-5517293f3246">permit method</a> each exposing methods to facilitate third-party gas payment.</p><p>These approaches stand out because they do not require widespread adoption of a single type of account: Your dapp doesn’t need to handle each kind of contract account a user has, and it works out of the box today, and will continue to work for any key-authenticated method in the future.</p><p>Even once we support contract accounts, we expect there will still be some normal, external-key-based accounts, either to reduce the cost of publishing a contract for the account, or because a key may be used to manage a very small quantity of funds or permissions.</p><p>For these reasons, we’d like to see methods like Bounties and Maker have pioneered not only succeed, but to stand as the basis for new standards going forward.</p><h4>Towards a Generalized Standard</h4><p>One thing you’ll notice if you refer to either of the Bounties or Maker examples above, is that these MetaTransaction methods are all written bespoke to specific methods: Each method has its own MetaTransaction method handler. This is a lot of developer overhead!</p><p>At MetaMask, we were looking at these different methods, and considering which ones we could support and render more beautifully, and it occurred to us that it would be <em>much nicer</em> if we simply had a standard way of defining <em>any method</em> as MetaTransaction enabled, so that <em>any contract</em> could include a <em>single function</em>, and their users could now interact without gas payment (provided someone is willing to pay the tx fee).</p><p>Furthermore, wallets would be able to render these gas-free transactions the same way they render their normal Ethereum transactions today, and would benefit from all the many improvements they add in the future.</p><p>Rather than waiting for someone to define this standard specification, we’d like to encourage broader creativity on this issue, and so we’re opening a bounty on <a href="https://hackathons.gitcoin.co/take-back-the-web">the Gitcoin Take Back the Web Virtual Hackathon</a>. If you’d like to see this happen, we encourage you to contribute to the prize, or to strive to earn it!</p><p><a href="https://gsn.openzeppelin.com/">The Gas Station Network</a> has made efforts at a generalized standard, but it is currently oriented at totally ephemeral accounts, and not the portable, user-held keys that MetaMask makes possible, and so it’s possible their standard could be used or extended for this purpose.</p><h4>Strong Suggestions</h4><p>We’d like to see a standard that leverages the <a href="https://metamask.github.io/metamask-docs/API_Reference/Signing_Data/Sign_Typed_Data_v4">signTypedData_v4</a> method, which is what <a href="https://github.com/makerdao/dss/blob/870d6fddb75090eb177290b1db4e255d2c31075e/src/dai.sol#L117-L141">the Maker permit() method</a> does. You can see <a href="https://github.com/mosendo/gasless/blob/7688283021bbdb1c99b6951944345af0ba06e036/app/src/utils/relayer.js#L38-L79">some sample JS usage of the permit signature here</a>.</p><p>This method should be able to call any method on the contract, probably using that method’s 4-byte method identifier, which would allow wallets like MetaMask to render nice confirmations for users using this method.</p><h4>Looser Suggestions</h4><p>This method may allow some mechanism for repaying the submitter/relayer (to allow paying them back in an asset other than Ether, for example). This may be more than we should strive for in a first spec, but it would definitely make a proposal stand out!</p><p>This method may make use of a nonce, but for some use cases, allowing these messages to be submitted in any order may be an advantage, and so another replay-protection measure may be preferable!</p><p>If you want to get deeper into the mad science, there is a thread of speculation where a standard like this could evolve <a href="https://github.com/KamesCG/rapid-community/issues/1">here</a>.</p><h4>Conclusion</h4><p>All bounty submissions must be received no later than 11:59 PM EDT on Jan 23 2020 to be considered.</p><p>The winner will be announced no more than 24 hours after the contest ending time, no later than 11:59 PM EDT on Jan 24 2020.</p><p>The entries will be judged by a number of pioneering developers of MetaTransactions across the Ethereum ecosystem.</p><p>We’ll be available for support during the hackathon on our Keybase team <a href="https://keybase.io/team/metamask.developers">metamask.developers</a>.</p><p>We hope this has gotten you EVM developers’ imaginations flowing. With a generalized contract MetaTransaction format, we believe we can elevate the entire ecosystem dramatically, together.</p><p>Add to the bounty, or sign up to earn it on <a href="https://gitcoin.co/issue/MetaMask/Hackathons/2/3865">GitCoin</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=abd4f321470b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/metamask/announcing-a-generalized-metatransaction-contest-abd4f321470b">Announcing a Generalized MetaTransaction Contest</a> was originally published in <a href="https://medium.com/metamask">MetaMask</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>