Tech Lab2 min read
Remix IDE로 배우는 Solidity 컴파일·배포 입문
Remix IDE로 간편하게 스마트 컨트랙트를 작성·컴파일·배포하는 방법을 초보자 관점에서 설명합니다. 실습 코드·절차·문제 해결 팁까지 담았습니다.
#Remix#IDE#Solidity#튜토리얼#이더리움#스마트컨트랙트#Hardhat#비교#배포#디버깅#가이드
독자는 이 글을 통해 웹 기반 Remix IDE만으로 컨트랙트를 작성·컴파일·배포·테스트하는 전 과정을 즉시 실습하며, 로컬 개발환경 없이도 학습 속도를 높이는 방법을 얻게 됩니다.

왜 Remix 인가
- 설치 없이 브라우저에서 바로 사용 가능해 진입 장벽이 낮습니다.
- 컴파일러·배포·디버깅이 일체화되어 학습·프로토타이핑에 최적입니다.
- 플러그인 매니저로 기초부터 고급 기능까지 확장 가능합니다.
- VSCode+Hardhat 대비 설정 부담이 적어 개념 학습에 집중할 수 있습니다.
데스크톱 IDE와 비교
| 항목 | Remix (웹) | VSCode + Hardhat |
|---|---|---|
| 준비 | 브라우저 즉시 시작 | Node/패키지/설정 필요 |
| 배포 | VM/지갑 연동 간편 | 스크립트·네트워크 설정 |
| 디버깅 | UI 기반 스텝/로그 | 콘솔·플러그인 중심 |
| 학습용 | 최적 | 중급 이상 권장 |
주의: 실서비스 전 배포는 테스트넷/메인넷 지갑 보안과 비용(가스)을 반드시 검토하세요.
시작 준비
- 주소: remix.ethereum.org (브라우저 최신 버전 권장)
- 좌측 패널: 파일 탐색기, Solidity Compiler, Deploy & Run Transactions, 플러그인 매니저
- 실행 환경: 학습은
Remix VM (Cancun)선택을 권장합니다. 실제 네트워크는 지갑(Injected Provider) 연동이 필요합니다.
팁: 인터페이스가 낯설다면 좌측 아이콘에 마우스를 올려 기능 설명을 먼저 훑어보세요.
파일 생성과 코드
contracts폴더에SimpleStorage.sol파일을 생성합니다.- 아래 코드를 붙여넣고 저장(
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)는 트랜잭션이 필요하며 가스를 소모합니다.
컴파일과 아티팩트
- 좌측의 SOLIDITY COMPILER 탭을 열고 버전이 소스와 호환되는지 확인합니다.
- Compile SimpleStorage.sol을 클릭하거나 저장 단축키로 컴파일합니다.
- 성공 시 CONTRACT 드롭다운에
SimpleStorage (contracts/SimpleStorage.sol)이 표시됩니다. - Compilation Details에서 메타데이터, ABI, 바이트코드를 확인할 수 있습니다.
// 예시 ABI (요약)
[
{"name":"set","type":"function","inputs":[{"name":"x","type":"uint256"}]},
{"name":"storedData","type":"function","inputs":[],"outputs":[{"type":"uint256"}]}
]
팁: ABI는 프런트엔드/스크립트에서 컨트랙트와 상호작용할 때 필요합니다. 안전한 버전관리(예:
artifacts/)를 습관화하세요.
배포와 상호작용
- DEPLOY & RUN TRANSACTIONS 탭으로 이동합니다.
ENVIRONMENT를 Remix VM (Cancun) 으로,CONTRACT를 SimpleStorage로 설정합니다.- Deploy를 클릭하면 터미널에 트랜잭션 로그가 표시됩니다.
- DEPLOYED CONTRACTS 섹션에서 생성된 인스턴스의 버튼으로 함수를 실행합니다.
실습
set입력창에3을 넣고 주황색 set 버튼을 클릭합니다. 터미널의decoded input에서 값이 기록된 것을 확인합니다.- 파란색 storedData 버튼을 클릭해 반환값을 확인합니다.
3이 표시되면 상태가 정상적으로 업데이트된 것입니다.
// decoded input (예)
{ "uint256 x": "3" }
// decoded output (예)
{ "0": "uint256: 3" }
주의: 상태 변경 함수는 가스를 소비합니다. VM이 아닌 실제 네트워크에서는 수수료와 지갑 서명이 필요합니다.
