# 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="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/fGFalantqviUj6JgtJ5o/1.png" alt=""><figcaption><p>remix.ethereum.org</p></figcaption></figure>

Below is the default interface of Remix:

<figure><img src="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/seQ3PP8nKrDdFfiHsgzw/sd.png" 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="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/3ZClNnTOgzsFoE6JSXKD/1.png" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/HXuimysQapyDV7XsquTN/2.png" 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="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/DLK9L3LWX7As9Z1U6gvU/3.png" 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="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/CCB0bbTKQzHldDTjbKG4/4.png" 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="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/7z9efIIjYic6xhvyvAcw/5.png" 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="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/jl23MhKSAFBvSpNxhpEJ/6.png" 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="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/jXUGNBxUdC9UNdeCLiza/7.png" 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="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/DJW8840AwjsruoGPM9h0/9.png" 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="https://content.gitbook.com/content/83AxEneJiBkryPMCdQ2h/blobs/MnitBtDJf6bLWOPXsc57/10.png" alt=""><figcaption></figcaption></figure>

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