핵심 인사이트 (3줄 요약)
- 본질: 솔리디티(Solidity)는 이더리움에서 스마트 컨트랙트를 작성하기 위한 정적 타입(Statically Typed) 언어다.
- 가치: 상태 변수, 매핑(mapping), 주소(address), 이벤트(event) 같은 블록체인 전용 개념을 자연스럽게 다룰 수 있다.
- 판단 포인트: EVM (Ethereum Virtual Machine), Gas, 접근 제어, 보안 패턴을 함께 이해해야 실무 코드가 된다.
Ⅰ. 개요 및 필요성
솔리디티는 블록체인 위에서 자동 실행되는 프로그램을 만들기 위해 고안되었다. 코드가 배포되면 수정이 어렵기 때문에, 언어 자체가 안전성과 명확성을 강하게 요구한다.
이더리움은 단순한 송금 시스템이 아니라 범용 실행 플랫폼이므로, 복잡한 비즈니스 로직도 컨트랙트로 구현할 수 있다.
- 📢 섹션 요약 비유: 솔리디티는 블록체인 위에 올리는 자동판매기 설명서다.
Ⅱ. 문법과 핵심 특징
솔리디티는 contract를 중심으로 코드를 작성한다. 상태 변수와 함수, 이벤트가 하나의 컨트랙트 안에 들어간다.
- 정적 타입: 자료형을 명확히 선언해야 한다.
- 주소 타입: 지갑 주소를 안전하게 다룬다.
- 매핑(mapping): 키-값 저장 구조를 제공한다.
- 전역 변수:
msg.sender,msg.value같은 실행 문맥 정보를 사용할 수 있다.
contract
├─ state variables
├─ functions
├─ events
└─ modifiers
- 📢 섹션 요약 비유: 부엌에서 그릇, 재료, 조리법을 미리 라벨링해 두는 것과 같다.
Ⅲ. 컴파일과 가스 제약
솔리디티 코드는 그대로 실행되지 않고 EVM (Ethereum Virtual Machine)이 이해하는 바이트코드로 컴파일된다.
블록체인 실행은 공짜가 아니다. 모든 연산은 Gas를 소비하므로, 저장소 사용과 반복 계산을 줄이는 것이 중요하다.
- 📢 섹션 요약 비유: 전기를 쓰는 기계처럼, 움직일수록 동전이 빠져나간다.
Ⅳ. 보안과 개발 패턴
솔리디티는 강력하지만 취약점도 많다. 그래서 다음 패턴을 자주 쓴다.
require/revert/assert로 조건을 검증한다.- 접근 제어로 관리자 권한을 묶는다.
- Checks-Effects-Interactions 순서를 지켜 재진입을 막는다.
- Solidity 0.8 이후의 기본 산술 검사도 이해한다.
가장 위험한 실수는 외부 호출과 상태 변경 순서를 잘못 두는 것이다.
- 📢 섹션 요약 비유: 문을 열기 전에 자물쇠부터 거는 습관이 보안을 만든다.
Ⅴ. 실무 적용과 배포 흐름
실무에서는 단순히 문법을 아는 것만으로는 부족하다. 테스트, 배포, 업그레이드, 감사까지 생각해야 한다.
- 단위 테스트와 시뮬레이션을 먼저 돌린다.
- 배포 후에는 롤백 가능성을 검토한다.
- 업그레이드 가능한 프록시 패턴도 이해한다.
- 가스 비용과 상태 저장 비용을 함께 본다.
솔리디티는 "블록체인 전용 JavaScript"가 아니라, 돈을 직접 다루는 안전 규칙이 훨씬 더 엄격한 언어다.
- 📢 섹션 요약 비유: 돈이 들어 있는 장난감 상자는 한 번 잠그면 다시 열기 어렵기 때문에, 처음 설계가 제일 중요하다.
관련 개념 맵
Solidity
↓
EVM 바이트코드
↓
Gas / 상태 저장
↓
스마트 컨트랙트 배포
관련 키워드 및 발전 흐름도
- 튜링 완전 언어 → 복잡한 블록체인 로직 표현
- contract 중심 구조 → 상태와 동작 통합
- EVM 바이트코드 → 이더리움 실행 환경 표준화
- 가스와 보안 패턴 → 비용과 안전성 동시 관리
- 업그레이드 패턴과 감사 → 실무 배포의 핵심
어린이를 위한 3줄 비유 설명
솔리디티는 블록체인에서 돌아가는 규칙 책이에요.
책에 적힌 대로만 움직이기 때문에, 처음부터 잘 써야 해요.
돈이 걸려 있어서 장난처럼 쓰면 안 돼요.