# Deploy using Remix IDE

[Remix IDE](https://remix.ethereum.org/) is an online no-setup platform maintained by the Ethereum Foundation with a GUI for developing smart contracts. You can check the [Remix IDE docs](https://remix-ide.readthedocs.io/en/latest/run.html) to learn more about deployment.

## Before you Begin

* Check if you are using the right [network configuration](/plume/developers/network-information.md)
* Have enough test tokens in your wallet

{% hint style="info" %}
Learn more about claiming test tokens from [here](/plume/developers/how-to-guides/how-to-connect-to-network/claim-test-tokens.md).
{% endhint %}

## Deploying your Contract

Let's write a simple one-of-one NFT contract based on [OpenZeppelin's open-source ERC-721](https://docs.openzeppelin.com/contracts/4.x/erc721) implementation to tokenize our CBO's prized Rolex watch on Plume Testnet for instance.

{% stepper %}
{% step %}

### Create a file on Remix IDE

Go to [Remix IDE](https://remix.ethereum.org) and create a new file. We are using a sample file named `RolexYachtMaster40.sol`.

<figure><img src="/files/kNVFWqcaULLfgqBsR6lX" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Add your code to the file

To demonstrate we are using this sample smart contract code, you can add your own code.

{% code title="RolexYachtMaster40.sol" overflow="wrap" fullWidth="false" %}

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.25;

import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract RolexYachtMaster40 is Ownable, ERC721 {
    error NFTAlreadyMinted();
    bool private _minted;

    constructor() Ownable(msg.sender) ERC721("Rolex Yacht-Master 40", "") {}

    function mint() public onlyOwner returns (uint256) {
        if (_minted) {
            revert NFTAlreadyMinted();
        }
        _safeMint(owner(), 0);
        _minted = true;
        return 0;
    }
}
```

{% endcode %}
{% endstep %}

{% step %}

### Compile the Contract

Go to the **Solidity Compiler** tab on the IDE, choose the compiler version if you wish to and click on the blue `Compile <file_name>` button.

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

{% hint style="success" %}
A green tick :white\_check\_mark: will appear on the Compiler tab if the compilation is successful.
{% endhint %}
{% endstep %}

{% step %}

### Deploying the contract using MetaMask

Make sure you are on Plume Testnet network in MetaMask.

<img src="/files/HiJ9m3dO4XkDA4looLuX" alt="" data-size="original">

Select **Injected Provider - MetaMask** in the Environment dropdown and select the account which has sufficient ETH to pay to gas fees. As for our sample contract, no need to change other fields and click on **Deploy** button

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

There will be a pop-up on MetaMask to confirm the transaction (asking for gas fees), on confirming the contract will be deployed.
{% endstep %}

{% step %}

### Contract Deployed

Check the console for the transaction info and deployed contract on the left-side panel.

<figure><img src="/files/dD1ZGCU6SB4DTshE11Ah" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}


---

# 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.plume.org/plume/developers/how-to-guides/how-to-deploy-smart-contracts/deploy-using-remix-ide.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.
