솔리디티(Solidity)란?
개요스마트 컨트랙트를 구현하기 위해 설계된 객체지향 고급 프로그래밍 언어입니다. EVM(이더리움 가상 머신)에서 실행되며, C++·Python·JavaScript의 특징을 결합했습니다.
| 특징 | 설명 |
|---|---|
| 정적 타입 | 변수 타입을 컴파일 시 결정 — 런타임 오류 최소화 |
| 객체지향 | 상속, 인터페이스, 라이브러리 지원 |
| EVM 대상 | 이더리움 가상 머신에서 바이트코드로 실행 |
| 보안 중심 | require/revert/assert + ReentrancyGuard 내장 패턴 |
개발 환경
도구| 도구 | 역할 | URL |
|---|---|---|
| Remix IDE | 브라우저 기반 편집·컴파일·배포·디버거 통합 | remix.ethereum.org |
| Ganache | 로컬 가상 이더리움 네트워크 (100 ETH 테스트 계정) | trufflesuite.com/ganache |
| MetaMask | 브라우저 확장 지갑 (개인키 관리·트랜잭션 서명) | metamask.io |
| OpenZeppelin | 감사된 보안 라이브러리 (ReentrancyGuard 등) | openzeppelin.com |
💡
Remix IDE는 설치 없이 브라우저에서 바로 사용 가능합니다. 100 ETH 테스트 계정을 기본 제공하므로 별도 설정 없이 실습할 수 있습니다.
배포 흐름
5단계1
Remix IDE에서 .sol 파일 작성
컨트랙트 코드 작성
2
컴파일 → ABI와 바이트코드 생성
Solidity Compiler 탭 사용
3
MetaMask에서 개인키로 트랜잭션 서명
Injected Provider 선택
4
Ganache(가상 네트워크)에 배포
로컬 테스트용
5
함수 호출 및 동작 검증
Remix 콘솔에서 확인
Hello World
첫 실습가장 기본적인 스마트 컨트랙트입니다. Remix IDE에서 직접 배포해보세요.
HelloWorld.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract HelloWorld {
string public message;
constructor() {
message = "Hello, Blockchain!";
}
function setMessage(string memory _msg) public {
message = _msg;
}
function getMessage() public view returns (string memory) {
return message;
}
}ℹ️
constructor()는 컨트랙트 배포 시 딱 한 번 실행됩니다. view 함수는 상태를 변경하지 않으므로 가스비가 없습니다.