이더리움 솔리디티 언어로 스마트 컨트랙트 구현하다 (2022년)

이더리움 솔리디티 언어로 스마트 컨트랙트 구현하다. 지난 시간은 스마트 컨트랙트 의미와 사용예시를 살펴보았습니다. 이번 시간에는 기술적 측면에서 스마트 컨트랙트가 구현 가능한 이유를 알아보겠습니다.

이더리움 솔리디티 언어 목차


이더리움 가상머신(EVM, Ethereum Virtual Machine)

이더리움이 비트코인과 달리 주목받는 이유는 바로 스마트 컨트랙트 기능입니다. 기술적 측면에서 조건문과 반복 구문을 적용하기 때문입니다. 기술적 기능을 구현한 스마트 컨트랙트 기술에 위조, 변조가 불가능한 거래정보 관리 기술을 가진 비트코인을 접목하여 탄생한 이더리움입니다.


이더리움 심볼
이더리움 심볼 <출처 : 언스플래쉬>

스마트 컨트랙트 자체도 위조, 변조, 해킹이 불가능해야 하는데요. 스마트 컨트랙트 자체도 블록체인 기술 적용한다는 의미입니다. 이 과정을 위해 이더리움은 이더리움 가상머신(EVM)을 도입했습니다.


EVM 메커니즘

새로운 계약이나 거래가 체결될 때, 이 블록에 대한 검증 방법으로 이더리움은 EVM을 실행합니다. EVM 실행과 동시에 네트워크에 참여한 노드는 같은 계산을 수행하여 EVM과 같은 값을 찾고 저장합니다.


이 과정을 통해 노드는 계약이나 거래 체결 및 스마트 컨트랙트 ‘조건’에 합의하는 것으로 합의합니다. 쉽게 말해서, EVM 실행으로 스마트 컨트랙트 조건까지 참여한 노드들이 검증한다는 것입니다.


EVM 실행할 수 있는 이유

어떤 기술적 요인이 EVM을 실행하게 할까요? 이더리움 언어는 튜링 완전 언어인 솔리디티(Solidity) 언어로 만들었기 때문입니다. (머리가 아프신가요? 괜찮습니다. 가볍게 훑어보고 2번 더 읽으면 ‘메커니즘’은 이해하실 겁니다)



튜링 완전? 튜링 머신?

솔리디티 언어는 튜링 완전 언어라고 언급했습니다. 그렇다면 튜링 완전 언어는 무엇일까요? 이 개념을 이해하기 앞서 튜링 머신을 이해해야 합니다. 간단하게만 짚고 넘어가겠습니다.


튜링 머신은 2차 세계 당시 ‘앨런 튜링’이라는 과학자가 개발한 기록을 읽고 미리 설정한 조건에 따라 실행하게끔 만들어진 기기입니다. 컴퓨터의 전신이라 불립니다. (당시에는 독일군 암호를 해석, 추적하려고 개발하였습니다)


시간이 흘러 초기 튜링 머신에서 발전한 ‘보편 튜링 머신(Universal Turing Machine)’이 등장합니다. 초기 튜링 머신을 ‘임의 튜링 머신’이라고 합니다. 1세대 머신이라고 생각하시면 편하겠네요.


보편 튜링 머신 기계
튜링 머신 기계 <출처 : 언스플래쉬>

튜링 완전, 튜링 머신 정리

A 보편 튜링 머신이 1세대 ‘임의 튜링 머신’ 메커니즘을 수행할 수 있다면, A 튜링 머신은 완전하다고 말합니다.


이 과정에서 튜링 머신에 사용하는 언어(명령 방법)는 튜링 완전 언어라 하고, 조건 분기문을 쓰거나 메모리를 변경할 수 있는 프로그램 언어입니다. 그리고 이더리움의 EVM를 실행하는 튜링 완전 언어는 바로 ‘솔리디티(Solidity) 언어’ 입니다.



왜 솔리디티 언어인가?

튜링 완전 언어는 솔리디티만 있는 게 아닙니다. 많이 들어보셨을 자바, C++ 언어도 튜링 완전 언어입니다.


왜 솔리디티 언어가 이더리움 선택을 받았을까요? 이유는 간단합니다. 탈중앙화가 목표인 암호화폐 세계에서 솔리디티 언어는 이러한 기술을 실행할 수 있는 문법을 가지고 있습니다.



탈중앙화를 위한 기본 조건은 개인 간 자유로운 금융거래입니다. 이를 위해서는 중앙기관이 아닌 개인이 지갑 주소를 확인할 수 있어야 합니다. 잔액도 확인할 수 있어야 합니다. 다른 지갑으로 원하는 금액만큼 쉽게 보낼 수 있어야 합니다.


프로그래밍 중인 개발자
프로그래밍 중인 개발자 <출처 : 언스플래쉬>

솔리디티 언어는 위 예제를 실행합니다. 즉, 조건 문법을 갖춘 프로그램 언어입니다. 다른 자바, C++ 언어는 문법 자체를 새롭게 뜯어고쳐야 하므로 시간과 비용 측면에서 비효율적입니다. 프로젝트 개발 효율성 측면에서 솔리디티 언어는 가성비 좋은 의사소통 수단입니다.


이더리움에서 파생한 토큰들도 솔리디티 언어로 생성할 수 있습니다. 대표적인 예제로 클레이튼 또한 솔리디티 언어 기반이라고 백서에 언급하였습니다.



이더리움 솔리디티 언어 마무리



이번 포스팅은 이더리움 블록체인 스마트 컨트랙트 기능 구현이 가능한 근본적인 이유인 EVM 시스템과 이를 가능하게 하는 솔리디티 언어에 대해서 배웠습니다.


암호화폐, NFT를 공부하겠다면서 왜 원론적이고 지겨운 이야기를 하는지 이해하지 못하실 수 있겠네요. 겉으로 보이는 평단이나 프로젝트 백서, 로드맵 파악도 중요합니다. 그러나 이 원리를 이해한다면 혹시 솔리디티 언어에 대항할, EVM에 대항할 새로운 이슈가 생긴다면 남들과는 다른 관점이 생기지 않을까요?


다음 시간에는 지분증명에 대해서 알아보도록 하겠습니다. 이번 포스팅은 처음이시라면 아래 1편부터 쭉 읽어보세요. 암호화폐, NFT를 이해하기 위한 좋은 밑거름이 될 것입니다.


다른 사람이 많이 읽은 글

✔ Q) 이더리움 네트워크 기반 지갑만 있나요?

A) 아닙니다. 클레이튼 네트워크 기반 카이카스 지갑도 있습니다!