코스모스 블록체인 #3 — 텐더민트(Tendermint) (1)

Peter Yoon
Lunamint ATLAS
Published in
6 min readDec 27, 2018

코스모스 프로젝트, 코스모스 허브(Cosmos hub)의 핵심은 무엇일까?

이 질문에 대한 대답은 바로 “텐더민트(Tendermint)와 코스모스-SDK(Cosmos-SDK)”이다. 이 두 가지 소프트웨어가 코스모스 프로젝트의 핵심이고, 이 두 개의 프레임워크(Framework) 위에 다양한 블록체인 기반 비즈니스들이 탄생하는 것이다.

먼저, 코스모스 프로젝트의 심장이라고 할 수 있는 텐더민트에 대해 알아보자.

텐더민트(Tendermint) 로고

텐더민트(Tendermint)는 코스모스 블록체인의 합의 엔진(Consensus engine)으로 코스모스 블록체인이 블록체인으로 동작할 수 있도록 만들어주는 심장이자, 모든 것을 올바르게 처리하는 두뇌와 같은 역할을 한다.

그러므로 코스모스 블록체인의 특징, 성능, 한계는 전적으로 텐더민트 합의 엔진의 특징, 성능, 한계를 따라간다. 즉, 코스모스 블록체인을 이해하고, 가치를 평가하기 위해서는 텐더민트에 대한 이해가 반드시 필요하다.

1. 텐더민트의 특징

텐더민트는 다른 블록체인 합의 엔진과 비교 불가능한 강력한 특성을 가지고 있다. 그 것은 텐더민트 합의 엔진의 경우 블록이 생성될 때 마다 전송이 완전히 완료(One block finality)된다는 것이다.

이 말을 풀어서 해석하면 다음과 같다:

  • 텐더민트 합의 엔진은 합의 후 블록이 만들어지기 때문에 ‘포크(Fork)’가 발생하지 않는다.
  • 텐더민트 합의 엔진 기반의 블록체인 사용자들은 블록체인에 저장된 모든 데이터를 전부 다운 받지 않고, 가장 최근에 생성된 블록 정보를 가져와 사용해도 안전하다. 즉, 블록 데이터의 싱크가 필요 없으며 이를 라이트-클라이언트(Lite-client)라고 한다.

기존의 블록체인은 사용자들이 안전하게 블록체인 기반 서비스를 사용하기 위해 ‘블록체인’에 저장된 모든 블록 데이터를 다운받아야 했다.

만약, 사용자가 모든 블록체인 데이터를 보유하지 않고 블록체인 서비스를 이용하는 경우 취약점을 노린 여러 가지 공격에 노출될 수 있다.

이 때문에 블록체인 기반 서비스를 이용하려는 사용자들은 블록체인 데이터를 모두 내려 받아야하는 불편함을 감수해야 했다.

컴퓨터를 켜서 특정 홈페이지에 접속하는 경우를 생각해보자. 당연히 웹서비스 제공자는 접속한 사용자에게 가장 최근 업데이트된 내용만 전달한다. 하지만 기존의 블록체인은 사용자가 접속하지 않은 시간 동안 홈페이지에 어떤 변화가 있었는지를 전부 다운 받은 뒤 최신 화면을 볼 수 있는 매우 비효율적인 시스템이다.

이러한 문제가 발생하는 가장 큰 이유는 기존 블록체인이 ‘선-블록 생성, 후 합의'의 메커니즘을 가지고 있기 때문이다. 조건을 달성한 노드에 의해서 ‘생성된 블록이 네트워크를 통해 전파’되고, 시간이 지남에 따라 합의된 방식에 따라 블록이 ‘확정'되는 것이다.

기존의 블록체인들은 ‘포크'가 발생할 수 있기 때문에 충분한 시간을 기다려야 하며, 사용자가 블록체인에 기록된 모든 데이터를 보유해야 안전하게 블록체인 기반 서비스를 사용할 수 있는 문제가 있다.

즉, ‘블록이 생성된 후 시간이 지날수록 더 믿을 수 있는 블록’이 되는 것이다. 이 것이 기존 블록체인이 가진 ‘선-블록 생성, 후-합의' 메커니즘이다.

거래소에 비트코인이나 이더리움을 입금하는 경우를 생각해보자. 비트코인을 입금하는 경우 1컨펌(1 Confirm)을 기다려야 하고, 이더리움을 입금하는 경우 보통 수십 컨펌을 기다려야 한다. 왜냐하면 거래소가 ‘안전하게 암호화폐 입금을 처리 하기 위해서는 충분한 시간을 기다려야 하기’하기 때문이다.

하지만 텐더민트의 경우 기존 블록체인들과는 반대로 ‘선-합의, 후-블록 생성'의 메커니즘을 가지고 있다.

텐더민트는 블록을 생성하기 전 블록 생성에 참여하는 노드(node)들이 먼저 ‘합의'를 한다. 그리고 합의가 완료된 뒤 블록을 생성해 네트워크에 전파한다. 이러한 합의 메커니즘 때문에 텐더민트는 포크가 발생하지 않는다.

텐더민트 합의 엔진은 포크가 발생하기 않기 때문에 ‘가장 최근에 생성된 블록'에 저장된 데이터만 확인하면 된다.

포크가 발생하기 않기 때문에 텐더민트 기반의 블록체인은 가장 최근에 생성된 블록에 기록된 정보를 가져와도 안전하다. 즉, 사용자들은 블록데이터를 전부 보유하지 않아도 블록체인 기반 서비스를 안전하게 이용 수 있게되며, 거래소의 경우 텐더민트 기반 체인은 1 컨펌에 입금 처리를 완료해도 아무 문제가 발생하지 않는다.

기존 블록체인의 경우 ‘시간이 지날수록 확률적으로 더 안전해지는' 시스템이다. 가장 최근에 생성된 블록의 신뢰도는 시간이 지남에 따라 점점 증가한다. 즉, 블록에 대한 신뢰도가 시간이 지남에 따라 99.9% 혹은 99.99%로 증가할뿐 100%에 도달할 수 없다.

텐더민트의 경우 ‘합의'가 완료되지 않으면 ‘블록이 생성되지 않기' 때문에 일단 생성된 블록은 100% 신뢰할 수 있다. 가장 최근에 생성된 블록을 100% 신뢰할 수 있기 때문에 텐더민트를 기반으로 ‘금융 인프라'를 만드는 것이 가능해진다.

99.99%나 99.999%의 확률론적인 안전성을 가진 기존의 블록체인을 바탕으로 금융 인프라를 만드는 것은 사실상 불가능하다. 블록체인 기반의 금융 인프라가 형성되기 위해서는 생성된 블록에 대해 100%의 신뢰성이 보장되는 합의 엔진이 반드시 요구된다. 그리고 그 필요를 충족시키는 합의 엔진이 텐더민트이다.

계속..

--

--