Tech Lab2 min read

Remix IDE로 배우는 Solidity 컴파일·배포 입문

Remix IDE로 간편하게 스마트 컨트랙트를 작성·컴파일·배포하는 방법을 초보자 관점에서 설명합니다. 실습 코드·절차·문제 해결 팁까지 담았습니다.

#Remix#IDE#Solidity#튜토리얼#이더리움#스마트컨트랙트#Hardhat#비교#배포#디버깅#가이드

독자는 이 글을 통해 웹 기반 Remix IDE만으로 컨트랙트를 작성·컴파일·배포·테스트하는 전 과정을 즉시 실습하며, 로컬 개발환경 없이도 학습 속도를 높이는 방법을 얻게 됩니다.

remix

왜 Remix 인가

  • 설치 없이 브라우저에서 바로 사용 가능해 진입 장벽이 낮습니다.
  • 컴파일러·배포·디버깅이 일체화되어 학습·프로토타이핑에 최적입니다.
  • 플러그인 매니저로 기초부터 고급 기능까지 확장 가능합니다.
  • VSCode+Hardhat 대비 설정 부담이 적어 개념 학습에 집중할 수 있습니다.

데스크톱 IDE와 비교

항목Remix (웹)VSCode + Hardhat
준비브라우저 즉시 시작Node/패키지/설정 필요
배포VM/지갑 연동 간편스크립트·네트워크 설정
디버깅UI 기반 스텝/로그콘솔·플러그인 중심
학습용최적중급 이상 권장

주의: 실서비스 전 배포는 테스트넷/메인넷 지갑 보안과 비용(가스)을 반드시 검토하세요.

시작 준비

  • 주소: remix.ethereum.org (브라우저 최신 버전 권장)
  • 좌측 패널: 파일 탐색기, Solidity Compiler, Deploy & Run Transactions, 플러그인 매니저
  • 실행 환경: 학습은 Remix VM (Cancun) 선택을 권장합니다. 실제 네트워크는 지갑(Injected Provider) 연동이 필요합니다.

팁: 인터페이스가 낯설다면 좌측 아이콘에 마우스를 올려 기능 설명을 먼저 훑어보세요.

파일 생성과 코드

  1. contracts 폴더에 SimpleStorage.sol 파일을 생성합니다.
  2. 아래 코드를 붙여넣고 저장(Cmd/Ctrl + S)합니다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 public storedData; // public으로 자동 getter

    function set(uint256 x) public {
        storedData = x;
    }
}

핵심 포인트

  • public 상태변수는 자동으로 storedData() getter가 생성됩니다.
  • 상태 변경 함수(set)는 트랜잭션이 필요하며 가스를 소모합니다.

컴파일과 아티팩트

  1. 좌측의 SOLIDITY COMPILER 탭을 열고 버전이 소스와 호환되는지 확인합니다.
  2. Compile SimpleStorage.sol을 클릭하거나 저장 단축키로 컴파일합니다.
  3. 성공 시 CONTRACT 드롭다운에 SimpleStorage (contracts/SimpleStorage.sol)이 표시됩니다.
  4. Compilation Details에서 메타데이터, ABI, 바이트코드를 확인할 수 있습니다.
// 예시 ABI (요약)
[
  {"name":"set","type":"function","inputs":[{"name":"x","type":"uint256"}]},
  {"name":"storedData","type":"function","inputs":[],"outputs":[{"type":"uint256"}]}
]

팁: ABI는 프런트엔드/스크립트에서 컨트랙트와 상호작용할 때 필요합니다. 안전한 버전관리(예: artifacts/)를 습관화하세요.

배포와 상호작용

  1. DEPLOY & RUN TRANSACTIONS 탭으로 이동합니다.
  2. ENVIRONMENTRemix VM (Cancun) 으로, CONTRACTSimpleStorage로 설정합니다.
  3. Deploy를 클릭하면 터미널에 트랜잭션 로그가 표시됩니다.
  4. DEPLOYED CONTRACTS 섹션에서 생성된 인스턴스의 버튼으로 함수를 실행합니다.

실습

  • set 입력창에 3을 넣고 주황색 set 버튼을 클릭합니다. 터미널의 decoded input에서 값이 기록된 것을 확인합니다.
  • 파란색 storedData 버튼을 클릭해 반환값을 확인합니다. 3이 표시되면 상태가 정상적으로 업데이트된 것입니다.
// decoded input (예)
{ "uint256 x": "3" }

// decoded output (예)
{ "0": "uint256: 3" }

주의: 상태 변경 함수는 가스를 소비합니다. VM이 아닌 실제 네트워크에서는 수수료와 지갑 서명이 필요합니다.

set store

참고 링크

다음으로 읽어볼 글