# Remix에서 개발하기

Remix는 웹 브라우저 환경에서 실행되는 이더리움과 같은 EVM(Ethereum Virtual Machine) 기반 블록체인을 위한 스마트 컨트랙트를 개발, 배포, 관리할 수 있게 도와주는 통합 개발환경(Integrated Development Environment) 입니다.

<figure><img src="https://content.gitbook.com/content/iXnTk8WgxaTaNidAuUYQ/blobs/iCHhJgmCaKGJH4ocNCDb/image.png" alt=""><figcaption><p>Remix IDE 초기 화면</p></figcaption></figure>

Remix의 사용법을 익히기 위해 간단한 스마트 컨트랙트를 작성하고 배포해 보도록 하겠습니다.&#x20;

작성할 스마트 컨트랙트는 배포 시 greeting 메시지를 설정하고 이를 greet() 함수를 통해 조회하고 setGreeting() 함수를 통해 greeting 메시지 변경하는 솔리디티 코드입니다.

<pre data-line-numbers><code><strong>//SPDX-License-Identifier: Unlicense
</strong>pragma solidity ^0.8.0;

contract Greeter {
    string private greeting;

    constructor(string memory _greeting) {
        greeting = _greeting;
    }

    function greet() public view returns (string memory) {
        return greeting;
    }

    function setGreeting(string memory _greeting) public {
        greeting = _greeting;
    }
}
</code></pre>

Remix IDE를 방문하면 미리 생성되어 있는 컨트랙트들이 있습니다. \
이 컨트랙트들을 선택하여 지우고 새로 Greeter.sol을 만든 후 위 코드를 입력합니다.

<figure><img src="https://content.gitbook.com/content/iXnTk8WgxaTaNidAuUYQ/blobs/1FnZgpBXBxM7ufZfKLk6/image.png" alt=""><figcaption><p>Greeter.sol</p></figcaption></figure>

Solidity Compiler 텝을 선택한 후 'Compile Greeter.sol' 버튼을 눌러 작성한 스마트 컨트랙트를 컴파일합니다. Advanced Configurations를 선택하여 Enable Optimization 등 추가 기능을 설정할 수 있습니다.

<figure><img src="https://content.gitbook.com/content/iXnTk8WgxaTaNidAuUYQ/blobs/dRyCHxJxTEPURetwxuHX/image.png" alt=""><figcaption><p>Compile Greeter.sol</p></figcaption></figure>

MetaMask를 통해 WEMIX3.0 테스트넷으로 스마트 컨트랙트를 배포하기 위해서는 웹 브라우저에 설치된 MetaMask Plug-in에서 WEMIX3.0 테스트넷을 추가하고 사용하고자 하는 계정을 선택한 후에 'DEPLOY & RUN TRANSACTION' 탭의 ENVIRONMENT에서 'Injected Provider - Metamask'를 선택합니다.&#x20;

만약, MetaMask가 설치 되어 있지 않다면 아래 'Use MetaMask' 링크를 통해 설치 및 설정을 할 수 있습니다. 계정이 맞게 설정 되었는지 확인하였다면 CONTRACT에서 맞는 sol 파일을 선택한 후 'Deploy' 버튼 옆에 초기 greeting 문자열을 입력한 후 버튼을 눌러 배포를 실행합니다. MetaMask가 실행되면 확인을 눌러 트랜잭션을 실행해주면 배포가 진행됩니다.

MetaMask 사용시, WEMIX는 이더리움과는 다른 Fee 정책을 가지고 있으므로 반드시 'Market' 을 선택하여 Gas fee를 변경해야 합니다.&#x20;

자세한 사항은 아래 링크 참고하세요.

{% content-ref url="../../quick-start/account/use-metamask" %}
[use-metamask](https://docs.wemix.com/ko/quick-start/account/use-metamask)
{% endcontent-ref %}

<figure><img src="https://content.gitbook.com/content/iXnTk8WgxaTaNidAuUYQ/blobs/T5DQBzyn9OQ67oBl9Kiv/image.png" alt=""><figcaption></figcaption></figure>

스마트 컨트랙트가 배포되면 'Deployed Contract' 아래 배포된 컨트랙트 이름과 주소 호출 가능한 함수들이 보이게 되고, 읽기 함수의 경우 청색으로 쓰기 함수의 경우 주황색으로 보입니다.&#x20;

'greet' 버튼을 누르면 배포할 때 입력한 문자열을 확인할 수 있고 읽기 함수의 경우 바로 실행이 되지만, 쓰기가 필요한 함수는 MetaMask를 이용하여 트랜잭션을 실행해야 합니다.

<figure><img src="https://content.gitbook.com/content/iXnTk8WgxaTaNidAuUYQ/blobs/4WbNFWbFbmBiPrOb1o36/image.png" alt=""><figcaption></figcaption></figure>
