# Remix

Remix IDE allows developers to deploy their smart contracts using MetaMask, which is universally convenient. This platform doesn't require a setup, and comes with a series of plugins that offer simple GUIs.  &#x20;

Remix is supported by *Firefox, Chrome, Brave, and other Chromium-based browsers*. The platform is also available as a [Desktop IDE](https://github.com/ethereum/remix-desktop/releases) and a [VScode extension](https://github.com/ethereum/remix-vscode#ethereum-remix-project-extension-for-visual-studio-code). &#x20;

This guide assumes that the reader has at least some familiarity with the Solidity programming language for smart contracts, and general dApp development on the Ethereum network.&#x20;

The following steps will guide you to effective smart contract deployment on Remix.

**1.** Go to <https://remix.ethereum.org/>. Make sure that you have the **Metanovaverse Network** added to your Metamask and a few MNV tokens are in your wallet to be used as Gas for creating a smart contract.&#x20;

<figure><img src="/files/dhuyZZW3jz39BMfZ2TA8" alt=""><figcaption><p>remix.ethereum.org</p></figcaption></figure>

Below is the default interface of Remix:

<figure><img src="/files/ItuUITjtp4ZJXCP5n2Vk" alt=""><figcaption></figcaption></figure>

Let’s try to create a new file. We’ll create a new token within the Atlantis Network using just a few lines of Solidity code commonly available across the internet:

```solidity
pragma solidity ^0.8.2;
 
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
 
contract MyToken is ERC20, ERC20Burnable, Ownable {
   
    constructor() ERC20("My Token", "Myt") {
        _mint(msg.sender, 1000000 * 10 ** 18);
    }
 
    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }
}
```

**2.** Create a new file:

<figure><img src="/files/lXRj8otWxH4do8SIPa3Y" alt=""><figcaption></figcaption></figure>

Then enter a filename. For this example, we've named it **MyToken.sol.**

<figure><img src="/files/yd0x3xXtY82O7FBZJy2Q" alt=""><figcaption></figcaption></figure>

**3.** Paste the Solidity code shown below to the newly created file. Then **Save.**

```solidity
pragma solidity ^0.8.2;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyToken is ERC20, ERC20Burnable, Ownable {
    
    constructor() ERC20("MyToken", "Myt") {
        _mint(msg.sender, 1000000 * 10 ** 18);
    }
    
    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }
}
```

<figure><img src="/files/6diq1m1MUHA4WzgaXekE" alt=""><figcaption></figcaption></figure>

**4.** Upon saving, you will see more files being added to your workspace. They are our new dependencies since we imported the OpenZeppelin libraries.

<figure><img src="/files/ja20PWgutN4uy7pfzZme" alt=""><figcaption></figcaption></figure>

**5.** Look for the **Compile** icon on the left navigation panel of Remix - the 3rd icon. Then click on the Compile button.

<figure><img src="/files/lvhdq7VUaHrFXHx332bi" alt=""><figcaption></figcaption></figure>

**6.** Once you have successfully compiled the file, Remix will show you the Compile icon with a checkmark added to it. There’ll be no checkmark if an error had occurred during compilation and you’ll see error message(s) as well.&#x20;

You will now be able to copy the **ABI** of the contract which is commonly used in Web3 when it comes to tampering with the contract.

<figure><img src="/files/yEgBAqJcQ3dfBa7LoUD5" alt=""><figcaption></figcaption></figure>

**7.** To Deploy, click the **Deploy** button on the left which is the 4th icon in Remix. For the Environment, select **Injected Provider** - Metamask to use your Metamask wallet in deploying the contract. Make sure that the Atlantis Network is selected and the chosen wallet has MNV in it for gas fee coverage.&#x20;

One of the ways to verify if you’ve got the right wallet is checking if the address is correct, as well as the balance right beside it (displayed in **ether**).

<figure><img src="/files/f7PlYRSRLX3Py8mMBv3r" alt=""><figcaption></figcaption></figure>

**8.** Once you click **Deploy**, it will open up a MetaMask window where you’ll see the gas fee needed for deploying the contract. Click **Confirm** for the contract to be deployed.

**9.** To find out the outcome of the deployment, check the lower section of Remix, which should show you something like this:

<figure><img src="/files/c7cgTxphTpRFcJFfudXQ" alt=""><figcaption></figcaption></figure>

On the **left side**, there is the **Deployed Contracts** section, which, if you click on the arrow on the left side of the MyToken contract, should open more options for interacting with the contract.&#x20;

The **Copy** icon allows you to copy the contract address of the deployed contract to add it to your Metamask since it is a token.&#x20;

On the **right side**, you’ll see more info if you click on the right arrow. It should show you transaction info.&#x20;

<figure><img src="/files/GjntXiGVRQe0IDqAr6GK" alt=""><figcaption></figcaption></figure>

**Congratulations**, you have successfully deployed a smart contract on the Metanovaverse Network using Remix.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.metanovaverse.com/metanova-verse-introduction/deploying-smart-contracts/remix.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
