# Using Remix

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

## Overview

This tutorial will show you how to compile and deploy an existing smart contract using Remix.

Remix IDE is a no-setup smart contract development tool with a GUI. Beginners and experts alike will benefit from Remix. Remix plays well with other tools, and allows for a simple deployment process to the chain of your choice. The Remix Project also can serve as a learning lab for teaching and experimenting with EVM-compatible chains.

## Pre-requisites <a href="#pre-requisites" id="pre-requisites"></a>

* Install Metamask
* Configure KuCoin Community Chain Testnet on Metamask
* Get Testnet token

## What you will do

* Create a file on Remix
* Upload or code the smart contract to the IDE
* Compile the smart contract
* Connect the application to KCC Testnet via Metamask
* Deploy the smart contract

## Getting started with [Remix IDE](https://remix.ethereum.org/)

To start building a smart contract, click on **New File** and name it as `HelloWorld.sol`.

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

## Writing smart contract

Copy the code given below to `HelloWorld.sol` file

```solidity
// SPDX-License-Identifier: MIT
// Specifies that the source code is for a version
// of Solidity greater than 0.8.15
pragma solidity ^0.8.15;

contract HelloWorld {

    // A publicly accessible function that takes a string as a parameter
    // and echoes the `message`
    function echo(string memory message) public pure returns (string memory) {
        return message;
    }
}
```

The first line, `pragma solidity ^0.8.15` specifies that the source code is for a Solidity version greater than 0.8.15. [Pragmas](https://solidity.readthedocs.io/en/latest/layout-of-source-files.html#pragma) are common instructions for compilers about how to treat the source code (e.g., pragma once).

## Compile smart contract

* Switch to the **Compiler** tab
* Select compiler version **0.8.15**
* Now, compile `HelloWorld.sol`
* After successful compilation, it will show a green tick mark on the **Compiler** tab button

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

## Configure KCC Testnet on Metamask

{% content-ref url="/pages/qvwsNu1SF1zOMx8AOGPh" %}
[Network Configuration](/individuals/network-configuration.md)
{% endcontent-ref %}

## Deploy Smart Contract to KCC Testnet

In both Testnet and Mainnet, you do the below to deploy your smart contract using Remix.

* Navigate to the **Deployment tab**
* Select **Injected Provider** Metamask in the **Environment** dropdown, and your contract

![](/files/dtw0GNxnuNHuqArfmawY)

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

* Accept the Connect request received in MetaMask. You can also manually launch MetaMask if the popup doesn't open by default
* In MetaMask, once a transaction is deployed, you will receive another MetaMask pop-up that requires you to confirm the transaction. You just need to confirm the transaction

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

**Congratulations! You have successfully deployed the** [`HelloWorld`](https://scan-testnet.kcc.network/tx/0xfac405bc36a1e4230b5e6e7616877e48c81ee8d73b95a6d54d8aa7c9aa80b90f) **Smart Contract** to the **KuCoin Community Chain Testnet**. You can start interacting with your Smart Contract. Check the deployment status at <https://scan-testnet.kcc.network/>


---

# 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.kcc.io/developers/deploy-smart-contract/using-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.
