코스모스와 비트코인 ​​및 이더리움 비교
以太坊爱好者
2019-06-22 12:39
本文约11287字,阅读全文需要约45分钟
블록체인의 여러 시대.

편집자 주: 이 기사의 출처는이더리움 애호가편집자 주: 이 기사의 출처는Preethi Kasireddy이더리움 애호가

(WeChat ID: ethfans), 원저자: Preethi Kasireddy, 출처:

편집자 주: 이 기사는 코스모스 네트워크의 블록체인과 비트코인 ​​및 이더리움을 자세히 비교합니다. 저자는 블록체인 시스템의 스택 레이어에서 시작하여 서로 다른 스택 레이어에서 비트코인과 이더리움의 기술적 포인트를 분석하고 마지막으로 코스모스 네트워크의 블록체인으로 돌아와 개념 설명이 특히 명확하여 보기 드문 설명 기술입니다.

목차


  • 글이 너무 길어서 글 맨 앞에 목차를 첨부했습니다.

  • 목차

  • 코스모스란?

  • 블록체인 구조 소개

  • 비트코인 스택 레이어 구조

  • 이더리움 스택 레이어 구조

  • 비트코인 및 이더리움에서 애플리케이션 구축

  • 코스모스 블록체인 구조

  • 코스모스 네트워크 계층

  • 결론적으로


코스모스 응용 계층

결론적으로

암호화폐 산업은 결코 멈추지 않습니다.

모든 것은 2010년 비트코인의 출현으로 시작되었습니다. 비트코인이 처음 나왔을 때 모두가 비트코인이 디지털 통화의 성배라고 생각했습니다. 한때 불가능하다고 여겨졌던 것이 이제 현실이 되었습니다. 최초의 P2P(Peer-to-Peer) 결제 네트워크가 등장했습니다.

오늘날에도 사물에 대한 신뢰는 가장 파악하기 어렵고 가장 소중한 자산으로 남아 있습니다. 비트코인은 최초의 "무신뢰" 시스템을 만들어 이 문제를 우회했습니다. 그러나 이것은 시작에 불과합니다.

그 이후로 Bitcoin은 Ethereum, Lightning Network, EOS, Tezos, Maker 등 일련의 새로운 분산 시스템 및 금융 인프라로 이어진 암호화의 광범위한 혁신을 위한 촉매제가 되었습니다. 목록은 계속 증가하고 있습니다.

그러나 한 가지 프로젝트가 눈에 띕니다. 코스모스입니다.

블록체인 분야에서 코스모스는 "신생아"입니다. 그 개념은 한동안 있었지만 개발 팀은 Cosmos 설계 및 구현의 정확성을 보장하기 위해 뒤에서 천천히 발전해 왔습니다. 이로 인해 Cosmos는 최근에야 공개적으로 출시되었습니다.

따라서 많은 사람들이 코스모스 프로젝트를 보고 이해하지 못하는 것은 놀라운 일이 아닙니다. 단순히 코스모스 관련 자료를 탐색하는 것만으로는 코스모스를 직관적으로 이해할 수 없지만 더 많은 질문을 하게 될 것입니다.

코스모스란?

코스모스는 어떻게 작동합니까?

코스모스는 비트코인, 이더리움과 어떻게 다른가요?

코스모스의 특징은?

저는 거의 2년 동안 Cosmos 팀을 알고 있었습니다. 솔직히 그들이 무엇을 하는지 처음 들었을 때 나는 그 누구 못지않게 그 개념에 대해 무지했습니다.

하지만 코스모스에 대해 더 많이 알게 되면서, 저는 그것에 대해 많이 감사하기 시작했습니다. 그리고 저는 단지 관심을 끌기 위해 이 말을 하는 것이 아니라 정말 마음에서 우러나오는 말입니다.

Cosmos에 너무 매료되어 TruStory 앱을 Cosmos 블록체인 앱으로 구축하기로 결정했습니다. (막간: 왜 이런 결정을 내렸는지 추후 기사에서 자세히 설명하겠습니다.)

여전히 우주에 대해 많은 혼란이 있습니다. 그래서 나는 그것을 위해 기사를 쓰기로 결정했습니다. 독자들이 코스모스가 무엇인지, 블록체인 세계에서 차지하는 위치에 대해 더 깊이 이해하기를 바랍니다.

시작할 준비가 되셨습니까? 마음을 비우고 사고 모자를 쓰고 버클을 채우십시오. 우리는 운전할거야

코스모스란?

코스모스는 자신을 이렇게 정의합니다.

"각각 BFT 합의 알고리즘(예: Tendermint 합의)을 사용하는 여러 개의 독립적인 병렬 블록체인으로 구성된 분산형 네트워크입니다."

와우, 정말 한 입! 이 정의를 이해하기 쉬운 부분으로 나누어 보겠습니다.

"독립적인 병렬 블록체인의 분산 네트워크"

나는 독자들이 이미 블록체인에 대해 많이 알고 있다고 가정하고 있습니다! 그러나 간단히 요약하면 다음과 같습니다.

간단히 말해서 블록체인은 여러 컴퓨터에 분산된 데이터베이스이며 각 컴퓨터의 데이터베이스는 동일한 상태를 유지합니다. 즉, 각 컴퓨터의 데이터베이스에는 완전히 동일한 데이터가 포함되어 있습니다. 이 컴퓨터들은 함께 "블록체인 네트워크"로 알려진 것을 구성합니다.

비트코인과 이더리움은 모두 블록체인이며, 코스모스는 병렬로 실행되는 많은 블록체인으로 구성된 블록체인 네트워크입니다.

내가 방금 말한 내용을 완전히 이해할 수 없다면 Cosmos의 작동 방식에 대해 자세히 알아보기 전에 블록체인에 대한 기본 사항을 더 읽어보는 것이 좋습니다. (편집자 주: 중국어 번역은 "도대체 블록체인이란 무엇인가" 기사 끝에 있는 하이퍼링크를 참조하십시오.)

"각 블록체인은 BFT 합의 알고리즘을 채택합니다."

BFT는 "Byzantine Fault-Tolerant"의 약자입니다. 비잔틴 내결함성 블록체인은 네트워크의 일부 노드가 다운되거나 악을 행할 때(소위 "비잔틴 노드") 네트워크가 여전히 "보안" 및 "활동" 속성을 갖도록 보장할 수 있습니다. 보안 및 활동은 블록체인 네트워크의 각 노드가 동일한 상태를 유지하도록 보장할 수 있습니다.

Interlude: Safety와 Liveness가 무엇인지 더 깊이 이해하려면 분산 합의에 대한 제 기사를 읽어보세요. (편집자 주: 중국어 번역은 "분산 합의 작동 방식, 2부" 기사 끝에 있는 하이퍼링크를 참조하십시오.)

따라서 "BFT 합의 알고리즘"은 컴퓨터 간의 통신 및 조정을 정의하여 블록체인 비잔틴 내결함성을 만드는 알고리즘입니다. Cosmos 네트워크의 모든 블록체인은 일종의 BFT 합의 알고리즘을 사용합니다.

비트코인과 이더리움의 합의 알고리즘은 일반적인 BFT 알고리즘이 아닙니다. 따라서 그들은 코스모스 네트워크에서 블록체인의 정의에 맞지 않습니다. (Byzantine Fault Tolerant는 아니지만 Bitcoin 및 Ethereum과 같은 블록체인이 몇 가지 추가 단계만으로 Cosmos 네트워크에 가입할 수 있다는 점은 주목할 가치가 있습니다. 이 수수께끼를 발견하더라도 걱정하지 마십시오. 이에 대해서는 나중에 더 깊이 연구하십시오.)

막간: 아직도 BFT가 무엇인지 모른다면 이 기사에서 아주 명확하게 썼습니다. (편집자 주: 중국어 번역은 "How Distributed Consensus Works, Part-3" 기사 끝에 있는 하이퍼링크를 참조하십시오.)

"텐더민트 합의 알고리즘"

텐더민트는 코스모스 개발자들이 제안하고 구축한 BFT 합의 알고리즘입니다. Cosmos 네트워크의 블록체인은 Tendermint 합의 또는 기타 BFT 합의 알고리즘을 사용할 수 있습니다. 이 기사의 뒷부분에서 Tendermint에 대해 자세히 알아볼 것입니다.

간단히 말해 Cosmos 네트워크는 병렬로 실행되는 여러 개의 독립적인 Byzantine 내결함성 블록체인으로 구성된 생태계입니다. 이러한 블록체인은 독립적으로 작동하며 다른 블록체인과 상호 운용할 수 있습니다.

이제 "왜 블록체인이 상호 운용됩니까?"라고 생각할 수 있습니다.

좋은 질문! 곧 다룰 것입니다. 하지만 먼저 블록체인의 구조를 검토해야 합니다.

블록체인 구조 소개

코스모스 생태계에서 블록체인이 어떻게 작동하고 상호 운용되는지 살펴보기 전에 블록체인 구조의 기본을 살펴보겠습니다.

앞서 논의한 바와 같이 블록체인은 다중 머신 복제 데이터베이스이며 각 컴퓨터에서 동일한 데이터를 유지합니다. 이러한 유형의 분산 시스템은 "복제된 상태 머신"이라고도 합니다.

복제된 상태 머신은 다중 머신 복제된 결정적 상태 머신이지만 네트워크의 각 컴퓨터는 동일한 상태를 유지하므로 단일 머신처럼 작동합니다.

익숙한 것 같죠? 위의 블록체인 정의를 다시 살펴보면 여기서 정의는 "데이터베이스"를 "상태 기계"로, "데이터"를 "상태"로 바꾸는 것입니다.

"결정론적"은 특정 입력이 주어지면 상태 머신이 항상 동일한 출력을 생성하는 것으로 간단히 이해할 수 있습니다. 블록체인 시스템에서 "결정성"은 주어진 상태에서 시작하여 동일한 트랜잭션 시퀀스를 수행하면 항상 동일한 최종 상태로 끝날 것임을 의미합니다.

복제된 상태 머신은 특정 상태에서 시작합니다. 각각의 유효한 트랜잭션은 시스템 상태를 다음 상태로 전환합니다(이는 데이터베이스의 항목을 업데이트하는 것과 동일합니다. 항목을 업데이트하면 데이터베이스가 업데이트된 데이터 항목을 포함하는 새 상태로 마이그레이션됩니다).

복제된 상태 시스템에는 개념적으로 세 가지 스택 계층이 있습니다.

1) 애플리케이션 계층

애플리케이션 계층은 트랜잭션이 발생한 후 상태 전환을 정의하고 상태 시스템 상태를 업데이트하는 역할을 합니다.

2) 네트워크 계층

네트워크 계층은 하나의 상태 시스템에서 실행된 트랜잭션을 네트워크의 다른 모든 상태 시스템으로 전파하는 역할을 합니다.

3) 합의 계층

합의 계층은 트랜잭션이 실행된 후 각 상태 머신이 동일한 상태를 저장하도록 보장하는 알고리즘으로 구성됩니다(즉, 상태 머신은 존재하지 않는 트랜잭션을 위조할 수 없음).

3a) 안티 시빌 레이어

분산된 공용 네트워크에서 실행하려는 복제된 상태 머신은 단일 상태 머신이 네트워크를 손상시키지 않도록 하기 위해 네 번째 계층("Sybil 저항 계층")도 필요합니다. 이 계층이 없으면 상태 머신은 많은 거짓 ID를 생성하여 투자에 비례하지 않는 영향력이나 이익을 얻음(즉, Sybil 공격 시작)으로써 상태를 조작할 수 있습니다.

요약하면 애플리케이션 계층은 상태 정의 및 상태 전환 관리를 담당합니다. 네트워크 및 합의 계층은 각 시스템의 상태를 일관되게 유지(즉, 네트워크의 각 데이터베이스에 있는 데이터가 일관되도록 보장)할 책임이 있습니다. Anti-Sybil 계층은 (분명히) Sybil 공격을 피하는 역할을 합니다.

이제 이러한 스택 레이어가 비트코인 ​​및 이더리움 블록체인에서 어떻게 정의되고 구현되는지 살펴보겠습니다.

비트코인 스택 레이어 구조

1) 애플리케이션 계층

Bitcoin의 주요 응용 프로그램은 P2P 거래입니다. 비트코인은 트랜잭션을 정의하고 실행하기 위해 Script(누적된 비Turing-complete 언어)를 사용합니다. 송금인이 트랜잭션을 통해 비트코인을 보낼 때 송금인은 스크립트를 사용하여 누가 자금을 통제하는지 암호화합니다. 스크립트에는 발신자가 비트코인을 사용하기 위해 충족해야 하는 조건을 지정하는 데 사용할 수 있는 일련의 opcode 또는 명령이 포함되어 있습니다.

2) 네트워크 계층

발신자가 수신자에게 비트코인을 보낼 때 광부가 블록에 포함할 수 있도록 네트워크에 전송이 브로드캐스트되어야 합니다. 비트코인은 "Gossip 프로토콜"을 사용하여 각 노드가 수신하는 모든 새 블록 또는 트랜잭션을 이웃(피어)에게 전송하도록 합니다. Gossip 프로토콜은 모든 노드 간에 메시지 배포를 보장하는 P2P 프로토콜입니다. 비트코인 네트워크의 모든 노드는 새로 수신한 유효한 트랜잭션을 이웃 노드로 즉시 보내므로 패키징할 트랜잭션이 몇 초 내에 P2P 네트워크를 통해 대부분의 노드로 전파될 수 있습니다.

3) 합의 계층

트랜잭션이 네트워크에 전달된 후 전송을 완료하려면 블록체인에 추가해야 합니다(즉, 네트워크의 컴퓨터가 트랜잭션을 실행하도록 함). 트랜잭션을 검증하고 블록으로 묶는 프로세스를 "Nakamoto Consensus"라고 합니다. Nakamoto Consensus의 작동 원리는 다른 포럼이나 기사에서 찾을 수 있습니다. 이 기사는 더 깊이 파고들고 싶다면 좋은 입문서입니다.

3a) 안티 시빌 레이어

Nakamoto 합의는 Sybil 공격을 방지하기 위해 "작업 증명"에 의존합니다. 기본적으로 새로운 블록을 생성하는 데 필요한 계산 능력으로 인해 Bitcoin 합의 프로토콜 자체가 Sybil 공격에 저항할 수 있습니다. 광부는 다음 블록을 생성하기 위해 많은 컴퓨팅 성능이 필요하기 때문에 많은 컴퓨팅 성능(및 비용)을 투자하지 않고는 여러 ID를 "위조"할 수 없습니다.

이더리움 스택 레이어 구조

1) 애플리케이션 계층

Bitcoin과 달리 Ethereum은 원래 분산 응용 프로그램을 실행할 수 있는 플랫폼으로 설계되었습니다. Ethereum에는 개발자가 스마트 계약을 작성하여 분산 응용 프로그램의 특정 기능을 정의할 수 있는 고급 언어(예: Solidity)가 포함되어 있습니다. EVM(Ethereum Virtual Machine, Ethereum Virtual Machine)은 Ethereum 애플리케이션 계층의 핵심입니다. EVM은 EVM 컴파일러를 사용하여 스마트 컨트랙트 코드를 바이트코드로 컴파일하고 사용자는 바이트코드를 트랜잭션 형태로 블록체인에 업로드할 수 있으며 EVM은 이 바이트코드를 실행하여 분산 응용 프로그램을 변경할 수 있습니다. 이더리움 노드에 저장된 이 스마트 계약). 이더리움 네트워크의 모든 노드가 EVM을 실행하기 때문에 모든 노드의 상태가 일관되게 보장됩니다.

2) 네트워크 계층

비트코인과 유사하게 이더리움도 노드가 이웃과 통신할 수 있도록 하는 가십 프로토콜을 사용합니다.

3) 합의 계층

합의를 달성하기 위해 Ethereum은 Nakamoto 합의와 유사한 "Ethash"를 사용하지만 Ethash는 Nakamoto 합의와 몇 가지 중요한 차이점이 있습니다. Ethereum 합의 알고리즘의 작동 방식을 이해해야 하는 경우 이전 기사 중 하나를 읽어보십시오. (편집자 주: 중국어 번역은 기사 끝에 있는 "How Ethereum Works" 하이퍼링크 참조)

3a) 안티 시빌 레이어

Bitcoin과 마찬가지로 Ethash는 Sybil 공격에 저항하기 위해 Proof of Work(지금까지는 번역가의 메모: Ethereum 2.0이 PoS 합의 메커니즘으로 전환될 예정임)에 의존합니다.

비트코인 및 이더리움에서 애플리케이션 구축

위의 내용을 통해 블록체인 구조에 대해 어느 정도 이해하셨기를 바랍니다. "Bitcoin" 또는 "Ethereum"에 대해 이야기할 때 이러한 이름은 관련된 모든 스택 계층을 나타냅니다. Bitcoin과 Ethereum은 이러한 스택 레이어로 구성된 전체이기 때문입니다.

기본 Ethhash 합의 계층에서 Ethereum 스마트 계약을 분리할 수 없으므로 이 두 가지 주제를 별도로 논의하는 것은 이치에 맞지 않습니다. 비트코인도 마찬가지입니다. Nakamoto 합의 및 작업 증명을 사용하지 않고는 비트코인 ​​거래를 수행할 수 없습니다.

반면 Cosmos는 약간 다른 모델을 따릅니다. 즉, 합의 및 네트워크 계층에서 애플리케이션 계층을 분리합니다.

코스모스의 목표는 블록체인 네트워크를 구축하는 것이기 때문에 이렇게 설계하는 것이 타당합니다. 이 블록체인 네트워크에서 각 블록체인은 독립적이며 자체 요구 사항과 요구 사항(즉, 자체 애플리케이션)이 있습니다. 이 경우 모든 블록체인에 대해 하나의 응용 프로그램 계층을 제안하는 것은 불가능합니다. 몇 가지 예를 통해 그 이유를 살펴보겠습니다.

비트코인의 한계를 보여주는 예

통화 애플리케이션을 구축한다고 가정해 보겠습니다. 이 경우 Bitcoin Scrypt와 같은 간단한 스택 기반 스크립팅 언어가 최선의 선택입니다. Bitcoin 스크립팅 언어는 한 주소에서 다른 주소로 값을 전송하는 데 적합할 뿐만 아니라 매우 간단하고 Turing-complete가 아닙니다.

따라서 Turing-complete 프로그래밍 언어에 심각한 영향을 미칠 수 있는 다양한 유형의 보안 결함에 덜 취약합니다. 이것이 바로 돈과 가치 저장소를 다룰 때 우리가 원하는 것입니다. 그러나 이러한 단순성은 한계가 있습니다.

Scrypt로 더 복잡한 작업(예: 분산 예측 시장)을 수행하는 것은 매우 어렵습니다. Bitcoin 스크립팅 언어는 실행 가능한 코드의 복잡성에 의해 제한될 뿐만 아니라 개발자에게 매우 비우호적입니다. 설상가상으로 비트코인 ​​블록체인의 거래는 처리 속도가 느립니다(초당 약 7건의 거래). 따라서 비트코인 ​​블록체인에서 직접 높은 트랜잭션 처리량이 필요한 애플리케이션을 구축하는 것은 비현실적입니다.

Ethereum의 한계에 대한 예

Bitcoin과 달리 Ethereum의 EVM 및 스마트 계약 언어(Solidity)는 보다 유연한 응용 프로그램을 지원하도록 설계되었습니다. Solidity는 Turing-complete 프로그래밍 언어이므로 이론적으로 임의의 알고리즘 복잡성 코드를 실행할 수 있습니다.

Solidity는 오류가 발생하기 쉽고 보안 공격에 취약하기 때문에 실제 응용 프로그램에서 Solidity를 사용하여 임의의 복잡한 프로그램을 개발하는 것은 매우 어렵습니다. 이 특성은 보안이 가장 중요한 가치 전송을 처리하는 애플리케이션과 상반됩니다.

또한 스마트 계약은 업그레이드가 매우 어렵기 때문에 반복적인 개발이 매우 어렵습니다. 컨트랙트가 체인에 배치되면 원활하게 실행될 수 있도록 기도하는 것뿐입니다! 비트코인과 마찬가지로 이더리움의 트랜잭션 처리 속도는 매우 낮기 때문에(초당 약 15 트랜잭션) 이더리움 블록체인에서 높은 트랜잭션 처리량이 필요한 애플리케이션을 구축하는 것은 실용적이지 않습니다.

Cosmos는 이러한 목적을 위해 몇 가지 큰 희생을 치르긴 했지만 이러한 실질적인 비즈니스 요구를 충족하기 위해 제안되었습니다. 다음에 구체적인 내용을 살펴보겠습니다. 그러나 그 전에 코스모스 블록체인의 3개 스택 레이어가 어떻게 생겼는지 이해해야 합니다.

코스모스 블록체인 구조

먼저 코스모스에서 애플리케이션을 개발하는 것이 비트코인이나 이더리움을 사용하는 것과 어떻게 다른지 더 잘 이해하기 위해 합의 레이어부터 시작하여 코스모스를 살펴볼 것입니다.

코스모스 컨센서스 레이어

Cosmos 네트워크의 블록체인은 Tendermint 합의 알고리즘을 사용합니다. 텐더민트는 2014년에 탄생한 오픈소스 프로젝트로 "비트코인 작업 증명(PoW) 합의 알고리즘의 속도, 확장성, 환경 문제를 해결하기 위해 설계되었습니다."

Tendermint 합의 알고리즘은 "응용 프로그램에 구애받지 않는 합의 엔진"입니다. 본질적으로 이것은 모든 블록체인이 비잔틴 내결함성인 Tendermint 합의 알고리즘을 사용할 수 있고 PoS 알고리즘을 사용하여 Sybil 공격에 저항할 수 있음을 의미합니다.

또 다른 많은 전문 용어! 우리는 그것에 대해 이야기했습니다.

검토하자면 트랜잭션이 실행된 후 상태 머신에 저장된 상태가 일관성이 있는지 확인하기 위해 합의 알고리즘이 존재하며 Tendermint 합의 알고리즘은 "모든 노드가 다음 블록에서 합의에 도달할 수 있도록 허용"하는 규칙을 정의합니다.

검증자

상관 계수와 규칙이 어떻게 작동하는지 봅시다!

검증자

상태 합의에 도달하는 책임이 있는 노드를 "검증자"라고 합니다. 전체 네트워크가 합의에 도달하도록 기꺼이 참여하는 노드는 검증자가 될 수 있으며, 그 대가로 검증자는 거래 수수료와 블록 보상을 받게 됩니다. Tendermint는 이러한 유효성 검사기의 투표를 집계하여 다음 블록의 올바른 상태를 결정합니다.

스테이킹으로 시빌 공격에 맞서기

각 유효성 검사기의 투표에는 고유한 투표 가중치가 있으며, 일반적으로 제네시스 블록이 생성될 때 또는 실행이 시작된 후에 애플리케이션 계층 개발자가 설계한 일부 논리에 따라 투표 가중치가 결정됩니다. 일반적으로 투표의 가중치는 "채권"이라고도 하는 검증자(담보)에 의해 시스템에 잠긴 토큰의 양에 따라 결정됩니다.


  • 의견 일치

  • 규칙에 따르면 검증자는 라운드의 각 블록에 대한 합의에 도달해야 합니다. 각 라운드는 Propose, Prevote, Precommit의 세 가지 기본 단계와 Commit, NewHeight의 두 후속 단계로 구성됩니다. 추상적인 관점에서 유효성 검사기는 다음 프로토콜 규칙에 따라 다음 높이에서 사용할 블록을 공동으로 결정합니다.

  • 첫 번째는 지정된 검증자가 블록을 제안하는 제안 단계입니다. 각 라운드의 제안자는 투표 가중치에 비례하여 정렬된 목록에서 결정론적으로 선택됩니다.

  • 그런 다음 사전 투표 단계가 옵니다. 각 유효성 검사기는 각자의 사전 투표를 방송합니다.

  • 라운드의 블록이 사전 투표의 2/3 이상을 받으면 "폴카"라고 합니다. "폴카"가 나타나면 바로 다음 단계로 이동하십시오.

  • 커밋 전 단계에 들어가면 각 유효성 검사기는 커밋 전 투표를 브로드캐스트합니다.


특정 블록이 사전 투표의 2/3 이상을 받으면 커밋 단계에 들어가 블록을 블록체인에 추가하고 블록 높이를 높입니다. 새로운 블록이 블록체인에 추가될 때마다 블록체인의 블록 높이는 +1입니다.


  • 실패하면 사전 투표 단계 또는 사전 커밋 단계로 돌아갑니다.

  • 어떤 높이에서든 블록을 커밋하려면 한 라운드 이상의 투표가 필요할 수 있습니다. 다음과 같은 상황이 발생할 수 있기 때문입니다.

  • 지정된 "제안자"는 블록이 제안되어야 할 때 오프라인 상태가 됩니다.


제안자가 제안한 블록이 사전 정의된 일부 규칙을 위반합니다.

Tendermint는 블록체인이 블록을 생성하는 데 지연이 발생하지 않도록 타임아웃 메커니즘에 의존합니다. 제안된 블록이 타임아웃 전에 사전 투표의 2/3 이상을 받지 못하면 새로운 제안자는 제안된 블록 프로세스를 다시 진행합니다.

계약에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

일반적으로 Tendermint는 Bitcoin의 Nakamoto Consensus 및 Ethereum의 Ethash와 다른 경로를 선택했습니다.몇 가지 주요 비교를 해 보겠습니다.

결정론적 대 개연성

Nakamoto Consensus 및 Ethash와 같은 확률적 합의와 달리 Tendermint는 "아마도" 완결된 상태인 Bitcoin의 블록과 달리 Tendermint의 각 블록이 완결된다는 결정론적 합의입니다.

Nakamoto 컨센서스를 검토해 보겠습니다. 블록은 항상 "미정" 상태입니다. 블록이 "가장 긴 체인"에 있는지 확인해야만 블록이 완료되고 있음을 확신할 수 있습니다. 이것이 비트코인 ​​트랜잭션이 대기해야 하는 이유입니다. "6 블록 확인"용.

Tendermint에서는 검증자가 성공적으로 투표하고 커밋한 직후 블록이 확인됩니다.

고정 유효성 검사기 대 변수 유효성 검사기

Nakamoto Consensus 및 Ethash를 통해 채굴자는 다른 채굴자가 미리 알 필요 없이 언제든지 가입 또는 탈퇴를 선택할 수 있습니다. 반대로 Tendermint 합의는 공개 키로 식별되는 사전에 알려진 고정된 검증자 집합을 유지해야 합니다.

리더 대 리더 없음

Nakamoto Consensus와 Ethash는 다음 블록을 제안할 지정된 리더가 없습니다(즉, 모든 채굴자가 다음 블록을 채굴할 수 있음). 반면에 Tendermint는 다음 블록을 제안할 책임이 있는 리더 또는 제안자를 선출합니다.

명시적 대 모호한 시간 제한 메커니즘

Nakamoto Consensus와 Ethash는 채굴자가 블록을 생산할 수 있도록 보장하기 위해 타임아웃 메커니즘을 사용하지 않는 반면, Tendermint는 블록체인 블록 생산 프로세스가 지연되지 않도록 명확한 타임아웃 메커니즘을 가지고 있습니다.

100명의 검증자 대 1000명의 검증자

Tendermint는 전통적인 합의 합의 알고리즘을 따르며 각 유효성 검사기는 서로 통신해야 합니다. 통신 오버헤드를 고려할 때 Tendermint는 비트코인이나 이더리움과 같은 검증자를 무한정 늘릴 수 없습니다. Tendermint 합의는 100명의 검증자를 예약합니다.

따라서 텐더민트의 단점 중 하나는 모든 검증자에 대한 사전 지식이 필요하고 비트코인이나 이더리움과 달리 검증자가 언제든지 가입하거나 떠날 수 없다는 것입니다.

또한 Tendermint는 통합된 시계를 유지하기 위해 전체 시스템이 필요합니다.

텐더민트는 비트코인보다 검증자가 적고 검증자 세트에 대한 사전 지식이 필요하므로 일부 사람들은 텐더민트 합의 프로토콜이 "충분히 분산되지 않았다"고 의문을 가질 수 있습니다.

그러나 분권화는 의견의 문제입니다. 자, 부끄러워하지 않고 제가 말하고 싶은 것은 탈중앙화는 목표 자체가 아니라 어떤 목표를 달성하기 위한 수단이라는 것입니다.

검증자 세트에 대한 고정된 사전 지식을 요구하는 Tendermint의 보수적인 접근 방식은 시스템 파괴 비용이 충분히 높고 공격자에 대한 방어 및 처벌이 있는 한 많은 경우(또는 대부분의 경우)에서 실현 가능하다고 생각합니다. .

예측 시장의 예로 돌아가면 분산형 예측 시장 응용 프로그램은 건전한 통화 또는 가치 저장 응용 프로그램과 동일한 수준의 분산화를 가질 필요가 없으며 10, 20 또는 100개의 유효성 검사기로 충분하다고 말하고 싶습니다. 계속하다.

TruStory를 예로 들면, 우리는 Cosmos SDK를 사용하여 백엔드 애플리케이션 로직을 구축하고 애플리케이션의 상태와 로직을 블록체인에 저장합니다. 반면 프런트 엔드는 어느 정도 비공개입니다. Cosmos SDK를 사용하면 선을 보상하고 악을 처벌하는 시스템 구축 시스템에 인센티브를 부여하고 데이터 레이어를 투명하게 표시하며 사용자가 네트워크의 소유권과 거버넌스를 공유하고 향후 문제를 공동으로 결정하고 악의적인 사용자를 쫓아내고 사용자를 위한 네트워크를 설계합니다. 개인 취향에 따라 레이어 또는 기본 레이어. 개발자의 경우 백엔드 블록체인 논리를 기반으로 자체 개발 도구 및 서비스를 구축할 수도 있습니다. 따라서 트랜잭션을 실행하고 확인하는 10명 또는 100명의 검증자가 있으면 사용자와 개발자의 투명성, 소유권 및 책임 요구 사항을 보장할 수 있습니다.

Tendermint의 "고정되고 미리 알려진 검증자 세트 선택"의 이점을 이해할 수 있다면 다른 방법으로는 달성할 수 없는 이러한 마법 같은 기능에 감탄하게 될 것입니다.

안전과 활동

Tendermint의 프로토콜은 보안과 활성을 보장합니다. 검증자의 투표 가중치의 2/3 이상이 Byzantine 검증자의 손에 있지 않다고 가정(즉, 검증자의 2/3 이상이 합의를 준수함), 즉 1/3 미만 투표가 악의적인 경우 프로토콜은 네트워크의 보안 및 활동을 보장할 수 있습니다(즉, 검증자는 동일한 블록 높이에서 충돌하는 블록을 제안하지 않으며 블록체인은 항상 정상적으로 블록을 생성합니다).

고성능

텐더민트 컨센서스의 블록 생성 시간은 1초 정도로 낮을 수 있어 초당 수천 건의 트랜잭션을 처리하는 속도에 도달할 수 있으므로 텐더민트는 빈번한 트랜잭션이 필요한 애플리케이션에 더 적합합니다.

즉시 확인

블록체인 세계에서 완결성은 일단 블록이 체인에 제출되면 해당 블록까지 전체 블록체인의 상태를 결정할 수 있음을 의미합니다.

앞서 언급한 바와 같이 Nakamoto 합의는 확률론적 특성을 가지고 있으므로 최종성을 보장할 방법이 없습니다. 거래가 있는 포크 체인이 대부분의 채굴자가 해당 포크에서 여전히 채굴하고 있을 확률을 기반으로 한 합의 체인임을 보장할 수 있습니다.

그러나 Tendermint는 유효성 검사기가 각 블록에 투표하고 완료하도록 요구합니다. 따라서 우리는 1/3 미만의 악의적인 유효성 검사기로 트랜잭션을 "즉시 확인"할 수 있다고 말할 수 있습니다. 블록이 생성되면 사용자는 트랜잭션이 확인되었음을 알 수 있습니다.

책임 제도

Tendermint는 PoS를 Sybil 방지 메커니즘으로 사용합니다. 즉, 노드가 여러 개의 가짜 계정을 만들어 시스템을 속일 수 없도록 하기 위해 유효성 검사기가 토큰(즉, "본드")을 스테이킹하도록 요구합니다.

PoS는 PoW보다 에너지 효율적입니다(PoW의 증명은 채굴자가 다음 블록의 해시를 해결하기 위해 소비하는 컴퓨팅 성능에서 나옵니다).

Tendermint는 무관심한 문제를 피하기 위해 예치금을 삭감하여 프로토콜 규칙을 위반하는 검증자(예: 충돌하는 블록에 대한 투표 및 검증되지 않은 투표 브로드캐스팅)를 위반하는 검증자에게 불이익을 줍니다. 보다 구체적으로, 프로토콜에는 특정 블록에 투표할 때 각 유효성 검사기가 수행할 수 있는 작업을 규제하는 "잠금 규칙"이 있습니다. 예를 들어 검증자가 투표를 사전 커밋하면 해당 블록에서 "잠금"됩니다. 검증자는 다음 라운드 조각에서 다른 블록 폴카를 만들고자 하는 경우에만 다른 블록을 잠금 해제하고 사전 커밋할 수 있습니다. 잠금 규칙을 위반하는 경우 검증자는 보증금을 몰수당하는 벌금을 물게 됩니다.

더 간단한 라이트 클라이언트

라이트 클라이언트는 블록체인의 모든 상태를 저장하지 않고 블록 헤더만 저장하기 때문에 풀 노드보다 "더 가볍습니다". 검증 및 블록 생성을 담당하는 마이닝 노드 또는 검증자 노드가 아닌 이상 대부분의 노드는 실제로 블록체인의 전체 상태를 저장할 필요가 없습니다.

전체 체인을 다운로드하여 저장하는 대신 라이트 클라이언트는 제네시스 블록에서 현재 블록으로 블록 헤더를 다운로드합니다. 전체 노드와 비교할 때 라이트 클라이언트는 소량의 데이터만 저장하면 됩니다. 블록 헤더는 일부 특정 트랜잭션의 유효성을 확인하기에 충분하기 때문입니다.

가장 멋진 점은 Tendermint 기반 블록체인의 라이트 클라이언트는 모든 블록 헤더를 동기화할 필요도 없이 블록 헤더를 주기적으로 다운로드하기만 하면 된다는 것입니다.

앞서 논의한 바와 같이 텐더민트는 비트코인 ​​및 이더리움과 달리 모든 블록이 투표되고 최종적으로 확인되어야 합니다. 최신 유효성 검사기 세트가 알려져 있으므로 라이트 클라이언트는 최신 블록 헤더를 다운로드하고 이러한 블록에 2/3 이상의 유효성 검사기 투표가 있는지 확인할 수 있습니다.

코스모스 네트워크 계층

위에서 말했듯이 Tendermint의 합의는 검증자가 각 라운드에서 투표하는 것에 의존합니다. 따라서 노드는 네트워크의 모든 참가자가 동일한 데이터를 볼 수 있도록 통신하고 메시지를 전송할 수 있어야 합니다.

비트코인 및 이더리움과 마찬가지로 Tendermint는 가십 프로토콜을 사용하여 최신 블록체인 상태를 빠르게 전파합니다.

네트워크의 노드는 네트워크 합의 프로세스에서 역할을 수행하기 위해 검증자가 될 필요가 없습니다. 예를 들어, 노드는 검증자 대신 라이트 노드 또는 전체 노드일 수 있으며 이러한 노드를 "비검증자 노드"라고도 합니다.

검증자 및 비검증자 노드는 모든 노드가 시스템에서 생성되는 정보 및 트랜잭션을 수신할 수 있도록 데이터(예: 제안 데이터, 블록 데이터 및 투표 데이터)를 제공할 책임이 있습니다.

코스모스 응용 계층

현재 우리는 Tendermint 네트워크 계층과 합의 계층의 핵심 구성 요소를 이해했습니다. 네트워크 계층은 네트워크의 모든 컴퓨터 간의 트랜잭션 전송을 담당하고 Tendermint 합의 알고리즘은 상태 머신(즉, , 모든 노드의 블록체인은 일관됨).


  • 그러나 우리는 어떤 거래를 통과하고 검증하고 있습니까? 여기에 애플리케이션 계층이 있습니다.

  • 블록체인에 기록해야 하는 트랜잭션 정의 및 제출


컨센서스 레이어를 통해 트랜잭션이 커밋된 후 블록체인 상태를 지속적으로 업데이트합니다.

텍스트

Cosmos SDK는 블록체인 세계의 Ruby-on-Rails와 마찬가지로 애플리케이션 계층을 구축하기 위한 프레임워크를 제공합니다(Ruby-on-Rails는 개발자가 기본 설정으로 웹 사이드 애플리케이션을 쉽게 구축할 수 있는 프레임워크입니다). Cosmos SDK도 제공합니다. Tendermint 커널을 기반으로 보안 블록체인 애플리케이션을 구축하기 위한 프레임워크를 가진 개발자.

블록체인은 모든 노드에 걸쳐 동일한 상태 백업이 있는 상태 머신이며 Cosmos SDK를 사용하면 여러 노드에 복제되는 실제 상태 머신을 구축할 수 있습니다. SDK를 사용하면 애플리케이션의 상태, 트랜잭션 유형, 상태 전환 기능에 필요한 기능 및 도구를 사용자 정의할 수 있습니다.

텍스트

Cosmos 애플리케이션 작동 방식(추상적 관점)


  • Cosmos SDK는 애플리케이션 계층 상태 머신의 상태를 정의하고 유지하기 위한 "다중 저장소" 메커니즘을 제공합니다. Multistore는 응용 프로그램 계층의 상태를 여러 구성 요소로 나누고 각각의 "모듈"을 통해 관리합니다.

  • Cosmos SDK의 강점은 고유한 모듈식 설계이며, 각 모듈은 완전한 블록체인을 구성하는 상태의 하위 집합을 정의하고 유지합니다. 예를 들어:

  • 뱅킹 모듈: 앱에서 토큰을 보유하고 토큰을 전송할 수 있습니다.


권한 모듈: 계정 및 서명을 만들고 관리할 수 있습니다.

스테이킹 및 슬래싱 모듈: 코딩을 통해 PoS 합의 메커니즘을 구축할 수 있습니다.

각 모듈은 전체 상태 기계를 생성하기 위해 집계될 수 있는 작은 상태 기계입니다.

애플리케이션 개발자는 각 모듈의 관용적 논리와 수정 상태에 따라 하위 집합을 정의하며, 개발자는 Cosmos SDK에서 제공하는 모듈 외에도 타사 모듈을 호출할 수 있습니다.

블록체인 애플리케이션 구축을 위한 이 플러그인 모듈은 개발자에게 SDK 또는 외부 모듈을 사용할 수 있는 유연성을 제공하므로 매우 강력합니다.

애플리케이션 레이어의 트랜잭션은 애플리케이션 블록체인 인터페이스(ABCI, Application Blockchain Interface)를 통해 텐더민트 합의 및 네트워크 레이어와 통신합니다.

ABCI는 Tendermint 코어(합의 + 네트워크)와 애플리케이션을 연결하는 소켓 통신 프로토콜입니다. 모든 프로그래밍 언어와 호환됩니다. 즉, Cosmos SDK를 사용하여 구축된 블록체인 애플리케이션은 이론적으로 Tendermint의 기본 합의 및 네트워크 계층에서 사용되는 프로그래밍 언어뿐만 아니라 모든 언어로 작성될 수 있습니다.

텍스트

참고: 현재 코스모스 버전은 주로 Golang을 지원하며, 향후 더 많은 언어가 추가될 예정입니다.

대체로 Cosmos SDK를 통해 개발자는 Tendermint 코어를 기반으로 분산 응용 프로그램을 구축할 수 있으며, 이 응용 프로그램은 이론적으로 모든 언어로 개발할 수 있으며 ABCI를 통해 Tendermint 합의 엔진에 연결할 수 있습니다.

애플리케이션 계층(Cosnos SDK, ABCI)을 네트워크 계층 및 합의 계층(텐더민트 코어)에서 분리하면 개발자가 다양한 유형의 애플리케이션을 개발하는 데 더 큰 유연성을 가질 수 있으며 Cosmos SDK를 통해 이러한 애플리케이션은 모든 언어 개발(예: Golang)이 가능합니다. 블록체인 앱 개발 프로세스를 일반 애플리케이션 개발과 유사하게 만듭니다.

이것은 이더리움에서 애플리케이션을 개발하는 것과 극명한 대조를 이룹니다. 왜냐하면 후자는 개발자가 새로운 언어 Solidity를 배우고 Solidity의 많은 한계와 결함을 극복해야 하며 Golang은 Solidity보다 더 많은 개발 도구를 가지고 있으며 개발 경험이 10배 더 우수하기 때문입니다.

또한 모든 이더리움 앱은 단일 네트워크에서 작동합니다.장점은 이러한 앱이 이더리움 표준과 해당 스케일 효과를 공유할 수 있다는 것입니다.단점은 이러한 모든 앱이 이더리움 컨센서스 레이어를 공유한다는 것입니다. 새로 추가된 애플리케이션의 또한 전체 네트워크는 거버넌스 철학과 이념적 차이에 묶인 거대한 단위로 관리되어야 하므로 확장이 어렵습니다.

코스모스 네트워크의 각 블록체인 애플리케이션은 자체 검증자, 커뮤니티 및 경제 시스템을 가져와야 하며 모든 검증자와 강력한 커뮤니티 및 기존 경제 시스템을 직접 사용하는 것은 불가능합니다.


결론적으로

첫 번째 레벨 제목

결론적으로

以太坊爱好者
作者文库