MetaMask and Web3 Resources
Tags: web3, blockchain, metamask, ethereum
Published: 2021-12-31 18:58:36

[Link to SmartCon2022 Slides](https://docs.google.com/presentation/d/1XE_tnMvmITrlOnaAvhjK6VRT7vQF0AvLn6qwh0D2e50)

Not just a crypto wallet but a gateway to exploring blockchain decentralized applications.

With over 20 million users worldwide, [MetaMask](https://metamask.io) empowers users with the ability to buy, store, send and swap Ethereum based tokens ([ERC-20](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/), [ERC-721 (NFTs)](https://ethereum.org/en/developers/docs/standards/tokens/erc-721/), and more).

Users can connect to blockchain applications and overall own their own data by generating passwords and keys on their own devices where they only have the access to their accounts and data with the right to choose what they want to share and keep private.

{% youtube YVgfHZMFFFQ %}

Before we dive any deeper into the MetaMask ecosystem, take a minute to explore the meaning of any of the terms you may not already know in the list below:

[Blockchain](https://docs.metamask.io/guide/common-terms.html#blockchain), [Decentralization](https://docs.metamask.io/guide/common-terms.html#decentralize-decentralization), [Smart Contracts](https://docs.metamask.io/guide/common-terms.html#smart-contracts), [Trustless](https://docs.metamask.io/guide/common-terms.html#trustless), [Wallet](https://docs.metamask.io/guide/common-terms.html#wallet), [Account](https://docs.metamask.io/guide/common-terms.html#account), [Address](https://docs.metamask.io/guide/common-terms.html#address-public-key), [Public Key](https://docs.metamask.io/guide/common-terms.html#public-key), [Private Key](https://docs.metamask.io/guide/common-terms.html#private-key), [Keystore File](https://docs.metamask.io/guide/common-terms.html#keystore-file), [Mnemonic/Seed Phrase](https://docs.metamask.io/guide/common-terms.html#mnemonic-phrase-seed-phrase-seed-words), [Hardware Wallet](https://docs.metamask.io/guide/common-terms.html#hardware-wallet), [Identicon](https://docs.metamask.io/guide/common-terms.html#identicon-addressidenticon-addressicon), [Hexadecimal](https://docs.metamask.io/guide/common-terms.html#hexadecimal), [Seed](https://docs.metamask.io/guide/common-terms.html#seed), [Brain Wallet](https://docs.metamask.io/guide/common-terms.html#brain-wallet), [Entropy](https://docs.metamask.io/guide/common-terms.html#entropy), [Derivation](https://docs.metamask.io/guide/common-terms.html#derive-derivation), [Encryption](https://docs.metamask.io/guide/common-terms.html#encryption), [Encrypted Keys](https://docs.metamask.io/guide/common-terms.html#encrypted-vs-unencrypted-keys)

## Developing with MetaMask

If you are a developer wanting to connect users to your decentralized application you can achieve the basics such basic vierification of the user and initiating transactions all the way to complete user account onboarding with convenience libraries like [ethers](https://www.npmjs.com/package/ethers), [web3.js](), [truffle](https://www.npmjs.com/package/web3), [embark](https://www.trufflesuite.com/) and others.

The [MetaMask Docs](https://docs.metamask.io/guide/Getting-Started.html) can get you started by [downloading the extension](https://metamask.io/download.html), familiarization you with the [Ethereum Provider API](https://docs.metamask.io/guide/ethereum-provider.html) to [running a test network](https://docs.metamask.io/guide/Getting-Started.html#running-a-test-network).

As well we have some amazing web tools out there for working with the MetaMask RPC API, the various network and chainIds you need to know and some handy tools to help convert chainIds to hex.

- [MetaMask API Playground](https://metamask.github.io/api-playground)
- [Chainlist](https://chainlist.org)
- [eSerialize](https://eserialize.com)
- [Ethers Hex Strings](https://docs.ethers.io/v4/api-utils.html#hex-strings)
- [How to Connect your Smart Contracts to MetaMask by @PatrickCol](https://www.youtube.com/watch?v=pdsYCkUWrgQ)
- [Web3 Fullstack](https://www.web3-fullstack.com/)

The easiest way to jump right in learning how to develop with MetaMask (NodeJS required) is to try your hand at [Creating a Simple Dapp](https://docs.metamask.io/guide/create-dapp.html)

Other resources that I think you should consider if you are new to web3 development are:

- [Learn Blockchain, Solidity, and Full Stack Web3 Development with JavaScript](https://www.youtube.com/watch?v=gyMwXuJrbJQ)
- [The Complete Guide to Full Stack Ethereum Development](https://www.youtube.com/watch?v=a0osIaAOFSE)
- [Ethereum Speed Run](https://medium.com/@austin_48503/%EF%B8%8Fethereum-dev-speed-run-bd72bcba6a4c)

MetaMask now provides a metamask-onboarding library designed to improve and simplify the onboarding experience. The new library exposes an API to initiate the onboarding process. In the process, it registers your site as the origin of the onboarding request. MetaMask will check for this origin after the user completes the onboarding flow. If it finds an origin, the final confirmation button of the MetaMask onboarding flow will indicate that the user will be redirected back to your site.

### JSON-RPC and Open RPC

In order to interact with the Ethereum blockchain (reading data or sending transactions) we connect to an Ethereum node.

All Ethereum client implement a [JSON-RPC](https://www.jsonrpc.org/specification) spec, these are uniform sets of methods that apps rely on regardless of the specific node or client implementation.

JSON-RPC is a stateless, light-weight remote procedure call (RPC) protocol. It defines several data structures and the rules around their processing. It's simple and transport agnostic in that the concepts can be used within the same process, over sockets, over HTTP, or in many various message passing environments using JSON data.

OpenRPC 

To learn more about JSON-RPC the creators of [OpenRPC](https://eips.ethereum.org/EIPS/eip-1901#what-is-openrpc) (Shane Jonas and Zach Belford) have created a series of tutorials that can get you up and running. Below are links to their videos and some of the online tools they use to get you started.

- [Introduction - OpenRPC Webinar](https://www.youtube.com/watch?v=VdtBY6PEeks)
- [Basics - OpenRPC Webinar](https://www.youtube.com/watch?v=wXlJWoWxk7Q)
- [Advanced - OpenRPC Webinar](https://www.youtube.com/watch?v=hxdazdSBY2c)
- [OpenRPC Inspector](https://inspector.open-rpc.org/?url=https://mock.open-rpc.org/petstore-1.0.0)


## Onboarding Users

As an Ethereum enabled site developer, sending users offsite to install MetaMask presents challenges. Most notably, you must inform the user to return to your site and refresh their browser after the installation. 

MetaMask now provides a [metamask-onboarding library](https://github.com/MetaMask/metamask-onboarding) designed to improve and simplify the onboarding experience. The new library exposes an API to initiate the onboarding process. This process registers your site as the origin of the onboarding request. MetaMask will check for this origin after the user completes the onboarding flow. If it finds an origin, the final confirmation button of the MetaMask onboarding flow will indicate that the user will be redirected back to your site.

MetaMask cares deeply about user experience and has been working diligently to give developers the tools they need in order to improve their own applications contributing overall to the usability of web3 technologies.

## Additional Features and Resources

[//]: # "- MetaMask SDK ([Beta Docs](https://c0f4f41c-2f55-4863-921b-sdk-docs.github.io/guide/metamask-sdk-intro.html#example-use-cases))"
- Resources for our [ETHDubai NFT Workshop](https://github.com/MetaMask/nft-tickets-workshop/tree/final)
- [MetaMask Swaps](https://metamask.io/swaps.html)
- [How Transaction Fees Will Change (EIP-1559)](https://metamask.io/1559.html)
- [Metamask Institutional](https://metamask.io/institutions.html)
- [Custody Partnerships](https://metamask.io/institutions/custody.html)
- [MetaMask FAQs](https://metamask.io/faqs.html)
- [MetaMask Job Board](https://consensys.net/open-roles/?discipline=32543)
- [Truffle Suite](https://trufflesuite.com)
- MetaMask is part of the [ConsenSys](https://ConsenSys.net) Product Family

## MetaMask User Explanatory Videos

Beyond getting familiar with all of the great Web3 and MetaMask dev tools above, we want to highlight the various bite sized user feature and announcement videos we have produced. Having overall knowledge of the various MetaMask features and UI, this can help to understand what is possible with MetaMask and aid in building world class decentralized applications.

{% youtube gsfJywNxpi4 %}

{% youtube izvgAmbWPyE %}

{% youtube oZIFy76TjJM %}

{% youtube V7Wqc7zFWhU %}

{% youtube H2vU2LA_KuA %}

{% youtube wydgGOjyJ4c %}

{% youtube 2iUUwA5BmsI %}

{% youtube WUks5EukkP4 %}

{% youtube hnzudz1BI80 %}

{% youtube ixRIoGfbmTI %}

{% youtube H2vU2LA_KuA %}

As well, here is a video of a fireside chat with the founders of MetaMask

{% youtube GpeRkhunrMA %}