블록체인을 바라보는 방법

장민혁
CURG
Published in
12 min readSep 21, 2022

들어가며

2021년 거래소에서 아무 코인이나 사도 높은 수익률이 나올 정도로 블록체인은 엄청난 호황이었다. 그러는 과정에서 수많은 새로운 체인들과 Dapp, NFT 프로젝트들이 등장했다. 우리는 범람하는 정보 속에 어떤 프로젝트가 신뢰할 수 있을지 판단하기 힘든 상황이다. 더군다나 전 세계적으로 계속되는 긴축 정책과 전쟁, 루나-테라 사태까지 계속된 악재까지 겹쳤다. 이럴 때일수록 중심을 잡고 철학을 확실히 해야 한다. 그러기 위한 블록체인이 발전해 온 길과 앞으로 프로젝트를 평가하기 위한 기준에 관한 이야기를 해보려고 한다.

비트코인의 등장과 한계

1980년대 후반 암호 기법이 발달함에 따라 이를 이용하여 디지털 통화를 만들고자 했다. 디지털 통화를 연구하며 사람들은 다음 세 가지 기본적인 문제에 직면한다.

  1. 이 디지털 머니가 위조가 아닌지 신뢰할 수 있는가?
  2. 이 디지털 머니가 한 번만 소비될 수 있다고 신뢰할 수 있는가? (이중지불 문제)
  3. 이 돈을 내가 아닌 자신의 소유라고 주장하는 사람이 나올 가능성이 있는가?

초기에 등장한 디지털 통화들은 중앙 통제 방식으로 위와 같은 문제들을 해결했다.

비트코인은 전 세계적으로 10분마다 ‘투표’를 수행함으로써 분산 네트워크가 각 거래 상태에 대해 합의에 이를 수 있도록 하여 이중지불 문제를 해결하며 등장했다. 비트코인은 발명 그 자체만으로도 역사에 남을 획기적인 일이며 이미 분산컴퓨팅, 경제학 등의 분야에서 새로운 과학 분야를 양산해 내고 있다.

사람들은 비트코인 모델의 힘을 인식하고 암호화폐 애플리케이션을 개발하려고 시도했다. 그러나 비트코인은 지불수단으로서의 화폐에 집중하여, 트랜잭션에 사용되는 스크립트 언어가 매우 제한적인 기능을 갖는다 (반복문의 부제 등). 개발자는 비트코인 기반 위에 구축할 때 이런 제약조건들 위에서 해결책을 찾아야 했다. 제한된 트랜잭션 타입, 데이터 타입 및 스토리지 크기는 비트코인 위에서 실행할 수 있는 애플리케이션 종류를 제한한다. 또 그 밖의 것들은 부가적인 오프 체인 계층을 필요로 했고, 이는 공개 블록체인의 많은 장점을 없애버렸다.

이더리움의 등장

2013년 12월 비탈릭 부테린은 튜링 완전한 범용 블록체인인 이더리움의 개념을 설명하는 백서를 공유했다. 비탈릭의 ‘Ethereum Prehistory’ 게시글에서 이때의 그의 생각들을 볼 수 있다.

Gavin can also be largely credited for the subtle change in vision from viewing Ethereum as a platform for building programmable money, with blockchain-based contracts that can hold digital assets and transfer them according to pre-set rules, to a general-purpose computing platform. This started with subtle changes in emphasis and terminology, and later this influence became stronger with the increasing emphasis on the “Web 3” ensemble, which saw Ethereum as being one piece of a suite of decentralized technologies, the other two being Whisper and Swarm. — A Prehistory of the Ethereum Protocol

그중 프로토콜 개발에 큰 도움을 주었던 개빈 우드의 기여에 대한 설명 중 중요한 내용이 나온다. 이더리움은 단순히 더 범용적인 블록체인에서 프로그래밍 가능한 화폐의 컴퓨팅 플랫폼이라는 비전의 미묘한 변화를 주는 데 성공했다. 이 비전의 차이로 인해 이더리움은 월드 컴퓨터라는 발전 방향도 확실하게 잡히고, 모두가 인정하는 2세대 블록체인이 되었다.

월드 컴퓨터

상태머신

비트코인은 코인의 소유권을 저장하는 상태 머신이라고 생각할 수 있다. 반면 이더리움은 범용 데이터 저장소, 즉 키-밸류 튜플(key-value tuple)로 표현할 수 있는 모든 데이터를 저장할 수 있는 저장소의 상태 머신이다. 대부분의 범용 컴퓨터에서 사용되는 RAM의 데이터 스토리지 모델과 같은 용도로 사용된다. 이더리움의 획기적인 혁신은 범용 컴퓨팅 아키텍처와 탈중앙화된 블록체인을 결합하여 탈중앙화된 단일 상태(싱글톤) 월드 컴퓨터를 만든 것이다. 이더리움 프로그램은 ‘어디에서나’ 실행되지만, 합의 규칙에 따라 보장되는 공통 상태를 만들어낸다.

튜링 완전

‘이더리움은 튜링 완전하다’라고 흔히들 말한다. 튜링 완전하다는 말을 들으면 튜링 불완전한 시스템은 뭔가 빠져있을 것 같은 느낌이고, 튜링 완전한 시스템은 뭔가 대단한 느낌이 들 수 있지만, 사실 튜링 완전은 아주 쉽게 달성할 수 있다. 반복문과 조건문을 구현할 수 있으면 보통 튜링 완전하다고 생각하면 된다. 오히려 개방형 액세스 시스템에서 튜링 완전은 매우 위험하다. 튜링 머신의 정지 문제(halting problem, 튜링 머신이 주어진 입력 테이프에 대해 정지하는가 정지하지 않는가를 판정하는 알고리즘의 존재 여부를 묻는 문제)가 해결되지 않는다는 것이 증명되어 있다. 예를 들어, 튜링 완전한 최신 프린터들은 프린터가 작동 불능 상태가 될 때까지 인쇄 명령을 받을 수도 있다. 이로 인해 이더리움은 어떠한 복잡한 프로그램이라도 계산할 수 있지만, 이런 유연성은 보안과 자원 관리에 몇 가지 어려운 문제를 야기한다. 응답이 없는 프린터는 껐다가 다시 켜면 되지만, 이는 공개 블록체인에서는 불가능하다.

정리하자면, 이더리움에 작성한 프로그램이 종료되는지 안 되는지, 간단히 말하자면 ‘무한 루프’ 상태에 빠지는지 예측할 수 없다는 것이다. 모든 이더리움 참여 노드들은 트랜잭션을 검증하고 스마트 컨트랙트를 실행해야 하는데, 이때 우연히, 또는 의도적으로 스마트 컨트랙트가 영원히 지속하도록 만들 수 있다. 이것은 사실상 서비스 거부 공격이다. 이더리움은 가스(gas)라는 과금 메커니즘을 도입하여 해결했다. 트랜잭션은 스마트 컨트랙트를 실행하는 데 사용할 수 있는 가스 최대 사용량을 가지고 있어야 하고, 계산에 소비되는 가스의 총량이 가용량을 초과한다면 EVM은 실행을 중지한다.

이더리움의 남은 도전 과제, 3세대 블록체인

https://ethernodes.org/ 2022–08–31 이더리움 노드 상태

이더리움은 아직 해결해야 할 문제들이 있다. 위에서 언급한 배포할 스마트 컨트랙트 프로그램이 무한 루프에 빠지지 않는지 알 수 없다는 점은 그만큼 컨트랙트 개발의 난도가 올라간다는 것을 뜻하기도 한다. 이더리움 2.0 이전에는 확장성과 작업 증명으로 인한 과도한 전력 소비도 문제였다. 이제까지 각자 나름의 방식으로 문제를 해결하고 3세대 블록체인이 되려는 시도를 하고있는 다른 체인들을 간단하게 알아보자.

  1. 레이어 2 솔루션(폴리곤 등) : 롤업과 같은 방법을 사용하여 다른 곳에서 처리한 거래를 요약하여 이더 블록에 올리는 형태
  2. 앱 체인 or 멀티체인(코스모스 등) : 하나의 범용 블록체인에서 앱을 개발하지 않고, 앱마다 서로 호환이 되는 체인을 만드는 방식.
  3. 솔라나: 이더리움의 하드웨어 최소 스펙이 2코어 4GB RAM 정도지만 솔라나는 12코어에 128GB 이상의 RAM을 요구한다. 모든 노드가 같은 상태에 합의하는 과정에 가장 낮은 성능의 노드에 맞출 수밖에 없으므로 그만큼 이더리움보다 빠른 속도를 보인다. 하지만 노드 참여의 진입 장벽이 너무 높다.

블록체인의 구성 요소

공개 블록체인은 일반적으로 다음과 같은 요소들로 구성되어 있다.

  1. P2P 네트워크와 표준화된 프로토콜
  2. 합의 규칙, 합의 알고리즘
  3. 트랜잭션
  4. 상태 머신
  5. 데이터 구조
  6. 인센티브 메커니즘(경제적 보안성)
  7. 클라이언트

이더리움에서 위의 특징들은 분석해보자

  1. P2P 네트워크, 프로토콜: 이더리움 메인 네트워크에서, ÐΞVp2p Wire Protocol
  2. 합의 규칙, 합의 알고리즘: 지금은 pow 방식인 나카모토 합의를 사용, pos로 전환하여 게스퍼로 전환될 계획
  3. 트랜잭션: 값, 데이터 등 네트워크 메시지
  4. 상태머신: EVM에 바이트코드 실행으로 상태전이가 이루어지는 상태머신
  5. 데이터 구조: 이더리움의 상태는 머클 패트리샤 트리로 각 노드의 데이터베이스(레벨DB)로 저장된다.
  6. 경제적 보안성: PoW에서 PoS 전환
  7. 클라이언트: 게스(geth), 페리티 등

이러한 특성들을 바탕으로 우리는 블록체인의 개방성, 공공성, 국제화, 탈중앙화, 중립성, 검열 저항성 등의 특성을 점검해봐야 한다.

이런 관점에서 위에서 언급한 다음 세대를 목표로 한 블록체인 중 하나인 코스모스를 간단하게 분석해보자.

코스모스는 이더리움이 아무리 빨라져도 결국 EVM이라는 하나의 싱글톤 상태 머신이 이를 처리하기 때문에 이더리움은 한계가 있을 거라고 생각했다. 그래서 이들은 메인 네트워크 개발 프레임워크를 만들어 하나의 앱에 하나의 체인이라는 앱체인 생태계를 만들었다. 따라서 코스모스는 하나의 네트워크로 코스모스 허브를 분석하기보다는 코스모스 생태계를 이루는 코스모스 sdk와 텐더민트 코어를 분석하는 것이 더 적합하다.

  1. P2P 프로토콜: 탠더민트에 가십(gossip) 프로토콜로 구현
  2. 합의 규칙, 알고리즘: 합의와 관련된 내용은 모두 탠더민트 코어에 구현되어 있다. pbft 알고리즘을 사용한다.
  1. 트랜잭션: 탠더민트의 ABCI(Application BlockChain Interface)에 SendTx, BondTx, UnbondTx, ReportHackTx, SlashTx, BurnAtomTx 등 다양한 메시지 종류가 있다. Msg, GasLimit, Memo, FeeAmount, TimeoutHeight, Signatures를 갖는다
  2. 상태머신: ABCI가 블록체인의 인터페이스이자 상태머신이다.

Unlike other blockchain and consensus solutions, which come pre-packaged with built in state machines (like a fancy key-value store, or a quirky scripting language), developers can use Tendermint for BFT state machine replication of applications written in whatever programming language and development environment is right for them. — Tendermint Core docs

다른 체인들과 달리 합의 알고리즘과 분리되어 있어 모든 프로그래밍 언어를 지원한다고 한다.

5. 데이터 구조: 머클트리 (비트코인과 달리 완전이진 트리는 아니다)

6. 경제적 보안성: PoS방식.

7. 클라이언트: gaiad 등

개방성: 코스모스는 sdk와 텐더민트 모두 코드가 깃허브에 공개되어 있다.

공공성, 중립성: 코스모스는 거버넌스 시스템이 갖추어져 있어, 공공성과 중립성을 추구하고 있다고 볼 수 있다. 하지만 벨리데이터들이 위임받은 토큰의 투표권을 모두 위임받는다는 점과 지금 생태계의 벨리데이터들이 거버넌스에 잘 참여하지 않는 것은 공공성과 중립성을 훼손할 가능성이 있다.

탈중앙화, 검열 저항성, 보안성 : 코스모스는 탠더민트의 PBFT 알고리즘 기반으로 2/3 이상의 정직한 노드가 있으면 안전하고, 벨리데이터들의 토큰 보유 비율을 보면 탈중앙화가 잘 되어 있다고 할 수 있다. 탈중앙화가 잘 이루어져 있는 만큼 외부에 의한 검열에도 안전하지만, 검열의 정의를 넓게 본다면 온체인 거버넌스로 생태계 참여자들이 스스로 검열하는 사건도 있었다. (주노 고래 지갑 압류 등). 또 모든 블록체인은 보안성을 확보하려면 결국 충분한 노드 수가 필요하지만, 코스모스 생태계는 의도적으로 앱 마다 체인을 만들었기 때문에, 앱마다 노드 참여자가 분산된다. 노드 수가 충분한 체인은 안전하겠지만, 그렇지 않은 체인은 위험할 수 있다. 또한 IBC를 통해 피해가 전파될 수도 있다.

블록체인 트릴레마

정리: 코스모스 앱체인 생태계는 전체적으로 보면 참여 노드가 분산된다는 점 때문에, 위험이 있다. 하지만 코스모스 sdk 자체는 개발자들의 메인 네트워크 개발의 허들을 낮춰주고 체인 간의 호환성을 준다는 점에서 긍정적이다. 실제로 코스모스 sdk를 통해 개발된 많은 체인이 있었고, 이들은 앱체인 생태계와 상관없이 자체적으로 큰 생태계를 형성한 체인들이 많다(바이낸스, 테라 등).

마치며

블록체인 업계는 끊임없이 등장하는 새로운 기술과 개념을 팔로우 하기도 힘들다. 처음 보는 기술을 만나 이 기술을 평가하기 어렵다면 언제나 위와 같은 공개 블록체인의 본질적 특성에 관한 질문을 던져보자.

reference:

마스터링 비트코인 — Antonopoulos, Andreas M

마스터링 이더리움 — Antonopoulos, Andreas M

A Prehistory of the Ethereum Protocol — A Prehistory of the Ethereum Protocol

cosmos sdk, tendermint docs

장민혁 | researcher of CURG | mihnhyuk@naver.com

--

--