텐더민트 설명
텐더민트 설명
아티클

텐더민트 설명

중급
2w ago
6m

요약

여러분이 알고 있고, 또 좋아하는 블록체인은 꽤나 폐쇄적인 구조를 취하고 있습니다. 개발자는 제한된 환경 내에서 애플리케이션을 만들거나, 코드를 포크하여 여러분만의 체인을 만들어야 합니다. 그러나 자신만의 체인을 만드는 것은 쉽지 않습니다. 여러분은 네트워크를 시작해야 하고, 사용할 합의 메커니즘도 파악해야 합니다.

텐더민트(Tendermint)는 어떤 언어로든 애플리케이션을 작성할 수 있는 블록체인을 출시하기 위한 오픈소스 소프트웨어입니다. 뿐만 아니라, 다른 블록체인과도 통신할 수 있습니다.


들어가며

암호화폐 또는 블록체인 네트워크를 만드는 데는 데이터베이스를 시작하는 것보다 훨씬 많은 노력이 필요합니다. 이는 보안, 탈중앙, 확장성 간의 인센티브와 절충이 세밀한 균형을 필요로 합니다.
여러 팀들이 가장 강력한 블록체인을 구축하기 위해 다양한 접근 방법을 모색하고 있습니다. 이번 아티클에서는 그러한 접근 방법 중 하나인 텐터민트에 대해 살펴보도록 하겠습니다.


텐더민트에 대해 알아야 할 사항들

여러분이 블록체인에 대해 조금 알고 계신다면, 텐더민트의 많은 부분이 친숙해 보일 것입니다. 더 자세히 살펴보기 전에 몇 가지 주요 개념을 요약해보도록 하겠습니다.


블록체인 구조의 이해

텐더민트는 일종의 블록체인 스택입니다. 비트코인이더리움 같은 것도 마찬가지입니다. 이는 단순히 블록체인 데이터베이스일 뿐만 아니라, 노드의 피어투피어 네트워크이며, 이들의 상호 작용 방식 및 트랜잭션과 스마트 콘트랙트를 통해 수행할 수 있는 재미있는 여러 작업과 관련한 것입니다. 이 때의 목표는 누구도 신뢰하지 않더라도, 모든 이들이 특정 상태(데이터베이스의 스냅샷처럼)에 동의하도록 하는 것입니다.
오늘날 주요 블록체인들은 보통 이를 가능하도록 하는 비밀 소스를 고안해냈습니다. 그러나 이들은 종종 구성 요소가 서로 연결되고 상호 의존적인 소프트웨어 엔지니어링인 단일 구조(monolithic architecture)에 의존합니다. 여러분은 이를 단지 실행하여, 다른 무언가에 연결할 수는 없습니다.
여러분이 유연성을 원한다면, 단일 구조는 좋지 않습니다. 이러한 모델과 반대되는 모듈형 구조(modular architecture)를 사용하면 무언가의 고장을 걱정하지 않으며 개별 요소를 수정할 수 있습니다. 단일 구조에서는 하나를 업그레이드할 때, 모든 구성 요소가 호환되는지 확인해야 합니다. 

이제 이러한 차이를 이해했으므로, 텐더민트 프로토콜에 대해 조금 더 자세히 이야기할 수 있을 것 같습니다.


비잔틴 장애 허용(BFT)

여러분은 비트코인의 중대한 혁신이 비잔틴 장군 문제라 하는 것을 해결했다는 것임을 알고 계실 것입니다. 이 문제에 대해 자세히 다루지는 않을 것입니다(비잔틴 장애 허용 아티클을 참고하시기 바랍니다). 여러분이 알아야 할 사항은 이는 참가자들이 분산화된 환경에서 반드시 커뮤니케이션해야 하는 시나리오를 설명한다는 것입니다. 
이 때의 참가자들은 다른 이들이 거짓말을 하고 있거나 자신들 사이에 전송된 메시지가 수정되고 있는지를 알 수 없습니다. 이러한 문제에도 불구하고 참여자들이 일련의 사실에 동의할 수 있는 경우, 이를 비잔틴 장애 허용(BFT) 시스템이라 합니다.
분산화된 환경에서는 분명 이 문제를 바로 잡는 것이 중요합니다. 비잔틴 장애 허용적이지 않은 암호화폐는 제대로 작동하지 않으며, 그 목적에 부합하지 않게 일종의 중앙화된 조정 주체가 필요할 것입니다. 다른 많은 디지털 통화와 마찬가지로, 비트코인은 작업 증명(PoW) 합의 알고리즘을 사용해 이 문제를 해결합니다.


블록체인의 세 가지 레이어

우리는 단일/모듈형 구조의 차이에 대해 알고 있으며, 탈중앙 암호화폐 네트워크는 비잔틴 장애 허용을 필요로 한다는 것도 알고 있습니다. 이제 블록체인에서 일반적으로 발견되는 레이어인 애플리케이션 레이어, 합의 레이어, 네트워킹 레이어에 대해 알아보겠습니다.
합의 및 네트워킹 레이어는 네트워크 노드가 서로 이야기를 하는 곳이며, 일련의 사실에 동의를 시도하는 곳입니다. 애플리케이션 레이어는 여러분 스스로 무언가를 할 수 있는 곳입니다. 탈중앙 애플리케이션과 이더리움의 스마트 콘트랙트 또는 비트코인의 사용자 정의 트랜잭션을 생각해보시기 바랍니다.



텐더민트 코어

먼저, 용어에 대한 간단한 설명입니다. 우리는 기술적인 부문에만 초점을 맞추고 있기 때문에, “텐더민트”와 “텐더민트 코어(Tendermint Core)”를 호환하여 사용할 것입니다.

그러나 텐더민트는 회사의 이름(백서를 작성한 재권 개발자가 설립)이며, 텐더민트 코어는 회사가 개발하는 실제 소프트웨어입니다. 보다 구체적으로 말하자면, 해당 소프트웨어는 코어 합의 엔진(텐더민트 코어)과 애플리케이션 인터페이스(ABCI)라는 두 가지 주된 요소로 구성됩니다.

텐더민트 코어는 장애 허용을 달성하는 시스템입니다. 이는 기본적으로, 모든 이에게 동시에 동일한 상태를 보여주는 크고 분산화된 컴퓨터입니다. 참여자의 최소 2/3 이상이 정직할 경우, 모든 것이 순조롭게 작동합니다. 그러나 거의 모든 블록체인이 그렇지 않나요? 무엇이 이를 그토록 특별하게 만드는 것일까요?

먼저, 이는 지분 증명(PoS) 합의 메커니즘을 사용합니다. 각 기간에 대해 검증자 집합에서 임의의 노드가 선정됩니다. 해당 노드는 반드시 다음 블록을 제시해야 하며(순차 순환 대기 방식이라 하는 시스템 내에서). 다른 검증자들이 이에 동의하면, 새로운 블록이 추가되고, 체인이 업데이트됩니다. 비트코인 또는 이더리움과 다르게 최종성이 즉각 처리되며, 트랜잭션이 유효한지 확인하기 위해 확인(confirmations)을 기다리지 않아도 됩니다.

그 뿐만이 아닙니다! 텐더민트 코어의 구조는 모듈형이며, 애플리케이션 레이어는 합의 및 네트워킹 레이어와 분리되어 있습니다. 보다 쉽게 말하자면, 여러분만의 애플리케이션 레이어를 스택에 연결할 수 있다는 것입니다. 성가신 인센티브나 합의 알고리즘을 우려하지 않고 말입니다.

최종 사용자에게는 이것이 그다지 흥미롭지 않은 것일 수 있습니다. 그러나 개발자에게는 기존 프레임 워크를 사용할 수 있다는 것은 전체 네트워크를 부트스트래핑하지 않고, 애플리케이션을 구축하는 데 바로 뛰어들 수 있다는 의미입니다. 블록체인 데이터를 통합 레이어에 연결할 수 있기 때문에, 개발자들은 어떠한 언어로도 소프트웨어를 작성할 수 있습니다.

이는 애플리케이션 블록체인 인터페이스 또는 ABCI라 하는 것을 통해 진행됩니다. 이를 라즈베리 파이 컴퓨터의 GPIO 핀이라고 생각해보시기 바랍니다. 여러분은 LED부터 식물을 위한 정교한 스프링클러 시스템에 이르기까지 온갖 종류의 타사 구성품들을 연결할 수 있습니다. 이와 비슷한 방식으로, ABCI는 블록체인과 그 위에서 실행되는 애플리케이션 사이의 경계를 정의합니다.


텐더민트 코어의 장점은 무엇인가요?

애플리케이션 인터페이스와 합의 메커니즘의 분리로 인해 다양한 탈중앙 애플리케이션이 자신의 비즈니스 논리에 프로그래밍 언어를 통합할 수 있는 유연성을 확보하게 되었습니다.

구체적인 실행 예시를 보려면, 이더민트(Ethermint)를 살펴보면 됩니다. 이는 이더리움 코드베이스를 사용하며, 작업 증명 메커니즘을 제거하고, 텐더민트상에 이더리움 가상 머신을 연결한 프로젝트입니다.
이를 통해 몇 가지 흥미로운 일들이 가능합니다. 먼저, 이더리움 개발자들은 간편히 새로운 엔진에 자신의 스마트 콘트랙트를 이동하거나, 솔리디티 언어로 신규 콘트랙트를 작성할 수 있습니다. 이더민트는 이더리움 기능을 제공하는 것 외에도 이더리움 지분 증명처럼 작동하여, 이더리움 2.0캐스퍼 구현이 어떤 모습일지 짐작할 수 있게 합니다.


블록체인 상호운용성

많은 이들은 “블록체인의 인터넷”의 장래성을 보고 텐더민트 기반 프로토콜에 모여들고 있습니다. 암호화폐 세계는 수백 개의 개별 블록체인이 상호 호환될 것을 기대하며 오랫동안 상호 운용성 기능을 기다려왔습니다.
현재, 누구나 애플리케이션별 공개 또는 비공개 블록체인을 만들 수 있는 오픈 소스 프레임워크 코스모스 SDK에서 많은 작업들이 진행되고 있습니다. 이러한 블록체인은 다른 이들과 커뮤니케이션할 수 있는 코스모스 허브(Cosmos Hub)라 하는 것을 통하여 보다 넓은 코스모스 네트워크에 연결될 수 있습니다.
코스모스 SDK를 통해 바이낸스 스마트 체인(BSC), 카바(KAVA), 밴드 프로토콜(Band Protocol), 테라(Terra), 아이리스넷(IRISnet)과 같은 유명 프로젝트들이 구축되었습니다.


마치며

블록체인 엔진인 텐더민트는 개발자부터 최종 사용자에 이르기까지 암호화폐 분야의 많은 이해 관계자들의 관심을 끌고 있습니다.

소프트웨어가 계속해서 관심을 얻게 될 경우, 블록체인 인터넷의 중추 역할을 할 수 있습니다. 우리가 살펴본 것처럼, 이러한 비전을 실현하기 위해 코스모스 SDK를 통해 이미 몇 가지 프로젝트들이 출시되었습니다.

텐더민트, 합의 알고리즘, 블록체인 기술에 대해 더 알아보고 싶으신가요? 아카데미 질문(Ask Academy)을 방문해 보시기 바랍니다. 커뮤니티 구성원들이 여러분의 궁금증을 해결해 줄 것입니다.