-
Notifications
You must be signed in to change notification settings - Fork 366
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
80 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
--- | ||
title: Hello Ethereum Wallets! | ||
authors: [gagdiez, slava] | ||
slug: hello-ethereum-wallets | ||
tags: [updates] | ||
--- | ||
|
||
*You can now login using MetaMask, WalletConnect and +400 Ethereum Wallets on Near!* | ||
|
||
<p><img src="/docs/blog/web3wallets/cover.png" /></p> | ||
|
||
<!-- truncate --> | ||
|
||
## Ethereum Wallets on NEAR | ||
|
||
We are excited to announce that NEAR now supports Ethereum wallets! This means that you can now login to NEAR applications using MetaMask, WalletConnect, and over 400 other Ethereum wallets. | ||
|
||
In this post, we will explain how Ethereum wallets work on NEAR, and where to find information on how to integrate them into your applications. | ||
|
||
## How it works | ||
|
||
The idea of bringing Ethereum wallets to Near was born on the [NEP-518](NEP-518](https://github.com/near/NEPs/issues/518)), and the [Aurora Labs team](https://aurora.dev) worked for over a year to make it a reality. | ||
|
||
Since Ethereum wallets create **ethereum transactions** and talk with **ethereum RPCs**, the Aurora team had to create three components: | ||
|
||
1. A Translator API, that translates Ethereum RPC calls into NEAR RPC calls | ||
2. A "Wallet Contract" deployed on Near, that can process Ethereum transactions | ||
|
||
<img src="/docs/blog/web3wallets/diagram.png" height="600px" style={{width: "auto", display: "block", margin: "0 auto"}} /> | ||
|
||
|
||
### Login | ||
|
||
Imagine your account on Metamask is `0xD79...314`, and you want to login on a Near application. | ||
|
||
The first time you login, `ethereum-wallets.near` will create the Near account `0xD79...314` for you. | ||
|
||
<img src="/docs/blog/web3wallets/login.png" style={{width: "auto", display: "block", margin: "0 auto"}} /> | ||
|
||
Your new Near account already has a `Wallet Contract` deployed on it, which can **translate ethereum transactions** into **account actions**. | ||
|
||
:::tip | ||
In Near, smart contracts can do anything an account can do, including sending tokens and calling other contracts! | ||
::: | ||
|
||
### Using your Account | ||
|
||
Once you have logged in, you can use start interacting with the application. If at some point the application needs to interact with the blockchain, Metamask will ask you to sign a transaction. | ||
|
||
Under the hood, Metamask will create an Ethereum transaction and send it to the `Translator API`, deployed at `https://eth-rpc.mainnet.near.org`. | ||
|
||
The `Translator API` will then translate the Ethereum transaction into a **function call** into the `Wallet Contract` deployed in your account. Particularly, it will call the `rlp_execute` function, passing the Ethereum transaction as an argument. | ||
|
||
<img src="/docs/blog/web3wallets/function-call.png" style={{width: "auto", display: "block", margin: "0 auto"}} /> | ||
|
||
The `Wallet Contract` will then execute the function call, and the application will receive the result. | ||
|
||
:::tip | ||
|
||
Check [this transaction](https://testnet.nearblocks.io/txns/GrVGFVFmGBcNP5xkoA21gEJ7d5bUGVxtmkfHAzyUW895#enhanced) in our explorer to see the full execution path | ||
|
||
::: | ||
|
||
## Updating your Application | ||
|
||
In order to support Ethereum wallets, you only need to update your version of `wallet-selector`, and configure it to include the new `ethereum-wallets` module. | ||
|
||
Do not worry! it is very simple, check our [**tutorial**](/tools/ethereum-wallets) and working example [**hello world frontend**](https://github.com/near-examples/hello-near-examples/tree/main/frontend). | ||
|
||
--- | ||
|
||
## Resources | ||
|
||
1. [**Integration Tutorial**](/tools/ethereum-wallets) | ||
|
||
2. [Hello World Example](https://github.com/near-examples/hello-near-examples/blob/main/frontend/) | ||
|
||
3. [Recording of the Ethereum Wallet Presentation](https://drive.google.com/file/d/1xGWN1yRLzFmRn1e29kbSiO2W1JsxuJH-/view?usp=sharing) | ||
|
||
4. [NEP-518](https://github.com/near/NEPs/issues/518), the proposal that started it all |