
편집자 주: 이 기사의 출처는체인뉴스 ChainNews(ID: chainnewscom)편집자 주: 이 기사의 출처는
체인뉴스 ChainNews(ID: chainnewscom)
, 저자: Li Hua, 허가를 받아 출판됨.
블록체인은 분산 시스템입니다. 분산 시스템이 어떻게 작동하는지 이해하지 않고는 블록체인을 진정으로 이해하기 어렵습니다.
블록체인을 이해하지 못해서 생기는 문제는 '탈중앙화', '무허가' 등의 개념과 맥락을 잃은 'TPS', '보안' 등의 이슈에 대한 논의에 빠지게 된다는 점이다. 이것은 블록체인 프로젝트를 정확하게 분석하고 판단하는 데 도움이 되지 않을 뿐만 아니라 블록체인의 가능한 기술 발전 경로를 인식하는 것을 불가능하게 만듭니다.
더 직설적으로 말하면 분산 시스템에 대한 기본 지식을 습득해야 합니다. 이 때문에 우리는 블록체인 자체의 한계를 볼 수 있으며 진정으로 가치 있는 블록체인 프로젝트는 특정 문제를 해결하기 위해 특정 환경에서 특정 솔루션을 만들어야 한다는 것을 알고 있습니다.
단순한 인덱스 비교는 객관적이지 않으며 더 나은 기준은 이 솔루션이 이 문제를 해결하는 데 적합한지 여부입니다.
분산 시스템의 작동 방식을 이해하는 것은 블록체인 세계에서 매우 중요합니다. 이제 분산 시스템 탐색을 시작하겠습니다.
컴퓨터의 기능은 정보를 처리하는 것입니다. 우리는 조건 A를 컴퓨터에 입력하고 결과 B를 우리에게 출력합니다. 정보 처리 작업이 한 대의 컴퓨터에서 이루어지면 중앙 집중식 구조이고, 정보 처리 작업이 여러 독립 컴퓨터의 협력으로 이루어지면 "분산 시스템"이라고 할 수 있습니다.
다양한 정보 처리 방법을 구현하는 분산 시스템을 위한 다양한 아키텍처가 있습니다. 시스템에 10대의 컴퓨터가 있다고 가정하면 하나의 아키텍처는 컴퓨팅 작업을 10개의 부분으로 나누고 각 컴퓨터가 독립적으로 작업을 처리하게 하고 최종적으로 계산 결과를 출력으로 요약하는 것입니다.
이것은 같은 일을 10번 하는 것과 같은 '고생을 요구하는' 제도이며, 서로 다른 컴퓨터 간의 추가적인 통신 작업이 필요함을 쉽게 알 수 있다.
그렇다면 그러한 시스템이 필요한 이유는 무엇입니까? 중앙 집중식 컴퓨터와 그 컴퓨터 뒤에 있는 중앙 집중식 회사 또는 조직에 대한 의존성을 피할 수 있기 때문입니다. 이러한 방식으로 단일 실패 또는 악의 지점을 피할 수 있으며 권력의 집중 및 남용을 줄일 수 있습니다.
보조 제목

1. 분산 시스템의 이상적인 목표
블록체인이 속한 분산 시스템은 "복제된 상태 기계"라고도 합니다. 목표는 간단합니다: 시스템의 모든 컴퓨터는 특정 출력 값에 동의합니다. 즉, 시스템의 모든 컴퓨터 노드/컴퓨터는 모두 동일한 초기 상태 및 트랜잭션 실행 후 모든 노드는 동일한 최종 상태를 가집니다.
컴퓨터가 모두 제대로 작동하고 컴퓨터 간의 통신이 완벽하게 동기화되면 달성하기 어렵지 않습니다. 그러나 현실은 그렇지 못하며, 주로 두 가지 유형의 문제가 있습니다.
일부/일부 컴퓨터가 다운되었거나 결과를 계산할 수 없거나 시스템에 연결하지 못할 수 있습니다.
이러한 문제는 일반적이고 피할 수 없으며 일단 문제가 발생하면 모든 컴퓨터가 특정 출력 결과에 동의하는 것은 불가능합니다. 유명한 분산 시스템 "FLP 불가능 원칙"은 다음과 같이 설명됩니다. 신뢰할 수 있는 네트워크가 있지만 노드 오류를 허용하는 최소한의 비동기 모델이 있는 시스템에서는 일관성 문제를 해결할 수 있는 결정적 합의 알고리즘이 없습니다. 평신도의 관점에서: 시스템의 한 컴퓨터가 실패하는 한 시스템은 출력 값에 대한 합의에 도달할 수 없습니다.
FLP 불가능성 원칙은 다음과 같이 알려줍니다. 모든 시나리오에 직면하는 분산 시스템을 위한 합의 알고리즘을 설계하는 데 시간을 낭비하지 마십시오. 불가능합니다.
보조 제목
2. 분산 시스템을 위한 합의 알고리즘
FLP의 불가능성 원칙은 잔인하지만 분산 시스템이 가져올 수 있는 이점은 어려움을 감수할 가치가 있습니다. 모든 시나리오에 대한 합의 알고리즘이 없기 때문에 특정 시나리오에서 효과적인 일부 합의 알고리즘을 찾는 것이 가능할 수 있습니다. 합의 알고리즘은 분산 시스템이 합의에 도달하는 방법을 의미합니다.
과학자들이 시나리오를 단계별로 제한하고 이 시나리오에서 합의 알고리즘을 실현하는 방법을 살펴보겠습니다.
첫째, 시스템의 각 컴퓨터가 자체적인 결과를 도출할 수 있다면 어떤 결과에 합의해야 할지조차 모르기 때문에 상황은 의심할 여지없이 복잡합니다. 따라서 합의 문제를 해결하는 첫 번째 단계는 합의가 무엇인지 결정하는 것입니다 가장 간단한 방법은 특정 컴퓨터가 최종 발언권을 갖고 결과를 제안하고 다른 컴퓨터는 결과에 동의하는 것입니다.
최종 발언권을 가진 컴퓨터를 제안자 또는 리더라고 합니다. 리더를 통해 합의를 이루는 것이 문제 해결의 유일한 방법은 아니지만, 블록체인 시스템에서 사용되는 합의 알고리즘을 포함하여 대부분의 프로토콜은 이를 기반으로 구현됩니다.
보시다시피 절대적인 탈중앙화는 없고, 합의를 이루기 위한 첫 번째 단계는 중심을 결정하는 것입니다.
여담: 이것을 알면 탈중앙화에 대한 보다 효과적인 논의를 수립할 수 있습니다.
주제로 돌아갑니다. 리더가 필요한 합의 알고리즘의 작업 단계는 대략 다음과 같습니다.
지도자를 선출하십시오.
리더는 결과를 제안합니다.
모든 사람이 결과에 대해 합의에 도달하면 시스템이 최종 결과를 출력하고 모두가 합의에 도달하지 않으면 1단계로 돌아가서 다시 시작합니다.
이러한 사고방식은 합의를 이룰 수 있는 방법을 제공하지만 실제로 합의를 이루는 것과는 거리가 멀다. 컴퓨터가 시스템에 연결할 수 없으면 리더의 결과에 동의하는지 여부를 투표할 수 없기 때문에 문제가 있는 컴퓨터가 리더가 되면 상황은 더욱 악화되어 전체 시스템이 작동하지 않게 됩니다. 정지 상태로.
보조 제목
3. 동기화 가설 합의 알고리즘
위의 가동 중지 시간 문제를 해결하는 방법은 무엇입니까? 방법은 간단합니다. 컴퓨터가 시스템에 연결할 수 없으면 무시하고 이 합의 라운드에 참여하지 마십시오.
그런 다음 새로운 질문이 생깁니다. 시스템에 연결할 수 없는지 또는 합의에 참여하고 있지만 속도가 다른 머신보다 느린지 어떻게 알 수 있습니까?
결과적으로 과학자들은 합의 문제를 해결하기 위한 가장 중요한 가정 중 하나인 동시성 가정을 개발했습니다. 동시성 가정은 "타임 아웃"의 개념을 도입하는데, 이는 사전에 시간 프레임이 설정되어 있고 리더가 해당 시간 프레임 내에 제안을 발행하지 못하면 제거되고 새로운 리더가 선출된다는 것을 의미합니다. 이러한 방식으로 리더 노드의 장애를 허용할 수 있습니다. (참고: 동시성 가정은 동시성 가정과 같지 않음)
Paxos 알고리즘과 Raft 알고리즘은 모두 동시성 가정을 기반으로 제안됩니다. 그러나이 두 알고리즘은 시스템에 대한 또 다른 가정, 즉 시스템의 모든 컴퓨터가 "좋은 사람"이라는 가정을 해야 합니다. 그들은 리더의 제안에 올바르게 응답하거나 실패로 인해 응답하지 않습니다.
그리하여 우리는 마침내 엄격한 조건을 가지고 있음에도 불구하고 합의를 이룰 수 있는 분산 시스템을 가지게 되었습니다.
Paxos 합의 알고리즘은 1990년 Leslie Lamport가 제안한 메시지 기반의 내결함성이 높은 합의 알고리즘으로 Google을 비롯한 분산 시스템 응용 분야에서 중요한 위치를 차지하고 있으며, 많은 기업의 대규모 분산 시스템에서 사용되고 있으며, 포함 . 탐색의 첫 번째 단계도 여기서 끝나고 두 번째 단계가 이어집니다.
보조 제목
4. 시스템에서 "나쁜 놈" 제거
Paxos는 합의를 달성할 수 있지만 알고리즘은 모든 컴퓨터가 "좋은 사람"이라는 전제를 기반으로 합니다. 그리고 컴퓨터에 "나쁜 놈들"이 있으면 나쁜 놈의 목소리와 착한 놈의 목소리가 시스템에 나타나게 되는데, Paxos 알고리즘은 이 상황을 처리할 수 없습니다.
나쁜 행위자가 있어도 합의를 이룰 수 있는 알고리즘이 필요한데, 가능할까요? Leslie Lambert는 Byzantine 노드가 전체 시스템이 합의에 도달하는 것을 방해하는 파괴적인 메시지를 전송하는 악당 노드인 Byzantine Generals Problem이라고 하는 이 가능성을 논의하기 위해 모델을 개발했습니다.
"The Byzantine Generals Problem" 논문에서 Lambert는 몇 가지 솔루션을 제안했으며, 그 중 하나는 비잔틴 노드가 1/3 미만일 때 시스템의 합의를 달성할 수 있습니다. 즉, 시스템에 있는 나쁜 놈의 수가 1/3 미만이면 알고리즘을 통해 합의가 이루어질 수 있습니다.
이후 등장한 DLS 알고리즘과 PBFT 알고리즘(Practical Byzantine Fault Tolerant Algorithm)은 모두 이를 기반으로 개발됐다.
PBFT는 비잔틴 내결함성 알고리즘의 대표적인 것으로 구현 과정은 대략 다음과 같다. 이 소통 방식을 통해 합의에 도달할 수 있다는 사실만 알면 그 과정을 이해하지 못해도 상관없다.
사전 준비 단계: 리더는 결과를 모든 팔로워에게 보냅니다. 리더는 이 그래프에서 노드 0이며 팔로워 1, 2, 3에게 결과를 보냅니다.
준비 단계: 추종자가 결과가 옳다고 생각하면 다른 모든 노드에게 결과를 승인하도록 지시합니다. 예를 들어 노드 1은 승인 메시지를 노드 0, 2, 3에 보냅니다.
커밋 단계: 추종자가 노드의 2/3 이상이 리더의 결과에 동의하는 것을 발견하면 다른 모든 노드에게 이 결과를 최종 결과로 수락하도록 지시합니다.
지금까지 비잔틴 노드로 분산 시스템의 합의 문제를 해결했습니다. 그러나 시스템에 있는 악당의 수가 1/3 이상이면 합의에 도달하는 것은 여전히 불가능합니다. 우리가 할 수 있는 것은 시스템의 접근 조건이나 인센티브를 통해 악당을 1/3 이하로 만드는 것입니다.
분산 시스템의 두 번째 단계 탐색은 여기서 끝나고 세 번째 단계로 들어갑니다.
보조 제목
5. 나카모토 합의 알고리즘
Paxos와 PBFT 모두 동시성 가정을 사용하는데, 사실 Nakamoto 합의가 나오기 전까지 합의 알고리즘에 대한 거의 모든 연구는 이 방향에 있었습니다. Nakamoto 합의는 비결정적 메커니즘을 사용합니다.
무슨 뜻이에요? 우리는 12명의 배심원으로 구성된 배심원으로 12대의 컴퓨터로 구성된 분산 시스템을 생각할 수 있습니다. 우리는 이 12명을 회의실에 가두고 사건을 설명하는 쪽지를 건넨 다음 회의실 문에 앉아서 그들이 재판 결과를 발표하기를 기다렸다.
이 12명은 판단하는 방법에 대해 서로 다른 의견을 가질 것이고, 토론이 진행됨에 따라 입장이 바뀔 수도 있고, 졸려서 의견을 표현하지 못하는 사람도 있을 수 있습니다('화난 12인' 참조). 그런 다음 문 앞에 앉아 기다리는 사람에게는 두 가지 옵션이 있습니다. 첫 번째 선택은 당신이 그것을 논의하는 것이고 나는 당신이 원하는 만큼 기다릴 수 있지만 결국 당신은 나에게 유일한 확실한 재판 결과를 주어야 합니다. 대부분의 사람들이 동의하는 결과 나, 더 많은 사람들이 동의하는 결과가 있다면 그 결과로 바꾸겠습니다.
분명히 우리는 둘 중 하나만 선택할 수 있습니다.결과가 확인되어야 하는 경우 결과가 얻어질 것이라는 보장이 없고 결과가 필요한 경우 결과가 최종 결과여야 한다는 보장이 없습니다.
이것은 분산 시스템의 경우입니다.두 가지 옵션이 있습니다.첫 번째 옵션은 "결과의 확실성"또는 보안을 의미하는 Finality라고하고 두 번째 옵션은 네트워크의 활동 또는 가용성을 의미하는 Liveness라고합니다.
이 두 가지 선택은 분산 합의를 위한 두 가지 다른 설계 아이디어를 결정합니다.
Finality 추구가 우선적인 결과이므로 네트워크에 요구 사항을 만드는 것이 필요합니다. PBFT와 Tendermint는 모두 이러한 유형의 알고리즘으로, 네트워크 동기화 가정을 따르며 이러한 알고리즘을 사용하는 시스템은 분기되지 않습니다.

여담으로 Finality와 Liveness 중 하나를 선택하는 것도 분산 시스템의 CAP 정리(불가능한 삼각형)의 표현입니다. 정리는 다음과 같습니다. 분산 시스템의 경우 일관성, 가용성 및 파티션 허용 오차를 동시에 만족시키는 것은 불가능합니다. 파티션 내결함성은 시스템이 네트워크 파티션을 견딜 수 있어야 한다는 것을 의미하고, 실제 네트워크는 반드시 파티션될 것이므로 이 조건이 충족되어야 합니다. 그 중 CAP 일관성은 최종성을 반영하고 CAP 가용성은 활성도를 반영합니다.
FLP 불가능성 원리든 CAP 불가능성 정리든, 그들은 우리에게 말하지 않습니다: 이 길은 걷기 어렵고 돌파구를 만들면 큰 혁신이 될 것입니다. 일하지 말고 해야 할 일은 필요에 따라 절충과 선택을 하는 것입니다.
동기성 가정을 이용한 합의 알고리즘은 위에서 자세히 소개한 바 있으며, 타임아웃 개념을 도입하고 문제가 있는 컴퓨터를 무시함으로써 합의를 이룬다.
비결정론적 메커니즘을 사용하는 Nakamoto 합의는 설명하기도 간단합니다. 작업 증명이 가장 많은 제안된 블록이 보이면 가장 긴 체인 규칙이라고도 하는 해당 블록을 수락합니다. 구체적인 구현 프로세스는 모든 사람에게 친숙하므로 이 기사에서는 반복하지 않겠습니다.
이제 동시성 가정(Finality, PoS에서 더 많이 사용됨)을 사용하는 시스템이 비결정적 메커니즘(Liveness, PoW에서 더 많이 사용됨)을 사용하는 시스템과 어떻게 다른지 살펴보겠습니다. 그러나 모든 PoS가 Casper FFG와 같은 Finality 경로인 것은 아니며, PoW에서 Finality 합의를 설계한 사람은 아무도 없지만 PoW는 Liveness 경로에 국한되지 않습니다.
PoW와 PoS의 차이점은 하나는 작업이고 다른 하나는 스테이크라는 것입니다. 이 점을 강조해야 하는 이유는 PoW와 PoS에 대한 논의에서 Work 메커니즘과 Stake 메커니즘의 차이점을 논의하는 것이 아니라 Finality 시스템과 Liveness 시스템의 차이점을 비교하는 경우가 많기 때문입니다. 예를 들어 "permission-free"는 기본적으로 Work와 Stake 사이의 논쟁이 아니라 Finality 시스템과 Liveness 시스템 사이의 주제입니다.
12명의 리뷰어가 있는 방으로 돌아가 봅시다. Finality를 추구하기 위해서는 각각의 리뷰어가 다른 모든 사람의 아이디어를 알아야 하고, 또한 다른 모든 사람들에게 자신의 아이디어를 말해야 하므로 리뷰어의 수가 증가함에 따라 커뮤니케이션 복잡성이 급격히 증가하여 전체 시스템을 사용할 수 없게 됩니다. 따라서 배심원 수를 통제해야 합니다.
그런 다음 분산 시스템의 경우 소수의 노드만 회의실에 입장하도록 선택되어 합의를 결정하고 다른 노드는 합의만 수락합니다. 따라서 이 시스템에는 리더, 팔로어 및 학습자의 세 가지 역할이 있으며 리더와 팔로워는 회의실의 검토자이며 잘 작동해야 합니다.
Nakamoto Consensus는 Liveness를 추구합니다.노드/리뷰어는 다른 모든 노드와 통신할 필요가 없으며 주변 노드와 통신하기만 하면 되므로 노드 수의 증가로 인해 통신 복잡성이 증가하지 않습니다. 판사가 되려면 무단으로 회의실에 들어가서 판사가 될 수 있으며 배심원이 합의에 도달하는 데 어려움을 겪지 않을 것입니다.동시에 일하거나 떠날 수 없습니다. 시간. 시스템에는 리더와 추종자 두 가지 역할만 있으며 모든 사람이 해당 회의실에서 합의에 참여합니다.
Nakamoto 합의는 분산 시스템의 개방성에 대한 모든 사람의 기대에 더 부합하는 것 같지만 최종성을 희생하기 때문에 이러한 방식으로 설계될 수 있으며 그 출력은 확률적 최종 결과라는 점을 잊지 마십시오.
상상해보세요. 스타벅스에서 커피 한 잔을 100% 받지만 스타벅스는 돈을 100% 받지 않습니다. 이는 대부분의 사람들이 이해하는 세상의 규칙과 일치하지 않습니다. 따라서 비결정론적 메커니즘에는 고유한 단점과 부적절한 시나리오가 있습니다.
한편, Finality 시스템이 결과의 확실성을 보장한 후에는 시스템 설계가 Liveness를 추구해야 하고, Liveness 시스템이 네트워크의 개방성을 보장한 후에 시스템 설계는 역으로 Finality를 추구해야 한다. 결과의 확실성 또는 보안을 개선하기 위해 Nakamoto Consensus는 TPS와 같은 다른 양보를 해야 합니다.
아시다시피 분산 시스템을 설계하는 것은 사탄과 거래하는 것과 같습니다. 일부는 얻고 일부는 주어야 합니다. 최상의 시스템은 없고 특정 유형의 문제를 해결하는 데 적합한 시스템만 있을 뿐이며, 단순한 지수 비교는 없으며 어떤 설정에서 이 지수를 달성해야 합니까?
이것을 이해했다면 이 기사의 목적이 달성되었으며 분산 시스템에 대한 탐구는 여기까지입니다.
여섯, 더 나아가
리안웬 참고:
- How Does Distributed Consensus Work?
이 기사는 "How Does Distributed Consensus Work?" 기사에서 영감을 얻었습니다. 분산 시스템에 대해 더 자세히 알고 싶다면 전문적인 관점에서 분산 합의를 소개하는 이 기사를 추천하고 "WHAT WE TALK ABOUT WHEN WE TALK ABOUT"도 추천합니다. DISTRIBUTED SYSTEMS"는 분산 시스템에 대한 고전 논문을 체계적으로 나열합니다.
- WHAT WE TALK ABOUT WHEN WE TALK ABOUT DISTRIBUTED SYSTEMS
리안웬 참고:
- EthFans의 "How Distributed Consensus Works" 중국어 번역
분산 시스템의 또 다른 핵심 문제는 타이밍입니다. 모든 합의 알고리즘이 해결해야 하지만 또 다른 단서이기 때문에 이 기사에서는 다루지 않습니다. 알고 싶다면 Dr. Leslie Lambert(몇 살입니까? ): "분산 시스템에서 시간, 클록 및 이벤트 순서 지정".
Finality와 Liveness 사이의 균형을 찾는 데 관심이 있다면 Liveness의 일부와 Finality의 일부가 있는 Casper FFG 합의를 연구할 수 있습니다. 동시에 Casper FFG의 PoS와 Tendermint의 PoS의 차이점도 찾을 수 있습니다.
마지막으로, 주로 다음 내용을 포함하는 이 문서의 요약을 작성하십시오.
두 가지 정리: FLP 불가능 원리, CAP 불가능 정리.
두 가지 유형의 내결함성: 다운타임 내결함성, 비잔틴 내결함성.
두 가지 합의 알고리즘 디자인 아이디어: Finality, Liveness.
세 가지 합의 알고리즘: Paxos, PBFT 및 Satoshi Nakamoto 합의.
참조:
기사의 단순화 및 유추로 인해 부정확하고 불완전할 수 있습니다. 이해해 주시고 수정해 주셔서 감사합니다.
2.《WHAT WE TALK ABOUT WHEN WE TALK ABOUT DISTRIBUTED SYSTEMS》,Alvaro Videla
3.《Time, Clocks and the Ordering of Events in a Distributed System》,Leslie Lamport
4.《The Byzantine Generals Problem》,LESLIE LAMPORT、ROBERT SHOSTAK、MARSHALL PEASE
5.《Paxos Made Simple》,Leslie Lamport
6.《Bitcoin: A Peer-to-Peer Electronic Cash System》,Satoshi Nakamoto