본문으로 건너뛰기
Change page

스마트 컨트랙트 언어

이더리움의 가장 좋은 점은 smart contract을 개발자 친화적인 언어로 프로그래밍 할 수 있다는 점이다. Python 또는 중괄호 언어 (opens in a new tab)에 익숙하다면 친숙한 구문을 가진 언어를 찾을 수 있습니다.

가장 활발하고 유지되는 언어들은 다음과 같다:

  • 솔리디티
  • Vyper

Remix IDE는 Solidity 및 Vyper에서 계약을 생성하고 테스트하기 위한 종합 개발 환경을 제공합니다. 브라우저 내 Remix IDE (opens in a new tab)에서 코딩을 시작하세요.

더 숙련된 개발자들은 이더리움 가상 머신을 위한 중간 언어인 Yul 또는 Yul의 확장판인 Yul+를 사용할 수도 있습니다.

만약 당신이 궁금하고 아직 힘들게 개발중인 새로운 언어 테스트를 도와주고 싶다면, smart contract 언어로 떠오르고 있지만 아직은 초창기 단계인 Fe 언어를 시도해볼 수 있다.

필수 구성 요소

특히 Javascript나 Python에 대해 미리 알고 있다면, smart contract 언어의 차이를 이해하는데 도움을 줄 수 있다. 언어에 대한 차이를 너무 깊게 파고들기 전에 smart contract 개념을 먼저 이해하는 것을 추천한다. 스마트 계약 소개.

솔리디티

  • Smart contract를 구현하기 위한 객체지향의 고급 언어 (high-level language).
  • C++로부터 영향을 가장 많이 받은 Curly-bracket 언어.
  • 정적 프로그래밍 언어 (자료형이 컴파일 시 결정되는 언어).
  • 지원:
    • 상속 (다른 contract으로 확장할 수 있음).
    • 라이브러리 (객체지향 프로그래밍 언어에서 정적(static) 클래스에 있는 정적 함수처럼 서로 다른 contract에서 부를 수 있는 재사용이 가능한 코드를 만들 수 있음).
    • Complex user-defined types.

예제 계약

이 예제를 통해 Solidity contract 문법이 어떤지 감을 찾을 수 있다. 함수와 변수에 대한 더 자세한 설명은 문서를 참조하세요 (opens in a new tab).

Vyper

  • Pythonic 프로그래밍 언어
  • 강한 타입
  • 작고 이해하기 쉬운 컴파일러 코드
  • 효율적인 바이트코드 생성
  • Contract을 더 안전하고 검사하기 쉽게 일부러 Solidity보다 기능이 적음. Vyper는 아래를 지원하지 않음:
    • 제어자 (Modifiers)
    • 상속
    • 인라인 어셈블리 (Inline assembly)
    • 함수 오버로드
    • 연산자 오버로드
    • 재귀 호출
    • 무한 루프
    • 이진 고정점 (Binary fixed points)

자세한 내용은 Vyper의 기본 원칙을 읽어보세요 (opens in a new tab).

예제

이 예제를 통해 Vyper contract 문법이 어떤지 감을 찾을 수 있다. 함수와 변수에 대한 더 자세한 설명은 문서를 참조하세요 (opens in a new tab).

Yul 및 Yul+

이더리움을 처음 접하고 아직 스마트 계약 언어로 코딩해본 적이 없다면, Solidity 또는 Vyper로 시작하는 것이 좋습니다. 스마트 계약 보안 모범 사례와 EVM 작업의 구체적인 사항에 익숙해진 후에 Yul 또는 Yul+를 탐색하세요.

Yul

  • 이더리움을 위한 중간 언어입니다.
  • EVM과 이더리움 기반의 웹어셈블리인 Ewasm (opens in a new tab)을 지원하며, 두 플랫폼 모두에서 사용할 수 있는 공통 분모로 설계되었습니다.
  • EVM과 Ewasm 플랫폼 모두에 유리한 고급 최적화 단계를 위한 좋은 목표입니다.

Yul+

  • Yul의 저수준 및 고효율 확장입니다.
  • 처음에는 낙관적 롤업 계약을 위해 설계되었습니다.
  • Yul+는 Yul의 새로운 기능을 추가하는 실험적 업그레이드 제안으로 볼 수 있습니다.

예제 계약

다음의 간단한 예는 제곱 함수(power function)를 구현합니다. solc --strict-assembly --bin input.yul을 사용하여 컴파일할 수 있습니다. 이 예시는 input.yul 파일에 저장해야 합니다.

스마트 계약에 이미 매우 익숙하다면 Yul로 구현된 전체 ERC20을 여기 (opens in a new tab)에서 찾을 수 있습니다.

Fe

  • 이더리움 가상 머신(EVM)을 위한 정적 타입 언어입니다.
  • Python과 Rust에서 영감을 받았습니다.
  • 이더리움 생태계에 처음인 개발자도 쉽게 배울 수 있도록 설계되었습니다.
  • Fe 개발은 아직 초기 단계이며, 2021년 1월에 알파 버전이 출시되었습니다.

예제 계약

다음은 Fe로 구현된 간단한 계약입니다.

선택 방법

다른 프로그래밍 언어와 마찬가지로 작업에 적합한 도구를 선택하는 것이 중요하며, 개인적인 선호도도 고려해야 합니다.

솔리디티의 장점은 무엇인가요?

초보자에게는 다양한 튜토리얼과 학습 도구가 있습니다.

  • 코딩으로 배우기 섹션에서 더 알아볼 수 있습니다. 자세한 내용은 코딩으로 배우기 섹션을 참조하세요.
  • 좋은 개발자 툴링을 사용할 수 있습니다.
  • 솔리디티는 큰 개발자 커뮤니티가 있어 질문에 대한 답변을 쉽게 찾을 수 있습니다.

Vyper의 장점은 무엇인가요?

  • 스마트 계약을 작성하고자 하는 Python 개발자에게 훌륭한 출발점입니다.
  • 기능 수가 적어 아이디어를 빠르게 프로토타입하는 데 적합합니다.
  • Vyper는 감사하기 쉽고 가독성이 뛰어납니다.

Yul과 Yul+의 장점은 무엇인가요?

  • 간단하고 기능적인 저수준 언어입니다.
  • 계약의 가스 사용량 최적화에 도움이 되는 원시 EVM에 더 가깝게 접근할 수 있습니다.

언어 비교

기본 구문, 계약 수명 주기, 인터페이스, 연산자, 데이터 구조, 함수, 제어 흐름 등을 비교하려면 Auditless의 치트 시트 (opens in a new tab)를 확인하세요.

더 읽어보기

페이지 최근 업데이트: 2026년 2월 25일

이 아티클이 도움이 되었나요?