블록체인 개발에 사용하는 프로그래밍 언어 소개

인사이트

블록체인 개발에 사용하는 프로그래밍 언어 소개

2023년 01월 27일

금융・게임 등 기업 비즈니스에 이어 공공 분야에도 활용되며 여전히 뜨거운 블록체인 기술. 블록체인 개발을 위해 다양한 프로그래밍 언어를 사용하지만 그중에서도 가장 많이 사용하는 4가지 언어를 소개합니다.

C++, 자바스크립트, 파이썬, 솔리디티. 4가지 프로그래밍 언어의 개념과 각 언어를 블록체인 기술에서 어떻게 사용하고 있는지 알려드릴게요.

1. C++

C++은 방대하기 때문에 여러 주요 특징이 있지만 대표적으로 ‘자유도’를 손꼽습니다.

객체지향 언어이지만 절차 지향적으로 개발할 수도 있고, 메모리를 내가 원하는 타이밍에 할당하고 해제할 수 있습니다. 자유도가 높은 만큼 리스크도 지니고 있는데요. 코드를 잘못 작성하면 프로그램이 중지되거나 memory leak이 발생해 프로그램이 속된 말로 뻗어버릴 수 있으며, 원인을 찾는 게 매우 어려워지기도 합니다.

그럼에도 불구하고 타 언어 대비 ‘속도’에서도 큰 장점을 가지고 있기 때문에 게임, 금융, 블록체인 코어 등 많은 분야에서 여전히 사용하는 언어입니다.

블록체인에 사용되는 C++은 여러 장단점이 있지만 핵심적인 두 가지 특징을 통해 장단점을 알아보겠습니다.

1) 메모리 관리

C++의 메모리 관리는 양날의 검이라고 할 수 있습니다. 다른 객체지향 언어들과 다르게 C++은 프로그래머가 메모리를 직접 할당하고 해제하기 때문에 성능이 더 좋아질 수도, 오히려 더 나빠질 수도 있습니다.

new로 heap영역에 메모리를 할당한 후, delete로 해제하지 않을 경우 이른바 memory leak이 발생할 수 있고, 방대한 프로젝트의 경우 디버깅이 굉장히 힘들어 질 수도 있습니다.

물론 스마트 포인터라는 기능이 C++에는 있지만, 순환 참조 문제 발생 가능성 등 여러 문제를 내포하고 있기 때문에 현업에서는 잘 사용하지 않습니다.

그럼에도 프로그래밍만 잘한다면, 가장 빠르고 효율적인 프로그래밍을 할 수 있기 때문에 블록체인 코어단에서 많이 사용하고 있습니다.

2) 다형성

다형성이란 쉽게 말해 모양은 같지만, 기능은 다른 것을 의미합니다. 공통분모가 있다면 같은 모양의 틀을 여러 개 만든 후, 기능을 다르게 정의해 ‘재활용’ 할 수 있는 기능이죠. 한마디로 효율적으로 프로그래밍을 할 수 있는 기능입니다.

블록체인에서 C++은 최고의 언어 중 하나입니다. 위에서 언급한 메모리 커스텀, 스레드, 다형성과 같은 특징을 가진 객체지향 언어의 특성과 빠른 속도로 인해 bitcoin, ripple, eos와 같은 초기 굵직한 프로젝트들의 코어단 코드 모두가 C++로 만들어졌습니다.

C++은 비트코인의 코어 코드인 만큼 역사적으로도, 성능적으로도 증명된 언어입니다. 점점 기능이 추가됨에 따라 문법이 어려워져 습득하기 어렵고, 프로그래머의 역량에 따라 품질이 달라진다는 단점도 있습니다. 그렇지만 앞으로도 블록체인뿐만 아니라 사회 다방면에서 중요한 역할을 할 언어로서 C++은 단연 매력적인 언어입니다.

<참고 자료>
▪︎ 비트코인 깃 https://github.com/bitcoin/bitcoin/tree/master/src
▪︎ 리플 깃 https://github.com/ripple/ripple-libpp

2. 자바스크립트

자바스크립트(JavaScript)는 객체 기반의 스크립트 언어입니다. 주로 웹 브로우저에 사용되나, Node js와 같은 프레임워크를 이용하면 서버 프로그램에도 사용할 수 있습니다. 또 자바스크립트는 객체 지향형 프로그래밍, 함수형 프로그래밍에도 모두 사용 가능합니다.

자바스크립트를 블록체인에서 사용하는 장점으로 아래 3가지 특징을 가지고 있습니다.

▪︎ 가장 널리 사용되는 프로그래밍 언어 중 하나입니다.
▪︎ 프론트, 백엔드 프로세스 모두에 대해 모든 브라우저에서 작동할 수 있습니다.
▪︎ Solidity, Rust와 같은 고급언어보다 훨씬 쉽고 빠르게 시작할 수 있습니다.

자바스크립트를 사용한 블록체인 예시는 아래 솔라나 깃과 니어 깃 링크를 참고해 봐주세요.

3. 파이썬

파이썬(Python)은 대표적인 스크립트 언어입니다. 컴파일이 없고 인터프리터가 한 줄씩 바로 실행하는 특징을 가지고 있습니다. 따라서 실행 결과를 빠르게 확인하고 수정하면서 손쉽게 코드를 작성할 수 있습니다.

파이썬의 장점은 문법이 쉽고, 플랫폼에 종속되지 않습니다. 따라서 윈도우, 리눅스, 라즈베리 파이 등 다양한 분야에서 쉽게 환경을 구축하고 사용할 수 있습니다. 또한 무수히 많은 오픈 소스가 있기 때문에 타언어에 비해 참고할 만한 코드도 굉장히 많은 편입니다.

파이썬은 문법이 쉬워 언어 습득 진입장벽이 낮은 편이라 개발 언어를 처음 배우는 입문자가 학습하기에 좋습니다. 또 코드가 깔끔하게 분리 가능해서 유지 보수도 쉬운 편에 속합니다.

파이썬의 이런 다양한 장점 때문에 작은 규모의 프로젝트일정이 타이트한 프로젝트, 프로그램 속도가 중요하지 않은 프로젝트에 파이썬 사용을 추천합니다.

문법이 쉽고, 코드 수정이 상대적으로 편한 파이썬의 특성 때문에 현재 블록체인 프로젝트에서는 주로 테스트 코드를 작성할 때 파이썬을 사용합니다. 또한 블록체인 개발 입문자들의 블록체인 로직 학습을 위해 파이썬으로 간단히 코드를 짜 가르치는 경우도 많이 찾아볼 수 있습니다.

이처럼 파이썬이라는 언어는 쉽고, 간결하고, 플랫폼에 종속되지 않아 어느 플랫폼에서든지 개발할 수 있는 환경을 갖고 있습니다. 따라서 과거에도, 현재도, 그리고 미래에서도 테스트용 코드 등으로 계속해서 사용될 것으로 보입니다. 파이썬을 습득해둔다면 장기적으로 여러 분야에 활용할 수 있는 편리한 나만의 도구가 될 것입니다.

4. 솔리디티

솔리디티(Solidity)는 이더리움 블록체인 플랫폼에서 DApp을 구축하려는 소프트웨어 개발자를 대상으로 하는 고급 프로그래밍 언어입니다. 여러 장점 때문에 솔리디티를 블록체인에 사용하지만 단점도 있습니다. 아래 장단점을 나눠 설명해 보겠습니다.

솔리디티 장점

▪︎ 솔리디티는 언어는 문자, 숫자를 변수, 함수, 클래스 등 여러 개념과 결합합니다.
▪︎ C++, Python, Javascript의 영향을 많이 받아 언어를 아는 개발자는 쉽게 접근할 수 있습니다.
▪︎ 신뢰할 수 있고 투명하며, 안전한 스마트 계약을 생성할 수 있습니다.

솔리디티 단점

▪︎ 불변성은 많은 이점이 있지만 때때로 사용자에게 불리할 수 있습니다. 예를 들어, 계약이 완료된 후에는 업그레이드하거나 더 많은 기능을 제공할 수 없습니다.
▪︎ 설계하는 프로그래머 입장에서는 쉽지만, 코드 리딩을 하는 사람 입장에서는 코드를 분석하고 읽는 데 까다로울 수 있습니다.

블록체인에 사용되는 솔리디티의 개념과 문법 예제를 더 알고 싶다면, 아래 코드스테이츠 콘텐츠를 함께 읽어보세요.

<참고 자료>
▪︎ 이더리움 깃 https://github.com/ethereum/solidity

코드스테이츠 블록체인 부트캠프에서는 탄탄한 이론을 바탕으로 블록체인 생태계의 가능성에 도전하고 싶은 분들을 기다립니다. 블록체인 개발에 사용하는 프로그래밍 언어 이론 학습에 이어 더 깊고 넓은 블록체인 생태계를 배우고 싶다면, 코드스테이츠 블록체인 부트캠프와 함께해 보세요.

 권창현・문진웅 R&D Blockchain Engineer
편집 최인성 Content Manager


🚀 블록체인 개발자 커리어의 시작,
블록체인 부트캠프가 더 궁금하다면?

목록 보기

추천글