# 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 **Atlantis Network** added to your Metamask and a few BCX tokens are in your wallet to be used as Gas for creating a smart contract.&#x20;

If you need some BCX tokens for the testnet, go to <https://faucet.blockxnet.com>, then enter your Metamask address.

<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 BCX 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.

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

**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>

**10.** Once you have copied the Contract Address, you can then add it to your Metamask. Once the Metamask window opens, you’ll notice that there is a small amount of BCX tokens deducted from your balance. Click on the **Assets** tab, then click **Import tokens**.

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

**11.** Paste the **contract address** that you copied from Remix. If the contract address that you copied is correct, MetaMask will automatically show your token symbol.&#x20;

Click **Add Custom Token.** It will show you a confirmation page before being able to add the token. It will also show you your token balance.

<figure><img src="/files/4GaAbCc0E9Jhn6sa7knQ" alt=""><figcaption></figcaption></figure>

**12.** A confirmation page will appear before you can add the token. Click **Import Tokens.**

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

**13.** You should then be able to see your token on MetaMask where you can send tokens to other Atlantis Network users, just like you send tokens on **Ethereum** or **Binance Smart Chain**.

**14.** If you want to see further info on your contract, you can go to [**https://explorer.blockxnet.com**](https://explorer.blockxnet.com) and enter either the contract address or the transaction hash. Both are available in the Remix lower section after you deploy the contract.

<figure><img src="/files/7SG5RnpgCQOJXoWR7plA" alt=""><figcaption></figcaption></figure>

Click on the token name that you deployed to see more info about the token.

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

**15.** If you clicked on the token name of your token, it should have taken you to the token page where you can see the **Token Holders**, **Total Supply**, **Number of Holders** and **Number of Transfers.**

<figure><img src="/files/33lMjrGOm5AEHn7uq6ex" alt=""><figcaption></figcaption></figure>

**Congratulations**, you have successfully deployed a smart contract on the Atlantis Testnet using Remix, and are now able to see transaction details on a block explorer!


---

# 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.blockxnet.com/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.
