# Quick start

In this section we'll get you deploying a sample contract on Mode in less than 10 minutes.\
\
Let’s see how to deploy a smart contract on Mode using the [Remix IDE](https://remix.ethereum.org) for simplicity.

## Get everything ready

Before getting started:

1. Follow [Add Mode](/user-guides/using-mode-mainnet.md#testnet) for the step-by-step on how to add Mode testnet to [Metamask](https://metamask.io/download/).
2. This guide assumes you have got Sepolia ETH and bridged to the Mode Testnet Network. Learn how to do that in [Testnet Faucets](/tools/testnet-faucets.md)

We are ready to get started!

## Remix & Sample Code

[Remix](https://remix.ethereum.org) is a no-setup tool for developing smart contracts. It’s easy to get started allowing a simple deployment process, debugging, interacting with smart contracts, and more. It’s a great tool to test quick changes and interact with deployed smart contracts.

<figure><img src="https://lh4.googleusercontent.com/AdHTInVXjMKYbUPeok0GuLdiZDDTsdxodDjApKYvJ-kEfqQ2dbgEwp1dHhveeYi0m1VkiW6wnBJV_1Tnn4S4JR6KIvuQGZ5eKukwsWAHxF6PsffOneea6mgZzh_OFZThQok1DkpJmtWLkzN1oCmJEYg" alt="This is a screenshot showing Remix I D E. There is a basic smart contract that will be used for the tutorial."><figcaption></figcaption></figure>

For the sake of this tutorial, we will be deploying the ‘1\_Storage.sol’ smart contract that comes as an example in Remix, but you can use any of your code.

We added a few lines of code to register this contract on the SFS. You can copy and then paste this in Remix or use your own contract code.\
\
Here's the sample code:

{% code title="1\_Storage.sol" fullWidth="true" %}

```solidity
// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.20;

interface Sfs {
    function register(address _recipient) external returns (uint256 tokenId);
}

contract Storage {

    uint256 number;

    constructor(){
    }
    
    function store(uint256 num) public {
        number = num;
    }

    function retrieve() public view returns (uint256){
        return number;
    }
}
```

{% endcode %}

## Steps to deploy

1. Copy the sample code and paste it in one of the .sol files in Remix
2. To compile your smart contract, go to the `Solidity Compiler tab` and select the contract you want to compile
3. Click on "Compile", you can also enable "Auto Compile" for automatic compilation whenever you change the contract code.

{% hint style="warning" %}
Make sure to open the advanced configurations and setting the EVM version to London. This is to avoid an issue with the <mark style="color:orange;">`PUSH0`</mark> opcode. You can read more on this specification with all Optimism chains [here](https://community.optimism.io/docs/developers/build/differences/#opcode-differences).
{% endhint %}

<div align="center"><figure><img src="/files/2Eyt9rahCUjlgdDg424g" alt="" width="371"><figcaption><p>Solidity Compiler Tab - correct settings</p></figcaption></figure></div>

4. Once the smart contract is compiled successfully, switch to the "`Deploy & Run Transactions`" tab.
5. In the "`Environment`" dropdown menu, select "`Injected Provider - MetaMask`"; this will connect your MetaMask to Remix and will allow you to make transactions from that connected wallet.

{% hint style="info" %}
Make sure to have [Mode Testnet ](https://github.com/mode-network/documentation/blob/main/introduction/broken-reference/README.md)as your selected network in Metamask before deploying.
{% endhint %}

\
![](https://lh4.googleusercontent.com/jmsucoJ4vr4ByW3_0Nt4gwlckzu78pvh7ugVp2nEep9z9LtpY-BuC5WmhX4k_uKk2vA_iIvDZg-VEn8YDzKdoSzmE327wjbLiCIpCGe9xc_GAxBOC5-LYet-qBNPQ54W5waFpeMZak61a-rmk_ITxog) ![](https://lh6.googleusercontent.com/nIYOD8FEnw-1qCtgMI_uKK4qRwEjciveycdc3q6iLtuW7su7sOQMZHhG1dw8Rwk2ulO4JFlQU8YxQlJIB8c6uMZJ5t19PCikrkIKVsRZW68PVRz8RVs1NtQOxrQ6x7CwZXtwjlv6W4Fe9x45_44LWSQ)

6. Select the compiled contract you want to deploy and click ‘Deploy.’

Now, MetaMask should pop up and ask you to confirm the transaction with super low fees.

<figure><img src="https://lh4.googleusercontent.com/u2Y8C7HIZLdoXt_3UW_bEGSj8fI0oRCoWsvLDfJaHjzviK7ucJKzrCgh8Qiw4OD7Zj8EK3-KGCK7H2fXn5Am5iUbDKHoD44ZDZkHUqC2R8UQmbkvStnjWNMMM9EwDcp_Sgl9Ml-ONlK8wCE0T21wEqo" alt="This image shows a screenshot of Metamask wallet with the transaction to deploy the smart contract. It shows very low fees of around 0.35 dollars or 0.00018852 ETH." width="375"><figcaption></figcaption></figure>

{% hint style="success" %}
**CONGRATULATIONS! You just deployed your first smart contract to Mode.**
{% endhint %}

If you want to learn how to interact with your recently deployed contact, check [/pages/fHqBqkBJNtDV8hsilJVF#id-2.-how-to-explore-and-interact-with-your-deployed-smart-contract](https://docs.mode.network/introduction/pages/fHqBqkBJNtDV8hsilJVF#id-2.-how-to-explore-and-interact-with-your-deployed-smart-contract "mention").

To learn more about Mode and how to turn your code into a business, join our [Discord](https://discord.gg/modenetworkofficial) and say hello 👋

\\


---

# 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.mode.network/introduction/quick-start.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.
