솔리디티란 무엇인가요? 스마트 계약 프로그래밍 언어입니다.

솔리디티란 무엇인가요? 스마트 계약 프로그래밍 언어입니다.

단 한 줄의 부주의한 솔리디티 코드가 공격자에게 360만 ETH를 넘겨준 적이 있습니다. 코드는 지시받은 대로 정확히 작동했습니다. 바로 이 점이 불안한 부분입니다. 솔리디티는 자금을 이동시킵니다. 자금의 출처는 대개 눈에 띄게 드러나 있습니다. 그리고 일단 계약이 실행되면, 버그를 수정하는 패치는 불가능합니다. 버그는 그대로 남아 있고, 자금은 노출된 상태로 유지되며, 전 세계 사람들이 이 모든 것을 볼 수 있습니다. 솔리디티는 이더리움과 그 외 모든 EVM 블록체인에서 스마트 계약을 작성하는 데 가장 널리 사용되는 프로그래밍 언어입니다. 전문 용어를 제외하면, 대부분의 DeFi와 NFT는 솔리디티로 구현되어 있습니다. 강력하지만, 동시에 용서가 없습니다. 솔리디티란 무엇이며, 코드가 실제로 어떻게 작동하는지, 첫 번째 계약은 어떤 모습인지, 그리고 보안이 왜 최우선인지에 대해 자세히 살펴보겠습니다.

프로그래밍 언어로서 솔리디티란 무엇인가?

모든 가이드에서 똑같이 말합니다. 솔리디티는 스마트 컨트랙트를 위한 고급 언어라고요. 좋습니다. 하지만 그 말만으로는 별로 도움이 되지 않습니다. 도대체 어떤 언어일까요? 정적 타입 언어이고, 객체 지향 언어이며, 중괄호와 세미콜론, 자바스크립트, C++, 파이썬에서 차용한 구문을 사용합니다. 만약 이러한 언어로 코드를 작성해 본 경험이 있다면, `.sol` 파일은 10분 만에 익숙해질 것입니다.

개빈 우드는 크리스티안 라이트비스너를 포함한 소규모 이더리움 팀의 도움을 받아 2014년에 솔리디티를 구상했습니다. 목표는 간단했습니다. 사람들이 퍼블릭 블록체인에서 스마트 계약을 작성할 수 있도록 하는 것이었습니다. 솔리디티의 핵심 단위는 '계약'입니다. 계약은 블록체인 상에 존재하는 '클래스'와 같다고 생각하면 됩니다. 상태를 저장하고, 함수를 노출하며, 다른 클래스를 상속받습니다. 핵심은 계약이 실행되는 방식입니다. 바이트코드로 컴파일하면 동일한 계약이 분산 네트워크의 모든 노드에서 동일하게 실행되며, 각 노드는 서로를 검증합니다. 바로 이 단 하나의 요구 사항 때문에 솔리디티는 다소 제한적인 느낌을 줍니다.

견고성을 한눈에 보기
최초 공개 2014
수석 디자이너 개빈 우드 (이더리움)
어형 변화표 객체지향적, 계약지향적
타자 공전
컴파일 결과 EVM 바이트코드
최신 컴파일러 버전 0.8.35 (2026년 4월)
파일 확장자 .솔

솔리디티 작동 방식: 코드부터 EVM까지

솔리디티의 흥미로운 점은 구문이 아니라 파이프라인입니다. 읽기 쉬운 코드는 수천 대의 머신이 동일한 방식으로 실행하도록 설계됩니다. 결정론이 핵심입니다. 두 노드가 동일한 컨트랙트를 실행했는데 서로 다른 결과를 얻었다면, 네트워크는 누구의 잔액도 확정할 수 없습니다. 이러한 단 하나의 요구 사항이 솔리디티의 특이한 제약 조건들을 설명해 줍니다. 예를 들어, 난수를 가져오거나 실행 중에 외부 웹 API를 호출할 수 없습니다. 모든 것은 체인 자체에서 재현 가능해야 합니다.

컴파일러와 바이트코드

`.sol` 파일을 작성하면, 이 파일은 사람이 읽기 쉬운 고수준 코드로 구성됩니다. 솔리디티 컴파일러인 `solc`는 이 파일을 EVM 바이트코드로 변환하는데, 이 바이트코드는 저수준 연산들의 긴 문자열과 계약의 함수 목록을 담은 ABI(애플리케이션 인터페이스)로 이루어져 있습니다. 이 바이트코드가 블록체인에 실제로 전송되는 코드입니다. 아무도 이 코드를 직접 읽지 않습니다. 바이트코드는 머신 타겟을 나타내며, 마치 C 코드가 어셈블리 코드로 변환되는 방식과 같습니다.

EVM과 가스

이더리움 가상 머신(EVM)은 해당 바이트코드를 실행합니다. 모든 이더리움 노드에는 EVM이 있으며, EVM이 수행하는 모든 작업에는 가스(ETH로 지불되는 수수료)가 소모됩니다. 가스는 단순한 부가적인 요소가 아닙니다. 네트워크가 연산 비용을 책정하고 스스로를 보호하는 방식입니다. 무한 루프가 발생하더라도 체인이 멈추는 것이 아니라, 송신자의 가스를 모두 소모하고 응답을 되돌리는 것입니다. 우수한 솔리디티(Solidity) 아키텍처는 가스 소모를 최소화합니다.

ABI

ABI(애플리케이션 바이너리 인터페이스)는 배포된 컨트랙트와 통신하는 방법을 나타내는 JSON 맵입니다. MetaMask와 같은 지갑이나 프런트엔드 dApp은 ABI를 사용하여 함수 호출을 EVM이 예상하는 형식으로 인코딩한 다음, 반환된 응답을 디코딩합니다. ABI는 사용자가 보는 인터페이스와 블록체인 상의 주소에 있는 컨트랙트를 연결하는 다리 역할을 한다고 생각하면 됩니다.

고체란 무엇인가

첫 번째 솔리디티 스마트 계약 작성하기

이론은 이쯤 하고, 솔리디티를 가장 빨리 이해하는 방법은 간단한 계약 코드를 읽고 각 부분을 살펴보는 것입니다.

계약의 구성 요소

```견고성

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

계약 카운터 {

uint256 public count;

event Incremented(uint256 newCount);

function increment() public {

count += 1;

emit Incremented(count);

}

}

```

몇 가지 핵심 요소가 전체를 구성합니다. `pragma` 라인은 컴파일러 버전을 고정하여 호환되지 않는 릴리스가 코드를 자동으로 재컴파일하는 것을 방지합니다. `contract Counter`는 클래스를 여는 것처럼 컨트랙트를 엽니다. `count`는 온체인에 영구적으로 저장되는 상태 변수입니다. `increment()`는 누구나 호출할 수 있는 공개 함수입니다. `event Incremented`는 각 변경 사항을 기록하여 오프체인 애플리케이션이 반응할 수 있도록 합니다. 블록체인을 기반으로 하는 객체 지향 코드입니다.

당신이 실제로 사용하는 도구들

처음 시작할 때 아무것도 설치할 필요가 없습니다. Remix는 브라우저 기반 IDE로, 몇 번의 클릭만으로 Solidity 코드를 작성, 컴파일, 배포할 수 있어 Solidity 학습의 표준이 되었습니다. 실제 프로젝트는 로컬 프레임워크에서 진행됩니다. Hardhat과 Foundry는 컴파일, 테스트, 배포를 제대로 처리해 줍니다. 그리고 거의 모든 개발자가 위험한 코드를 처음부터 다시 작성하는 대신, 검증되고 재사용 가능한 토큰 및 접근 제어용 컨트랙트 라이브러리인 OpenZeppelin을 활용합니다.

코드에서 실제 주소까지

배포란 컴파일된 바이트코드를 트랜잭션으로 전송하는 것을 의미합니다. 먼저 무료 테스트넷에서 테스트해 보세요. 일반적으로 Sepolia 테스트넷이 많이 사용됩니다. MetaMask와 같은 지갑을 연결하세요. 계약이 제대로 작동할 때만 메인넷으로 푸시하세요. 배포에도 가스 비용이 발생하며, 실제 ETH로 지불해야 합니다. 그리고 가장 중요한 점은, 일단 배포되면 코드는 변경할 수 없다는 것입니다. 실행 중인 계약은 수정할 수 없습니다. 구문상의 특이점보다도 바로 이 사실 때문에 다음 섹션이 존재하는 것입니다.

어떤 블록체인이 솔리디티를 지원하나요?

솔리디티는 이미 오래전에 "이더리움의 언어"라는 칭호를 잃었습니다. 수많은 네트워크가 이더리움의 툴링을 재사용하기 위해 EVM을 채택하면서 솔리디티는 전체 체인 패밀리의 공통 언어가 되었습니다. ChainList는 2026에서 385개 이상의 EVM 호환 블록체인을 추적하고 있습니다. 폴리곤, BNB 체인, 아비트럼 , 베이스, 애벌랜치와 같은 주요 블록체인들이 모두 여기에 해당하며, 이들은 모두 `.sol` 파일이 컴파일되는 것과 동일한 바이트코드를 실행합니다.

이더리움은 여전히 중심축입니다. DeFiLlama 에 따르면 이더리움은 총 예치 자산(TVL)이 약 450억 달러에 달하며, 이는 전체 DeFi의 절반 이상입니다. 활동량 또한 꾸준히 증가하고 있는데, Token Terminal의 집계에 따르면 2025년 4분기에만 약 870만 건의 새로운 스마트 계약이 배포될 예정입니다. 개발자에게 있어 이러한 광범위한 영향력은 특정 블록체인에 종속된 언어 대신 Solidity를 선택해야 하는 진정한 이유입니다.

그렇다면 솔리디티로 무엇이 만들어질까요? 여러분이 들어본 거의 모든 종류의 탈중앙화 애플리케이션이 여기에 해당합니다. DeFi 대출 및 거래 프로토콜, 대부분의 토큰을 뒷받침하는 ERC-20 컨트랙트, NFT를 뒷받침하는 ERC-721 컨트랙트, DAO의 투표 규칙, 스테이블코인의 공급량 관리, 온체인 게임의 로직까지 모두 솔리디티로 구현됩니다. 어떤 프로젝트가 "이더리움 기반"이라고 말한다면, 거의 틀림없이 누군가 솔리디티로 코드를 작성하고 배포했을 것입니다.

솔리디티 스마트 계약 보안이 어려운 이유

솔리디티를 강력하게 만드는 특성은 동시에 버그를 발견했을 때 엄청난 비용을 초래하는 특성이기도 합니다. 코드는 돈과 직결되어 있고, 소스 코드는 공개되어 있는 경우가 많으며, 패치가 불가능합니다. 공격자는 여유롭게 계약 코드를 읽어볼 수 있고, 자금은 해당 주소에 바로 노출되어 있습니다. 따라서 솔리디티는 빠르게 개발하고 문제를 일으키는 데 적합한 언어가 아닙니다. "컴파일이 된다"와 "안전하다" 사이의 간극이 이렇게 큰 소프트웨어는 본 적이 없습니다.

재진입과 DAO 해킹

솔리디티의 전형적인 취약점은 재진입성입니다. 컨트랙트가 자체 내부 잔액을 업데이트하기 전에 외부 주소로 ETH를 전송하면, 수신 컨트랙트가 첫 번째 호출이 완료되기 전에 다시 인출을 요청하고, 또 다시 인출 요청을 반복하는 것입니다. 2016년 6월, 바로 이 결함 때문에 The DAO 에서 약 360만 ETH(당시 가치로 약 6천만 달러)가 유출되었습니다. 이 사건의 여파로 이더리움은 ETH와 이더리움 클래식으로 분리되었고, 이더리움 클래식은 현재까지도 거래되고 있습니다. 그런데 해결책은 어땠을까요? 어이없을 정도로 간단했습니다. 먼저 상태를 업데이트하고, 마지막에 송금하는 것입니다. 이 패턴에는 'checks-effects-interactions'라는 이름까지 붙어 있습니다.

정수 오버플로 및 SafeMath

Solidity 0.8 이전에는 연산 시 오버플로가 발생할 수 있었습니다. `uint256`의 최댓값에 1을 더하면 0으로 오버플로가 발생했는데, 공격자들은 이를 악용하여 2018년 뷰티체인(BEC) 사건처럼 터무니없는 토큰 잔액을 만들어냈습니다. 수년간 개발자들은 SafeMath라는 라이브러리를 사용하여 이 문제를 해결해 왔으며, 한때 이 라이브러리는 Solidity에서 가장 많이 임포트되는 파일 중 하나였습니다. 그러다가 0.8 버전부터는 오버플로 및 언더플로 검사 기능이 언어 자체에 내장되었습니다. 이제 가장 흔한 연산 버그는 기본적으로 해결되어 별도의 라이브러리 없이도 해결됩니다.

감사 및 감사 비용

실수는 되돌릴 수 없기 때문에 중요한 프로젝트는 검토 비용을 지불합니다. 오픈제플린(OpenZeppelin)의 검증을 거친 구성 요소를 기반으로 시스템을 구축한 후, 전문 업체에 전체 시스템 감사를 의뢰합니다. 셜록(Sherlock) 의 시장 데이터에 따르면, 전문 스마트 계약 감사 비용은 일반적으로 DeFi 프로토콜의 경우 2만 5천 달러에서 10만 달러 이상이며, 솔리디티(Solidity) 감사는 러스트(Rust) 감사보다 25~40% 저렴한 경향이 있는데, 이는 관련 전문가 풀이 더 크기 때문입니다. 훌륭한 업체는 예약이 금방 마감됩니다. 중간 규모의 프로토콜은 예약 자리를 확보하는 데 몇 주를 기다려야 하고, 보고서를 받는 데에도 몇 주를 더 기다려야 합니다. 이 모든 과정은 시간이 오래 걸리고, 선택 사항이 아닙니다.

취약성 무엇이 잘못되는가 유명한 사례 고치다
재진입 외부 호출이 상태 업데이트 전에 다시 시작됩니다. DAO, 2016 체크-효과-상호작용
정수 오버플로 산술 연산이 한계를 넘어 계속됩니다 뷰티체인(BEC), 2018 내장 검사 기능 (Solidity 0.8 이상)
접근 제어 누구나 권한이 필요한 함수를 호출할 수 있습니다. 다양한 `onlyOwner` / 역할 보호
확인되지 않은 외부 호출 호출 실패는 무시되고 로직은 계속 진행됩니다. 다양한 반환 값의 유효성을 검사합니다.

다행스러운 점은 이러한 피해 규모가 줄어들고 있다는 것입니다. Immunefi 에 따르면, DeFi 관련 공격으로 인한 암호화폐 손실액은 2025년에 약 6억 8천만 달러로 감소할 것으로 예상되며, 이는 2022년 최고치인 26억 2천만 달러에서 약 74% 감소한 수치입니다. 이러한 감소세에는 향상된 도구와 컴파일러에 내장된 보안 검사 기능이 한몫했습니다.

고체란 무엇인가

솔리디티와 다른 스마트 계약 언어 비교

솔리디티에는 경쟁자들이 있습니다. 심지어 가장 안전한 언어도 아닙니다. 바이퍼는 최소한의 기능만 갖춘 파이썬과 유사한 언어로, 사용자가 실수로 큰 피해를 입을 가능성을 줄이기 위해 의도적으로 간소화되었습니다. 커브도 바이퍼를 기반으로 작동합니다. 러스트는 솔라나와 NEAR에서 사용되는 스마트 계약을 지원하는데, 어떤 면에서는 더 안전하지만 배우기가 더 어렵고 감사 비용도 더 많이 듭니다. 그렇다면 왜 솔리디티가 여전히 강세를 보일까요? 언어 설계 때문이 아닙니다. 바로 네트워크 효과 때문입니다. 가장 심도 있는 툴링, 가장 철저하게 감사된 라이브러리, EVM 기반의 블록체인과 지갑 생태계 전체가 이미 솔리디티를 기반으로 구축되어 있습니다.

언어 쇠사슬 구문 기본 ~에 가장 적합함 절충
견고 이더리움 + 모든 EVM 자바스크립트/C++ 최대 도달 범위, 완성도 높은 도구 안전하지 않은 코드를 작성하기 쉽습니다.
바이퍼 EVM 파이썬 안전에 중요한 간단한 계약 기능 수가 적고 커뮤니티 규모도 작습니다.
솔라나, 근처 고성능, 강력한 안전성 급격한 변화, 더 비싼 감사

사용자와 자금이 이미 있는 곳에 제품을 출시하고 싶다면, 기술적으로 더 안전한 경쟁 프레임워크가 있더라도 Solidity가 실용적인 기본 선택입니다.

2026에서 솔리디티 프로그래밍을 배워야 할까요?

암호화폐에 대한 투기적 과열은 식었지만, 정확한 솔리디티 코드를 작성할 수 있는 사람들에 대한 수요는 줄어들지 않았습니다. 일렉트릭 캐피털의 집계에 따르면 2025년 1월부터 9월까지 이더리움에는 약 16,181명의 새로운 개발자가 합류했으며, 전체 멀티체인 개발자의 약 74%가 EVM 체인에서 작업하고 있습니다. 수익성 있는 일자리와 재사용 가능한 라이브러리가 있는 곳이 바로 그곳입니다.

솔리디티 프로그래밍을 배우는 합리적인 방법은 다음과 같습니다. 리믹스(Remix)에서 시작하여 공식 솔리디티 문서를 읽고, 오픈제플린(OpenZeppelin)의 컨트랙트를 직접 실행해 보면서 전문가들이 토큰과 접근 제어를 어떻게 구성하는지 살펴보세요. 작은 프로젝트들을 테스트넷에 배포하여 보안 패턴이 암기하는 것이 아니라 자동적으로 적용될 수 있을 때까지 연습하세요. 솔리디티 개발자에게 진정으로 필요한 기술은 컴파일되는 코드를 작성하는 것이 아닙니다. 그런 능력은 누구나 갖출 수 있습니다. 솔리디티 개발자가 진정으로 돈을 벌 수 있는 능력은, 당신의 컨트랙트를 읽고 돈을 노리는 적대적인 공격자와의 접촉에도 견딜 수 있는 코드를 작성하는 것입니다.

솔리디티가 여전히 기본 프로그래밍 언어로 남아 있는 이유

솔리디티가 기본 언어로 채택된 데에는 분명한 이유가 있습니다. 단순히 유행 때문이 아니라, 모든 EVM 체인에 적용되고, 가장 풍부한 툴링을 제공하며, 대부분의 DeFi 및 NFT 플랫폼의 기반이 됩니다. 하지만 가장 먼저 익혀야 할 것은 문법이 아닙니다. 블록체인에서는 배포된 코드가 곧 법이며, 버그는 영원히 남는다는 사실입니다. 언어와 보안 패턴을 함께 배우세요. 이 둘은 분리할 수 없습니다. 다음 단계는 간단하고 비용도 들지 않습니다. Remix를 열고 10줄짜리 간단한 컨트랙트를 작성해서 이번 주 안에 테스트넷에 배포해 보세요.

질문이 있으십니까?

구문 자체는 어렵지 않습니다. 이미 코딩 경험이 있다면 주말이면 금방 익힐 수 있죠. 자바스크립트나 C++와 비슷하거든요. 어려운 건 사고방식입니다. 가스 비용, 불변성, 보안 패턴 같은 것들이요. 사람들은 솔리디티는 빨리 배우지만, 안전하게 작성하는 법을 배우는 데는 몇 년씩 걸립니다.

주로 자바스크립트와 C++를 사용합니다. 중괄호, 세미콜론 같은 문법을 많이 쓰죠. 파이썬에서 몇 가지 아이디어를 얻었지만, 솔리디티는 정적 타입 언어라서 타입을 미리 선언해야 합니다. 진짜 파이썬 같은 느낌을 원한다면 솔리디티가 아니라 바이퍼(Vyper)를 사용하세요.

기본은 알겠죠. 거래란 무엇인지, 가스는 어떤 역할을 하는지, 블록체인이 왜 탈중앙화되었는지 같은 것들이요. 하지만 그 이면에 숨겨진 합의 알고리즘은 알 필요가 없습니다. 무엇보다 중요한 건 바로 ’배포된 코드는 공개되어 있고 영구적이다’라는 개념입니다. 이 점만 이해하면 나머지는 자연스럽게 따라올 겁니다.

솔리디티는 여러분이 작성하는 언어이고, 이더리움 가상 머신(EVM)은 이 언어를 실행하는 엔진입니다. 컴파일러는 `.sol` 파일을 EVM 바이트코드로 변환하고, 모든 노드는 자체 EVM에서 해당 바이트코드를 실행합니다. 하나는 소스 코드이고, 다른 하나는 실행 엔진입니다.

네, 거의 모든 곳에서 가능합니다. Polygon, BNB Chain, Arbitrum, Base, Avalanche 등 EVM과 호환되는 모든 블록체인에서 실행됩니다. ChainList에 따르면 이러한 네트워크는 385개 이상입니다. 이러한 폭넓은 활용성 덕분에 Solidity 기술은 특정 블록체인에 국한되지 않고 업계 전반에 걸쳐 활용될 수 있습니다.

네. 이더리움은 2025년 첫 9개월 동안 16,000명 이상의 개발자를 추가했으며, 대부분의 멀티체인 개발자는 EVM 네트워크에서 개발합니다. 검증된 솔리디티 엔지니어는 그들이 개발한 스마트 계약의 가치에 비해 매우 희소합니다. 이러한 희소성 때문에 높은 연봉이 유지되는 것입니다.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.