---
title: "솔리디티"
title_en: "Solidity"
type: 용어
url: https://wiki.tokenpost.kr/w/solidity
canonical: https://wiki.tokenpost.kr/w/solidity
language: ko
publisher: "토큰포스트"
updated: 2026-07-31T00:38:30.021+00:00
created: 2026-07-28T22:41:34.550672+00:00
same_as: ["https://ko.wikipedia.org/wiki/%EC%86%94%EB%A6%AC%EB%94%94%ED%8B%B0", "https://en.wikipedia.org/wiki/Solidity"]
status: draft
---

# 솔리디티
> Solidity

> **인용 전에 확인해 주세요.** 이 문서는 자동으로 만든 초안이며 사람의
> 검수를 거치지 않았습니다. 사실 관계는 아래 각주의 원문으로 확인해 주세요.

**분류**: 용어

솔리디티(Solidity)는 블록체인 위에서 실행되는 스마트 컨트랙트를 작성하기 위해 만들어진 정적 타입의 고급 프로그래밍 언어로, 이더리움을 비롯한 [이더리움 가상머신](https://wiki.tokenpost.kr/w/evm) 계열 블록체인에서 가장 널리 쓰인다.

## 1. 개요

**솔리디티(Solidity)**는 블록체인 위에서 실행되는 프로그램인 스마트 컨트랙트를 작성하기 위해 만들어진 고급 프로그래밍 언어이다. 2014년 [이더리움](https://wiki.tokenpost.kr/w/ethereum) 개발 진영에서 제안되었으며, 개빈 우드(Gavin Wood) 등이 초기 설계를 주도하였다. 오늘날 스마트 컨트랙트 작성에 가장 널리 쓰이는 언어로, 이더리움뿐 아니라 [이더리움 가상머신(EVM)](https://wiki.tokenpost.kr/w/evm)을 채택한 여러 블록체인에서도 사용된다.

솔리디티는 정적 타입 언어로, C++·파이썬·자바스크립트의 문법에서 영향을 받았다. 개발자가 작성한 소스 코드는 컴파일러(solc)를 거쳐 EVM이 이해하는 바이트코드로 변환되어 블록체인에 배포된다. EVM은 [튜링 완전성](https://wiki.tokenpost.kr/w/turing-complete)을 갖추고 있어, 솔리디티로는 단순한 값 이전을 넘어 조건 분기·반복·상태 저장 등 복잡한 로직을 표현할 수 있다.

스마트 컨트랙트를 겨냥한 전용 언어라는 점에서 솔리디티는 범용 프로그래밍 언어와 성격이 다르다. 코드가 곧 자산을 다루는 규칙이 되고, 그 규칙은 배포된 뒤 네트워크 전체에서 동일하게 강제된다. 이 때문에 문법의 편의성만큼이나 실행의 결정성과 보안이 언어 설계의 중심에 놓인다.[^1]

## 2. 역사

솔리디티는 2014년 8월 개빈 우드에 의해 처음 제안되었다. 이후 크리스티안 라이트비스너(Christian Reitwiessner)가 이끄는 솔리디티팀을 중심으로 개발이 이어졌으며, 알렉스 베레그사시(Alex Beregszaszi), 리아나 후시캰(Liana Husikyan), 요이치 히라이(Yoichi Hirai) 등 이더리움 핵심 기여자들이 함께 참여하였다.

솔리디티는 EVM을 목표로 설계된 여러 언어 가운데 하나였다. 같은 시기에 Serpent, LLL, Mutan, 그리고 실험적 성격의 Viper(이후 Vyper로 이어짐) 등이 함께 존재했으나, 결과적으로 솔리디티가 이더리움의 사실상 표준 언어로 자리 잡았다. 초기 설계 단계에서 이미 복잡한 계층적 매핑을 담는 멤버 변수, 계약 상속, 그리고 함수 호출 규약을 표준화한 응용 이진 인터페이스(ABI) 같은 요소가 도입되어 다른 EVM 대상 언어와 차별화되었다.

## 3. 언어 설계와 문법

솔리디티는 기존 웹 개발자에게 친숙하도록 자바스크립트 계열(ECMAScript) 문법을 바탕으로 설계되었다. 다만 스크립트 언어와 달리 정적 타입 체계를 갖추어, 변수와 함수의 자료형을 컴파일 시점에 확정한다. 이는 배포 이후 되돌릴 수 없는 계약의 특성상 실행 전에 오류를 최대한 걸러내기 위한 선택이다.

- **정적 타입**: 정수·주소·불리언·바이트·매핑·구조체 등 자료형이 명시적으로 지정된다.
- **상속**: 계약은 다른 계약을 상속할 수 있으며, 다중 상속의 충돌은 C3 선형화 규칙으로 해소한다.
- **ABI**: 하나의 계약 안에서 여러 함수를 타입 안전하게 호출하도록 응용 이진 인터페이스가 정의된다.
- **NatSpec**: 함수의 동작을 사용자 관점에서 서술하는 자연어 명세(Natural Language Specification) 문서화 체계가 제안 단계부터 포함되었다.

## 4. 컴파일과 실행

솔리디티 소스 코드는 컴파일러 **solc**를 통해 EVM이 실행할 수 있는 바이트코드로 변환된다. 이 바이트코드가 블록체인에 배포되면 하나의 계약 주소를 얻고, 이후 그 주소로 들어오는 트랜잭션에 따라 코드가 실행된다.

EVM은 모든 노드가 동일한 입력에 대해 동일한 결과를 내도록 설계된 결정적 실행 환경이다. 따라서 솔리디티로 작성한 계약의 실행 결과는 네트워크 전체에서 똑같이 재현되며, 그 기록은 부인할 수 없고 합의된 규칙에 따라 강제된다. 개발자는 이 위에서 스스로 실행되는 비즈니스 로직을 계약에 담아 [디앱](https://wiki.tokenpost.kr/w/dapp)을 구현한다.

## 5. 계약의 구조

솔리디티 프로그램의 기본 단위는 `contract`이며, 이는 객체지향 언어의 클래스와 유사하게 상태 변수와 함수를 묶어 정의한다. 계약은 한 번 블록체인에 배포되면 코드를 임의로 수정할 수 없고(불변성), 실행 결과는 모든 노드에서 동일하게 재현된다.

상태 변수는 블록체인에 영구적으로 저장되어 계약의 현재 상태를 보관하고, 함수는 그 상태를 읽거나 변경한다. 함수에는 접근 범위와 상태 변경 여부를 나타내는 지정자를 붙일 수 있으며, 계약끼리 서로를 호출해 기능을 조합할 수도 있다. 이렇게 배포된 계약이 모여 하나의 애플리케이션을 이룬다.

## 6. 가스와 실행 제약

스마트 컨트랙트 실행에는 [가스(gas)](https://wiki.tokenpost.kr/w/gas)라는 수수료가 소모되며, 무한 루프나 과도한 연산은 가스 한도에 걸려 중단된다. 이는 네트워크 자원을 보호하는 장치이지만, 개발자가 코드를 효율적으로 작성해야 하는 제약이기도 하다.

연산 하나하나에 비용이 매겨지므로, 솔리디티 개발에서는 저장 공간 사용을 줄이고 반복을 절제하는 등 가스 최적화가 중요한 과제로 다뤄진다. 튜링 완전한 언어이면서도 실행이 무한정 이어지지 않도록 경제적 상한을 두었다는 점이, 일반적인 범용 언어와 구별되는 솔리디티만의 실행 모델이다.

## 7. 보안과 검증

계약이 자금을 직접 다루는 특성상, 재진입(reentrancy)·정수 오버플로 등 보안 취약점이 실제 자산 탈취로 이어질 수 있다. 이 때문에 솔리디티 개발에서는 코드 감사와 테스트가 매우 중요하게 다뤄진다.

특히 재진입은 계약이 외부로 자금을 보내는 도중 상대 계약이 다시 원래 함수를 호출해 잔액이 갱신되기 전에 중복 인출을 노리는 공격으로, 초기 솔리디티 계약에서 반복적으로 문제가 되었다. 이에 대응해 검사-효과-상호작용 패턴 같은 코딩 관례, 전문 감사, 그리고 코드가 명세대로 동작함을 수학적으로 증명하려는 [정형 검증](https://wiki.tokenpost.kr/w/formal-verification) 등이 함께 활용된다.

## 8. 개발 도구

솔리디티 계약은 여러 개발 환경에서 작성·컴파일·배포할 수 있다.

- **Remix**: 별도 설치 없이 브라우저에서 계약을 작성하고 테스트할 수 있는 공식 통합 개발 환경(IDE).
- **에디터 확장**: 마이크로소프트 비주얼 스튜디오 등 일반 개발 도구에서도 솔리디티 편집을 지원한다.
- **테스트 흐름**: 개발자는 완성한 계약을 [테스트넷](https://wiki.tokenpost.kr/w/testnet)에서 검증한 뒤 실제 네트워크로 옮기는 절차를 따른다.

이러한 도구들은 컴파일러 solc를 중심으로 배포 전 검증과 디버깅을 돕는다.

## 9. 활용

솔리디티로 작성된 스마트 컨트랙트는 블록체인 생태계의 핵심 구성 요소로 쓰인다. 대표적으로 [ERC-20](https://wiki.tokenpost.kr/w/erc20) 같은 토큰 표준, [ERC-721](https://wiki.tokenpost.kr/w/erc-721) 기반의 대체 불가능 토큰, 담보 기반으로 발행되는 [스테이블코인](https://wiki.tokenpost.kr/w/stablecoin), 중개자 없이 자산을 교환하는 [탈중앙화 거래소](https://wiki.tokenpost.kr/w/dex), 그리고 대출·예치 등 [탈중앙화 금융](https://wiki.tokenpost.kr/w/defi) 서비스가 모두 솔리디티 계약으로 구현된다.

또한 조직의 의사결정 규칙을 코드로 옮긴 [탈중앙화 자율 조직](https://wiki.tokenpost.kr/w/dao)도 솔리디티 계약으로 운영된다. 개발자는 완성한 계약을 곧바로 실제 네트워크인 [메인넷](https://wiki.tokenpost.kr/w/mainnet)에 올리기 전에 테스트넷에서 실제 자산 손실 없이 동작을 검증한다.

## 10. 지원 플랫폼

솔리디티는 이더리움에서 출발했지만, EVM을 채택하거나 호환하는 여러 블록체인에서 함께 쓰인다. 이더리움 외에도 텐더민트 계열의 ErisDB, 비트코인 위에서 동작하는 Counterparty, 클레이튼(Klaytn), 그리고 [헤데라](https://wiki.tokenpost.kr/w/hedera-hashgraph) 등이 솔리디티로 작성한 계약을 지원한다. Monax나 하이퍼레저 같은 프라이빗 블록체인 환경에서도 활용된 사례가 있으며, 국제 금융 통신망 SWIFT가 개념 증명(PoC)에 솔리디티를 사용한 바 있다.

최근에는 이더리움의 처리량과 수수료 문제를 보완하는 [레이어 2](https://wiki.tokenpost.kr/w/layer-2) 네트워크들도 대부분 EVM과 호환되어, 동일한 솔리디티 코드를 큰 수정 없이 배포할 수 있다. 이처럼 넓은 호환성 덕분에 솔리디티는 개별 체인을 넘어 EVM 생태계 전반의 공통 언어로 기능한다.

## 11. 논란

2016년 발생한 더 다오(The DAO) 해킹은 솔리디티와 관련해 자주 언급되는 사건이다. 코넬 대학교의 한 연구자는 이 사고에 언어 자체의 설계도 일부 책임이 있다고 지적하였다. 그는 EVM은 기술적으로 의도대로 동작했으나, 솔리디티가 재진입과 같은 보안 허점을 드러냈으며 이는 커뮤니티만이 아니라 언어 설계자의 문제이기도 하다는 취지로 비판하였다.

이 사건은 스마트 컨트랙트에서 '코드가 곧 규칙'이라는 원칙과, 개발자가 미처 예상하지 못한 실행 경로가 실제 자산 손실로 이어질 수 있다는 위험을 함께 드러냈다. 이후 솔리디티 개발 문화에서 보안 패턴·감사·검증의 비중이 크게 높아지는 계기가 되었다.

## 12. 과제와 전망

솔리디티는 스마트 컨트랙트 언어의 사실상 표준으로 자리 잡았지만, 배포 후 수정이 불가능한 구조와 자금을 직접 다루는 특성 때문에 안전한 작성이 늘 핵심 과제로 남는다. 재진입·오버플로 같은 고전적 취약점 외에도, 복잡해지는 [디파이](https://wiki.tokenpost.kr/w/defi) 로직 속에서 예상 밖의 상호작용을 어떻게 방지할지가 지속적인 숙제이다.

한편으로는 정형 검증 도구의 발전, 안전한 코딩 관례의 정착, 그리고 EVM 호환 [레이어 2](https://wiki.tokenpost.kr/w/layer-2)의 확산이 솔리디티의 활용 범위를 넓히고 있다. 언어의 편의성과 실행의 안전성 사이에서 균형을 어떻게 잡아가느냐가 앞으로 솔리디티 발전의 방향을 좌우할 것으로 보인다.

## 13. 연표

- **2014** (설립) 개빈 우드가 솔리디티를 처음 제안
- **2016** (사건) 더 다오(The DAO) 해킹으로 재진입 취약점과 언어 설계 책임 논쟁이 불거짐

## 각주

[^1]: [위키백과 — 솔리디티](https://ko.wikipedia.org/wiki/%EC%86%94%EB%A6%AC%EB%94%94%ED%8B%B0)

---

같은 개체: [위키백과(한국어)](https://ko.wikipedia.org/wiki/%EC%86%94%EB%A6%AC%EB%94%94%ED%8B%B0) · [Wikipedia(EN)](https://en.wikipedia.org/wiki/Solidity)

원문: https://wiki.tokenpost.kr/w/solidity
최종 수정: 2026-07-31T00:38:30.021+00:00
발행: 토큰포스트 위키. 인용할 때 문서 제목과 원문 주소를 함께 밝혀 주세요.