Skip to main content

Guide: How to Set Up Custom Matic Mainnet RPC for Metamask & Transfer Assets from L1 to L2 to use QuickSwap DEX

October 11th 2020

Share on Social Platforms

Update: This process has gotten significantly easier in recent months. For the most up-to-date information about how to enable your wallet to use the Polygon Network and how to transfer assets, please see our latest blog on the topic.

We know it can seem daunting when you first begin using L2 DeFi. This tutorial will show you how to set up your MetaMask wallet in order to interact with QuickSwap, and Layer 2 Dapps in general.

It will also show you how to easily transfer tokens from the Ethereum mainchain (L1) to the Matic mainnet (L2).

Setting up MetaMask for Matic mainnet (custom RPC/Mapping mainnet)

If you’re wondering which wallet you should use, consider downloading MetaMask. MetaMask is a free and secure browser extension that allows users to seamlessly interact with the Ethereum blockchain.

New users can download and configure MetaMask from here.

a) Connect MetaMask to MATIC Custom RPC/Mapping Mainnet

You’ll need to configure the Matic Network custom RPC to your MetaMask. It’s pretty simple and straightforward, and it’s easy to switch back and forth between Layer 1 and Layer 2 using the button near the top of the MetaMask application.

  • Click on the network selection button on the top of the app.
  • Click on the “Custom RPC” to add the Matic mainnet information.
  • Select “Custom RPC”.

2020-10-11_Guide--How-to-Set-Up-Custom-Matic-Mainnet-RPC-for-Metamask---Transfer-Assets-from-L1-to-L2-to-use--3b1e55ccb5cb

After clicking “Custom RPC”, a screen will appear allowing you to set up the custom RPC for Matic Network.

Enter in the Matic mainnet details as follows:

2020-10-11_Guide--How-to-Set-Up-Custom-Matic-Mainnet-RPC-for-Metamask---Transfer-Assets-from-L1-to-L2-to-use--3b1e55ccb5cb

Network Name: Matic Mainnet

New RPC URL: https://rpc-mainnet.matic.network

Chain ID: 137

Symbol: MATIC

Block Explorer URL: https://explorer.matic.network/

Be sure you don’t miss any of the above fields. Once you’ve added the details click on the “Save” button. You’ll then be connected to the Matic mainnet.

You can now close the dialog box.

b) Transferring your assets from the Ethereum mainchain to the Matic mainnet

To transfer your assets from the Ethereum mainchain to the Matic mainnet for use on QuickSwap, please use the POS bridge. With the POS bridge you can quickly move your assets from the Ethereum mainchain to the Matic mainnet.

Now open the Matic Web Wallet. Here you’ll be able to transfer your assets from Ethereum over to Matic. You can access the Matic Web Wallet here: https://wallet.matic.network.

2020-10-11_Guide--How-to-Set-Up-Custom-Matic-Mainnet-RPC-for-Metamask---Transfer-Assets-from-L1-to-L2-to-use--3b1e55ccb5cb

Once you access your wallet, connect it to your MetaMask account (with the Ethereum mainnet selected as the network). The Matic Web Wallet supports MetaMask.

After connecting to your MetaMask account, it will then navigate back to the Matic Wallet interface.

You can easily deposit your funds from Ethereum to Matic using the web wallet. Ensure you have ETH or ERC 20 tokens on the Ethereum mainnet.

Step 1: Switch from PLASMA BRIDGE to POS BRIDGE.

Click on the “Switch to POS” button in the Matic Wallet.

2020-10-11_Guide--How-to-Set-Up-Custom-Matic-Mainnet-RPC-for-Metamask---Transfer-Assets-from-L1-to-L2-to-use--3b1e55ccb5cb

Step 2: After clicking on the “Matic Wallet” button, a “Deposit” button will appear below, just above the “Withdraw” button.

Click on the “Deposit” button.

You’ll get a popup where you can then enter which token you plan to deposit with the amount. Make sure your deposit amount doesn’t exceed the funds you have available.

After you fill in the details, click on the “Deposit to Matic Network” button.

2020-10-11_Guide--How-to-Set-Up-Custom-Matic-Mainnet-RPC-for-Metamask---Transfer-Assets-from-L1-to-L2-to-use--3b1e55ccb5cb

Step 3: After clicking on “Deposit to Matic Network”, you’ll be asked to “Confirm” your transaction in the MetaMask wallet.

Once your transaction is successful, you’ll receive a confirmation message. Your funds should be shortly deposited onto the Matic Network.

2020-10-11_Guide--How-to-Set-Up-Custom-Matic-Mainnet-RPC-for-Metamask---Transfer-Assets-from-L1-to-L2-to-use--3b1e55ccb5cb

Step 4: Once your transaction is successful you can switch over to the Matic Network on MetaMask in order to interact with Layer 2.

It takes 6–8 minutes on an average for your balance to reflect in your Matic mainnet wallet.

That’s it! Easy peasy.

Now you can enjoy trading at lightning-fast speeds with near-zero gas fees?

Join the Decentralised Trading Revolution

QuickSwap is now live on the Matic mainnet, and liquidity mining is active! Experience the power of trading on Layer 2 at https://quickswap.exchange/

Get involved in the conversation on Telegram: https://t.me/QuickSwapDEX

Follow us on Twitter to keep up with the latest news: https://twitter.com/QuickswapDEX

28.158MBMemory Usage493msRequest Duration
Joomla! Version4.4.9
PHP Version8.1.31
Identityguest
Response200
Templateyootheme
Database
Server
mysql
Version
10.6.20-MariaDB-cll-lve
Collation
latin1_swedish_ci
Conn Collation
utf8mb3_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "PATH" => "/usr/local/bin:/bin:/usr/bin" "HTTP_ACCEPT" => "text/html,application/xhtm...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1743424402 "last" => 1743424402...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (4.08MB) (41.94ms)
  • afterInitialise (11.41MB) (125ms)
  • afterRoute (2.19MB) (37.71ms)
  • beforeRenderComponent com_content (24.64KB) (1.05ms)
  • Before Access::preloadComponents (all components) (461.38KB) (7.16ms)
  • After Access::preloadComponents (all components) (126.34KB) (707μs)
  • Before Access::preloadPermissions (com_content) (3.88KB) (22μs)
  • After Access::preloadPermissions (com_content) (129.77KB) (797μs)
  • Before Access::getAssetRules (id:138 name:com_content.article.35) (10.8KB) (26μs)
  • After Access::getAssetRules (id:138 name:com_content.article.35) (27.73KB) (391μs)
  • afterRenderComponent com_content (474.24KB) (43.38ms)
  • afterDispatch (573.39KB) (10.06ms)
  • beforeRenderRawModule mod_menu () (6.42MB) (147ms)
  • afterRenderRawModule mod_menu () (103.11KB) (5.89ms)
  • beforeRenderModule mod_menu () (696B) (9μs)
  • afterRenderModule mod_menu () (73.02KB) (1.35ms)
  • beforeRenderRawModule mod_finder () (2.39KB) (35μs)
  • afterRenderRawModule mod_finder () (775.02KB) (13.21ms)
  • beforeRenderModule mod_finder () (704B) (12μs)
  • afterRenderModule mod_finder () (3.27KB) (265μs)
  • beforeRenderRawModule mod_custom () (2.68KB) (1.21ms)
  • afterRenderRawModule mod_custom () (280.99KB) (4.19ms)
  • beforeRenderModule mod_custom () (704B) (10μs)
  • afterRenderModule mod_custom () (1.23KB) (181μs)
  • beforeRenderRawModule mod_finder () (3.96KB) (19.65ms)
  • afterRenderRawModule mod_finder () (6.2KB) (1.89ms)
  • beforeRenderModule mod_finder () (704B) (8μs)
  • afterRenderModule mod_finder () (1.23KB) (212μs)
  • beforeRenderRawModule mod_menu () (736B) (25μs)
  • afterRenderRawModule mod_menu () (35.34KB) (3.94ms)
  • beforeRenderModule mod_menu () (696B) (8μs)
  • afterRenderModule mod_menu () (1.23KB) (191μs)
  • beforeRenderRawModule mod_yootheme_builder (Mobile Dialog) (560B) (25μs)
  • afterRenderRawModule mod_yootheme_builder (Mobile Dialog) (28.6KB) (9.74ms)
  • beforeRenderModule mod_yootheme_builder (Mobile Dialog) (720B) (10μs)
  • afterRenderModule mod_yootheme_builder (Mobile Dialog) (1.25KB) (193μs)
  • beforeRenderRawModule mod_custom () (13.24KB) (1.34ms)
  • afterRenderRawModule mod_custom () (944B) (434μs)
  • beforeRenderModule mod_custom () (704B) (8μs)
  • afterRenderModule mod_custom () (2.59KB) (323μs)
  • beforeRenderRawModule mod_custom () (368B) (2.28ms)
  • afterRenderRawModule mod_custom () (896B) (386μs)
  • beforeRenderModule mod_custom () (704B) (9μs)
  • afterRenderModule mod_custom () (2.52KB) (209μs)
  • afterRender (425.98KB) (9.55ms)
  • 1 x beforeRenderRawModule mod_menu () (6.42MB) (29.82%)
    146.95ms
    1 x afterInitialise (11.41MB) (25.28%)
    124.55ms
    1 x afterRenderComponent com_content (474.24KB) (8.8%)
    43.38ms
    1 x afterLoad (4.08MB) (8.51%)
    41.94ms
    1 x afterRoute (2.19MB) (7.65%)
    37.71ms
    1 x beforeRenderRawModule mod_finder () (3.96KB) (3.99%)
    19.65ms
    1 x afterRenderRawModule mod_finder () (775.02KB) (2.68%)
    13.21ms
    1 x afterDispatch (573.39KB) (2.04%)
    10.06ms
    1 x afterRenderRawModule mod_yootheme_builder (Mobile Dialog) (28.6KB) (1.98%)
    9.74ms
    1 x afterRender (425.98KB) (1.94%)
    9.55ms
    1 x Before Access::preloadComponents (all components) (461.38KB) (1.45%)
    7.16ms
    1 x afterRenderRawModule mod_menu () (103.11KB) (1.2%)
    5.89ms
    1 x afterRenderRawModule mod_custom () (280.99KB) (0.85%)
    4.19ms
    1 x afterRenderRawModule mod_menu () (35.34KB) (0.8%)
    3.94ms
    1 x beforeRenderRawModule mod_custom () (368B) (0.46%)
    2.28ms
    1 x afterRenderRawModule mod_finder () (6.2KB) (0.38%)
    1.89ms
    1 x afterRenderModule mod_menu () (73.02KB) (0.27%)
    1.35ms
    1 x beforeRenderRawModule mod_custom () (13.24KB) (0.27%)
    1.34ms
    1 x beforeRenderRawModule mod_custom () (2.68KB) (0.25%)
    1.21ms
    1 x beforeRenderComponent com_content (24.64KB) (0.21%)
    1.05ms
    1 x After Access::preloadPermissions (com_content) (129.77KB) (0.16%)
    797μs
    1 x After Access::preloadComponents (all components) (126.34KB) (0.14%)
    707μs
    1 x afterRenderRawModule mod_custom () (944B) (0.09%)
    434μs
    1 x After Access::getAssetRules (id:138 name:com_content.article.35) (27.73KB) (0.08%)
    391μs
    1 x afterRenderRawModule mod_custom () (896B) (0.08%)
    386μs
    1 x afterRenderModule mod_custom () (2.59KB) (0.07%)
    323μs
    1 x afterRenderModule mod_finder () (3.27KB) (0.05%)
    265μs
    1 x afterRenderModule mod_finder () (1.23KB) (0.04%)
    212μs
    1 x afterRenderModule mod_custom () (2.52KB) (0.04%)
    209μs
    1 x afterRenderModule mod_yootheme_builder (Mobile Dialog) (1.25KB) (0.04%)
    193μs
    1 x afterRenderModule mod_menu () (1.23KB) (0.04%)
    191μs
    1 x afterRenderModule mod_custom () (1.23KB) (0.04%)
    181μs
    1 x beforeRenderRawModule mod_finder () (2.39KB) (0.01%)
    35μs
    3 x beforeRenderModule mod_custom () (704B) (0.01%)
    27μs
    1 x Before Access::getAssetRules (id:138 name:com_content.article.35) (10.8KB) (0.01%)
    26μs
    1 x beforeRenderRawModule mod_menu () (736B) (0.01%)
    25μs
    1 x beforeRenderRawModule mod_yootheme_builder (Mobile Dialog) (560B) (0.01%)
    25μs
    1 x Before Access::preloadPermissions (com_content) (3.88KB) (0%)
    22μs
    2 x beforeRenderModule mod_finder () (704B) (0%)
    20μs
    2 x beforeRenderModule mod_menu () (696B) (0%)
    17μs
    1 x beforeRenderModule mod_yootheme_builder (Mobile Dialog) (720B) (0%)
    10μs
24 statements were executed, 2 of which were duplicates, 22 unique10.06ms109.59KB
  • SELECT @@SESSION.sql_mode;96μs1.95KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:334Copy
  • SELECT `data` FROM `pde83_session` WHERE `session_id` = ?848μs1.68KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `pde83_session` WHERE `session_id` = :session_id LIMIT 1215μs1.9KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `pde83_session` (`session_id`,`guest`,`time`,`userid`,`username`) VALUES (:session_id, :guest, :time, :user_id, :username)198μs912BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `pde83_viewlevels`76μs17.63KB/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `pde83_usergroups` AS `a` LEFT JOIN `pde83_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest82μs1.68KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `value` FROM `pde83_admintools_storage` WHERE `key` = 'cparams'69μs912B/administrator/components/com_admintools/src/Helper/Storage.php:120Copy
  • SELECT `option`,`view`,`query` FROM `pde83_admintools_wafexceptions`208μs3.36KB/plugins/system/admintools/src/Utility/Cache.php:196Copy
  • SELECT `params` FROM `pde83_extensions` WHERE `type` = 'plugin' AND `folder` = 'system' AND `element` = 'admintools'82μs2.14KB/plugins/system/admintools/src/Utility/RescueUrl.php:324Copy
  • SELECT custom_data FROM pde83_extensions WHERE element = 'yooessentials' AND folder = 'system'76μs2.64KB/plugins/system/yooessentials/helper.php:152Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `pde83_categories` AS `s` INNER JOIN `pde83_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`2.58ms7.09KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id` FROM `pde83_content` WHERE `alias` = :alias AND `catid` = :catid1.6ms1.7KBParams/components/com_content/src/Service/Router.php:263Copy
  • SELECT custom_data FROM pde83_extensions WHERE element = 'yooessentials' AND folder = 'system' LIMIT 180μs2.64KB/plugins/system/yooessentials/modules/core-joomla/src/Database.php:54Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `pde83_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39,:preparedArray40)157μs23.22KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `pde83_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 0139μs18.22KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `pde83_content`666μs2.61KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:625Copy
  • UPDATE `pde83_content` SET `hits` = (`hits` + 1) WHERE `id` = '35'1.07ms2.5KB/libraries/src/Table/Table.php:1325Copy
  • SELECT `name`,`element` FROM `pde83_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 190μs1.63KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `pde83_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)105μs1.63KB/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM pde83_fields AS a LEFT JOIN `pde83_languages` AS l ON l.lang_code = a.language LEFT JOIN pde83_users AS uc ON uc.id=a.checked_out LEFT JOIN pde83_viewlevels AS ag ON ag.id = a.access LEFT JOIN pde83_users AS ua ON ua.id = a.created_user_id LEFT JOIN pde83_fields_groups AS g ON g.id = a.group_id WHERE ( (`a`.`context` = :context AND `a`.`access` IN (:preparedArray1,:preparedArray2)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray3,:preparedArray4)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC194μs7.39KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:166Copy
  • SELECT `title` FROM `pde83_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)491μs1.63KB/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `pde83_scheduler_tasks` AS `a` WHERE `a`.`state` = 1397μs1.85KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:466Copy
  • SELECT `session_id` FROM `pde83_session` WHERE `session_id` = ?222μs1.9KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:291Copy
  • UPDATE `pde83_session` SET `data` = ? , `time` = ? WHERE `session_id` = ?315μs840BParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:318Copy