‘솔리디티(Solidity)’, 3분 안에 이해하기

스마트 컨트랙트 언어의 대표 주자, 솔리디티

분산형 애플리케이션(Decentralized application, 이하 DApp)’ 이란 블록체인 또는 기타 분산 원장 시스템에서 실행되어 스마트 컨트랙트 기반으로 자율 동작하는 애플리케이션을 의미한다. 스마트 컨트랙트를 개발하기 위해 다양한 프로그래밍 언어들이 사용되고 있지만, 가장 대표적인 언어로는 ‘솔리디티(Solidity)’를 들 수 있다. 이 글은 스마트 컨트랙트 프로그래밍 언어에 대해 생소한 개발자를 대상으로, 짧은 시간 안에 솔리디티를 이해할 수 있도록 작성되었다.

솔리디티 기본 개념

솔리디티는 스마트 컨트랙트를 구현하기 위한 객체 지향 고급 언어이다. 주로 이더리움(Ethereum) 계열의 블록체인에서 비즈니스 로직을 구현하기 위해 사용된다. 솔리디티는 중괄호 프로그래밍 언어(Curly-bracket languages)에 해당하며, C++, 파이썬(Python), 자바스크립트(JavaScript)의 영향을 받은 것으로 알려져 있다. 솔리디티는 정적으로 변수 타입이 지정되며, 상속 기능과 라이브러리를 사용할 수 있다.

솔리디티 실행 환경

솔리디티는 ‘EVM(Ethereum Virtual Machine)’ 이라고 불리는 런타임 환경에서 실행된다. 정적인 블록체인에서 모든 네트워크 참여자가 동일한 데이터를 저장하고 관리한다. 이를 확장하여 스마트 컨트랙트는 모든 참여자가 동일한 실행 환경에서 동일한 프로그래밍 코드를 실행하는 방식으로 비즈니스 로직을 구현할 수 있다. 이더리움의 경우 각 네트워크 노드가 스마트 컨트랙트 프로그램을 동일하게 연산 처리할 수 있도록 EVM을 도입하였다.

솔리디티 활용 사례

이더리움 블록체인은 거대한 ‘세계의 컴퓨터(World computer)’가 되겠다는 이상을 가지고 있다. 이러한 이상을 실현하기 위해 솔리디티는 튜링 완전성(Turing completeness)을 구현할 수 있도록 설계되었다. 튜링 완전성이란, 간단히 말하면 충분한 메모리와 시간만 확보된다면 어떠한 종류의 연산도 처리할 수 있는 컴퓨터의 능력을 의미한다. 비트코인(Bitcoin)의 경우, 스크립트 언어로 간단한 로직을 처리할 수는 있었지만, 반복문과 조건문 사용이 제한적이었기 때문에 튜링 완전성을 만족하지 못하였다고 평가받는다. 반면, 이더리움은 튜링 완전성을 만족하기 때문에 어떠한 비즈니스 로직도 처리할 수 있는 잠재력을 지닌다. 다만, 처리 성능 및 보안 이슈 등으로 인하여 아직은 적용 범위가 제한적이다.

솔리디티 기반 스마트 컨트랙트가 적용된 대표적인 사례로는 투표, 크라우드 펀딩 및 블라인드 경매 등을 들 수 있다. 이러한 사례들은 참여자 간 신뢰가 필요하고, 조건과 실행 결과가 명확하다는 공통점이 있다. 기존 IT 시스템 환경에서는 신뢰할 수 있는 제3기관이 담당해온 업무들이기도 하다. 부패나 도덕적 해이로 인하여 중앙 기관을 더 이상 신뢰할 수 없거나, 비용 및 시간이 지나치게 많이 소요될 경우 블록체인 스마트 컨트랙트가 대안으로 고려될 수 있다. 한편, 보다 기술적으로는 블록체인상 다중 서명(Multi-signiture) 지갑을 구현하기 위해서도 솔리디티 스마트 컨트랙트가 자주 사용되고 있다.

결론

지금까지 솔리디티의 기본 개념과 활용 사례에 대해 간단히 살펴보았다. 솔리디티를 보다 깊이 있게 이해하기 위해서는 블록체인 네트워크 구조와 암호화폐 메커니즘에 대한 학습이 필요하다. 이더리움 스마트 컨트랙트가 처음 세상에 소개되었을 때는 도박 등 특정 서비스 중심으로 DApp 개발이 이루어졌다. 그러나 최근에는 보다 실생활과 가까운 DApp들이 출시되고 있다. DApp의 동작 방식을 알기 위해서는 스마트 컨트랙트에 대한 이해가 필수적이다. 대표적인 스마트 컨트랙트 언어인 솔리디티를 통해 스마트 컨트랙트에 대한 이해를 높일 수 있기를 바란다.

(관련 기사: 블록체인, 어디에 사용하면 좋을까?)