본문 바로가기
외/가상화폐

SCP(Stellar Consensus Protocol)

by 꼬모도르 2021. 5. 27.

 

*** 다음의 내용은 아래 사이트에서의 내용을 번역기 사용 및 일부 용어 수정하여 올립니다. ***

https://medium.com/london-blockchain-labs/blockchain-definition-of-the-week-stellar-consensus-protocol-5006f42203b0

Simply Explained: Stellar Consensus Protocol

Nope, it’s not Proof-Of-Work nor Proof-Of-Stake

아니오, 작업 증명서나 재고 증명서가 아닙니다.

 

Author’s Note

이 기사에서는 독자가 분산 장부에 대한 이전 지식을 어느 정도 가지고 있어야 합니다.
또한 SCP는 이해하기 복잡한 개념이며 이 글은 프로토콜을 완전히 이해하기 위한 입문 단계이다. 텍스트의 복잡성을 제한하기 위해 단순화가 이루어졌으며 따라서 기술적으로 정확하지 않을 수 있다. 수학적 증명과 원리는 같은 이유로 표시되지 않았다.

 

Introduction & Key Concepts

SCP의 기술성에 대해 자세히 알아보기 전에 몇 가지 용어를 설명해야 합니다.

 

Stellar Network

스텔라(Stellar)는 블록체인을 활용해 전 세계인이 보다 쉽게 접근할 수 있는 금융서비스를 제공한다는 목표로 2014년 출시한 플랫폼이다. IBM, Deloitte, Stripe를 파트너로 두고 있으며, 토큰인 Lumens(XLM)는 모든 암호화폐 중 6번째로 큰 시가총액을 보유하고 있다. 스텔라 네트워크는 매우 낮은 수수료로 매우 빠른 거래를 자랑하며, 국경을 초월한 지불을 위한 플랫폼 제공에 초점을 맞추고 있지만, 스마트 계약 체결도 허용하고 있다.

 여러분은 스텔라에 대한 더 많은 정보를 그들의 웹사이트 www.stellar.org에서 찾을 수 있습니다. 오늘은 플랫폼에 의해 활용되는 합의 프로토콜에 대해서만 논의하겠습니다.

 

Byzantine Generals Problem (BGP)

이 문제는 천년 이상 중요한 강대국이었던 비잔틴 제국의 군대에서 영감을 얻었다.

대부분의 적군을 격파한 대군은 이제 수도를 사방에서 포위하고 있다. 군대는 분할되고, 각 사단은 한 명의 장군에 의해 통제된다. 장군들은 오직 전령을 통해서만 서로 의사소통을 한다. 그들은 모두 결정에 직면해 있다. 그들이 공격해야 하는가, 아니면 후퇴해야 하는가? 이 둘 중 하나가 성공하기 위해서는, 그들은 전력을 다해 그것을 해야 한다. 이상적인 시나리오에서, 장군들은 그들의 표를 제출하고 다수결로 뒤따라야 할 결과를 결정할 것이다. 그러나 실제로는 군대 사이에 반역자가 있고, 도중에 메시지가 없어지거나 바뀔 수 있으며, 같은 사단 내에서도 소통이 최선은 아니다. 예를 들어, 장군은 한 동료에게 메시지를 보낼 수 있고, 다른 동료에게 다른 메시지를 보낼 수 있습니다. 그가 배신자라면 말이다. 따라서, 성공하기 위해 군대가 무엇을 해야 하는지에 대한 합의를 도출하는 것은 매우 어렵다. (이 버전은 BGP의 단순화된 버전입니다.)

블록체인과 같은 분산형 네트워크는 커다란 비잔틴 장군 문제이다. 이러한 네트워크의 보안은 네트워크의 모든 참여자가 최상의 이해관계를 염두에 두고 있는 것은 아니며 일부는 이를 공격하고 싶어할 수 있다는 기본 원칙에서 이루어져야 한다. 어떻게 하면 신뢰할 수 없는 동료들에 의해 사실로 받아들여진 대장을 만들고 그 대장에 포함되어야 할 것에 대해 합의할 수 있을까? 이 문제를 해결하기 위해서는 다양한 형태로 이루어질 수 있는 공감대가 있어야 하며, 그 중 하나가 이 글에 제시되어 있다.

 

Consensus (in distributed networks)

"합의는 그 관련자 대부분이 내린 판단이다." Merriam-Webster dictionary

우리가 장부에 대해 이야기할 때, 등록된 정보가 사실이라는 합의가 있어야 합니다. 전통적인 중앙집권적 장부의 경우, 중앙집권적 권력만이 장부에 접근할 수 있다는 것은 단순히 정보가 사실이라고 주장할 뿐이며, 중앙집권적 장부를 신뢰하는 원장의 사용자들이 이를 받아들여야 한다는 합의는 간단하다.

분산 네트워크의 경우 이 프로세스가 조금 더 복잡합니다. 공개 블록체인의 경우 누구나 원장에 정보를 추가할 수 있고(또는 추가 시도) 누구나 해당 정보가 사실인지 아닌지를 확인할 권리가 있다. 그러한 이유로, 네트워크는 데이터가 정확하다는 일반적인 합의인 합의에 도달해야 한다. 그러나 원장의 사용자와 검증자를 알 수 없으므로 신뢰할 수 없기 때문에 이는 쉽지 않은 작업이다.

따라서, 신뢰할 수 없는 당사자 간의 합의를 이루고 대장에 저장된 데이터의 유효성을 확인하려면, 정보가 레지스트리에 추가되는 방법을 정의하는 프로토콜이 있어야 한다. 여기에 합의 프로토콜이 들어옵니다. 유명하게도, 비트코인은 거래의 유효성을 보장하기 위해 작업 증명서를 사용한다. 대다수의 동의를 필요로 하는 것과 함께, PoW(Proof-Of-Work, 작업증명서)는 또한 네트워크에 추가 보안을 제공하기 위해 자원, 즉 계산 노력을 요구한다. 왜냐하면 공격자는 네트워크를 손상시키기 위해 자원()을 소비해야 하기 때문이다. 대안적으로, 네트워크에 찬성하는 사람들은 재정적 인센티브에 의해 계속 그렇게 하도록 권장된다.

그러나 작업 증명서에는 단점이 있어 더 나은 선택이 될 수 있는 대안이 만들어지게 되었다. 지분 증명(Proof-of-Stake)은 스텔라 컨센서스 프로토콜도 포함하는 범주인 PoW의 가장 잘 알려진 대안 중 하나이다.

 

Byzantine Fault Tolerance (BFT)

Byzantine Fault Tolerance BGP의 고유한 장애를 견디는 시스템의 품질입니다. 분산 네트워크는 원장의 현재 상태를 결정하기 위해 서로 상호 작용하는 많은 노드를 가지고 있다. 이러한 노드는 정직한 노드일 수도 있고 손상된 노드일 수도 있으며, 네트워크는 손상된 노드에 의해 퍼진 모든 잘못된 정보를 처리할 수 있어야 하며, 여전히 진실된 데이터에 대한 합의에 도달해야 합니다.
BFT
를 처리할 때 노드의 가능한 동작에 대한 제한은 설정되지 않습니다. 노드가 원하는 방식으로 작동할 수 있다고 가정할 때 네트워크는 안전해야 하며, 이것이 문제를 해결하기 매우 어렵게 만든다. 비잔틴 무장애 네트워크는 비트코인 백서에서 나카모토 사토시가 설명한 것처럼 이중 지출 문제를 해결한다.
BFT
(블록체인이 속한) 분산원장 기술 분야에서 매우 중요하지만, 그것의 애플리케이션은 DLT에만 국한되지 않으며, 예를 들어 보잉 787의 제어 시스템에서도 사용된다.

 

Federated Byzantine Agreement

스텔라 컨센서스 프로토콜은 연합 비잔틴 협정(FBA)이라고 불리는 합의 프로토콜의 번째 구현이다. FBA 2015 스탠포드의 데이비드 마지레스 교수에 의해 이상화되었다. 네트워크 내의 노드가 합의에 도달하는 방법을 설명하고 있으며, 블록체인에 사용할 있지만, 용도는 그것들에 국한되지 않는다. FBA 주요 기능은 SCP 백서에 나와 있습니다.

분산 제어(Decentralized control): 누구나 네트워크에서 검증자가 있습니다. 제한이 없습니다.
짧은 대기 시간(Low latency): 안에 의견 일치를 있습니다.
유연한 신뢰(Flexible trust): 참가자는 제한 없이 자신이 신뢰하는 다른 노드를 자유롭게 결정할 있습니다.
점근 보안(Asymptotic security): 디지털 서명과 해시 패밀리는 매우 높은 컴퓨팅 성능에도 불구하고 네트워크를 보호하는 방법으로 사용됩니다.

스텔라 네트워크는 SCP 사용하여 플랫폼에서 합의를 도출하지만,  SCP 다른 일반적인 합의 프로토콜과 달리 노드에 대한 인센티브 시스템을 정의하지 않으며, 코인 배출 시스템(암호화폐 공용 블록체인의 경우 유용) 제공하지 않는다. 따라서, 스텔라 네트워크의 루멘스 방출(XLM) 합의 프로토콜과 독립적이다.

 

Quorums, slices and intersections

SCP 본질에는 쿼럼과 쿼럼 조각이 있다. SCP 백서에 기술된 바와 같이, 이러한 개념의 정의는 다음과 같다.
쿼럼(quorum): 합의에 도달하기에 충분한 노드 집합입니다.
쿼럼 조각(quorum slice): 전표(진술서) 유효성을 다른 노드에 확인하기에 충분한 노드 집합입니다. '슬라이스'라고도 합니다(정의가 약간 조정됨).

 

Stellar Network 노드들은 독립적으로 정보에 대해 신뢰하는 다른 노드를 결정합니다. 따라서 노드 n 노드 n 의해 "trusted" 선택된 노드 집합은 n 쿼럼 슬라이스를 정의합니다. n 슬라이스에 l m 있고 특정 정보를 수락하면 n 해당 정보를 수락합니다. 이제 l m 해당 슬라이스에 다른 노드가 있는 경우 쿼럼을 구성하는 데도 이러한 노드가 필요합니다. 따라서 쿼럼은 멤버로부터 적어도 하나의 조각을 포함하는 노드 집합이다(David Mazières: The Stellar Consensus Protocol | Google에서 대화)

이를 시각화해 보겠습니다.

Figure 1: Quorums and quorum slices

쿼럼 조각은 화살표로 결정됩니다. : N5의 슬라이스에는 N6 N7이 있습니다.

복잡해 보이더라도 걱정하지 말고, 분절해 봅시다.

Quorum 1

N1, N2, N3, N4 노드로 구성됩니다.

슬라이스로 구성:

·         N1, N2, N3

·         N2, N4

·         N3, N4

Quorum 2

노드 구성: N5, N6 N7.

슬라이스로 구성:

·         N5, N6, N7

·         N6, N7

따라서 다음과 같은 사항을 고려해야 합니다.
N4 쿼럼 1 합의를 결정할 있다.
N7 쿼럼 2 합의를 결정할 있다.
쿼럼의 합의는 다른 쿼럼 간의 노드 공유가 없기 때문에 다른 쿼럼과 간섭하지 않습니다.
교차하지 않는 개의 분리된 쿼럼이 있으며, 분리 쿼럼이라고도 합니다.

 

Figure 2: Larger quorums

또는 N7 없고 조각이 위와 같이 배열되었다면, 우리는 개의 쿼럼이 아니라 하나의 쿼럼을 가질 것이다.

 

Figure 3: Quorum intersections

다이어그램의 일부 화살표 방향 변경으로 이제 다른 개념인 쿼럼 교차점을 도입할 있습니다.

쿼럼 교차점은 쿼럼이 합의에 필수적인 노드를 공유하여 서로의 내부 합의에 방해가 발생합니다. 그림 2에서 N1 교차점에 있다. N1 양쪽 쿼럼에서 합의를 위해 필요하다. 강력한 합의 프로토콜은 이러한 교차점이 필요하다. 그렇지 않으면 네트워크는 별도의 합의에 도달할 있기 때문이다. 사실, 모든 정족수는 합의가 작동하기 위해 적어도 하나의 교차점이 필요하다.

위의 다이어그램에서 우리는 자연스럽게 다양한 노드 계층이 형성되어 합의를 위한 중요도 순서대로 순위를 매긴다는 것을 있다. 예를 들어, 그림 2에서 N4 쿼럼의 가장 중요한 노드이고, N2 N3 포함하는 번째 계층이 뒤를 잇는다.

 

Slots

슬롯은 모든 노드가 동의해야 하는 원장의 고유한 업데이트입니다. SCP 백서 참고 사항:

"예를 들어, 슬롯은 순차적으로 적용되는 로그에서 연속적으로 번호가 매겨진 위치일 수 있습니다."

위의 정의에 따라, 우리는 블록 체인으로 이러한 슬롯이 사실상 블록임을 도출할 있습니다. 블록체인 네트워크의 모든 참여자는 블록의 유효성에 대해 합의하고, 공개되면 이를 포함하도록 개인 장부를 업데이트해야 한다. 일단 그것이 이루어지면, 합의는 이루어진다.

 

Node failures

지금까지 노드가 합의에 도달하기 위해 쿼럼, 슬라이스 교차점이 어떻게 사용되는지에 대해 논의했습니다. 그러나 노드 장애로 인해 네트워크에서의 컨센서스가 그렇게 쉽게 발생할 없다. 이상적인 시나리오에서, 모든 노드는 의도되어 있고 네트워크에 도움이 된다. 그러나, BFT 의해 명시된 바와 같이, 실제로 내결함성이 있는 시스템을 만들기 위해서는 노드의 동작에 대해 어떤 가정도 없다. , 최악의 경우에 대비해야 한다. 가능한 노드 장애 유형을 확인하려면 아래 다이어그램을 참조하십시오.

Ill-behaved

불량 노드는 프로토콜 규칙을 따르지 않고 네트워크의 이익을 위해 행동하지 않는 노드이다. 적절한 쿼럼 조각을 선택하지 않거나, 충돌했거나, 의도적으로 잘못된 메시지를 보내거나, 소프트웨어를 수정하고 있을 있습니다. 이러한 노드는 비잔틴 장애를 겪으며, 따라서 기본적으로 장애가 발생합니다. 그것의 의도와는 무관하게, 악의적이든 아니든 간에, 네트워크에서 합의를 유지하기 위해 잘못된 행동을 하는 노드를 신뢰할 없다.

 

Well-behaved

반면에, 동작하는 노드는 프로토콜과 모범 사례를 따르는 노드입니다. 이러한 시스템은 의도된 것일 뿐만 아니라 안전과 네트워크의 적절한 작동을 보장하기 위해 필요한 예방 조치도 취합니다. 하지만, 그들은 여전히 외부적인 요인 때문에 실패할 있습니다. 다음과 같은 가지 방법으로 장애가 발생할 있습니다.

 

차단됨(Blocked): 실패한 다른 노드에 의존하지 않고 합의 값을 출력할 없는 노드.

 

다이버전트(Divergent): 동일한 입력에 대해 다른 노드와 다른 값을 출력하는 노드.

 

위의 입력(Inputs) 노드가 "답변" 제공해야 하는 일련의 데이터(슬롯) 나타냅니다. 이를 유추해 보면, 작업증명서에서 채굴자가 해시를 찾아 블록을 해결하기 위해 사용하는 블록 데이터(거래 데이터, 이전 블록 해시, 난이도 ) 맞먹는다. 출력(Outputs ) 네트워크에 게시된 데이터 집합에 대해 노드에서 제공하는 "응답" 나타냅니다. 위에서와 같은 비유로, 이것은 광부가 블록에 대해 발견한 해시와 같다.

 

: 입력이 트랜잭션이라고 가정해 보겠습니다. 그런 다음 출력은 해당 트랜잭션이 유효한지 여부를 나타내야 합니다. 트랜잭션의 유효성에 대한 노드의 "의견" (쿼럼 슬라이스의 일부이기 때문에) 잘못된 노드에 의존한다면, 해당 노드의 "의견" 차단된 것으로 간주됩니다. 이유는 결함이 있는 노드에 의해 출력이 저하되기 때문입니다. 동작하기는 하지만 노드가 "유효" 출력하면, 트랜잭션이 네트워크 컨센서스에 따라 유효하지 않을 , 해당 노드는 서로 다른 노드로 간주될 있다.

올바른 노드는 어떤 방식으로든 실패하지 않은 노드입니다.

 

Federated Voting(연합투표)

노드 장애에도 불구하고 네트워크 컨센서스가 손상되지 않도록 SCP 쿼럼 슬라이스와 함께 사용되는 연합 투표를 도입하여 네트워크의 모든 노드 없이도 네트워크가 컨센서스를 달성할 있도록 한다. FV에는 가지 단계가 있습니다.

Vote → Accept → Confirm

토마토는 과일입니까?라는 입력이 주어지면, 노드들은 그들이 타당하다고 생각하는 것에 투표할 것이다. 다이어그램에서 N1 "" 또는 "아니오" 투표할 있습니다. 일단 투표가 이루어지면 노드들은 투표를 변경할 없지만, 다른 결과를 받아들일 있습니다.
N1
표가 "아니오"라고 하자. 그러면 N1 그것의 정족수를 것이다. 쿼럼이 "" 투표하거나 수락하면 N1 "" 수락합니다. 이러한 영향 시스템은 이상적인 경우 네트워크를 올바른 출력에 대한 합의로 밀어낸다.

장애가 발생한 노드에 의존하지 않는 온전한 노드(Intact nodes) 항상 동일한 값을 출력합니다.

수락 노드가 출력 값을 확인해야 합니다. 작업은 출력을 수락할 없는 온전한 노드가 해당 출력이 수락되었는지 확인할 있음을 보장하고 프로토콜에 보안을 추가하기 위해 수행됩니다. 이것이 사실인 이유는 글에서 다루지 않을 것이다.
기본적으로 출력 값을 수락한 노드 네트워크는 "이봐, 우리 모두 이걸 받아들였지?" 확인하고 값을 확인하게 되며, 그러면 모든 노드에 의해 외부화된다.

 

Ballots(투표)

장애가 발생한 노드를 최소한으로 가정하면 시스템은 쿼럼 슬라이스를 통해 서로 영향을 미치는 합의에 도달할 있습니다. 하지만 그것만으로는 충분하지 않다. 고장 노드의 배열 양에 따라 시스템이 고착될 있습니다. , 쿼럼이 어떤 가치를 확인해야 하는지에 대한 합의에 도달할 없습니다.
투표용지를 입력하세요. 네트워크 정체 문제를 해결하기 위해 SCP 투표를 실시하거나 무효화하는 국민투표를 실시하는 시스템을 도입한다. 투표용지는 노드의 출력 값과 연결됩니다. 이들이 투표권을 행사하기 전에 무효투표를 무효로 하는 공천 절차가 있다. 그런 다음 노드들은 특정 값을 수락하지 않고 값을 커밋 수락하거나 투표를 중단하도록 투표합니다. 따라서, 동작 불량 노드가 다른 값을 출력하는 경우, 이러한 값은 동작 불량 노드에 의해 실격될 있다.
가치를 받아들이기 위한 단순한 투표가 아닌 투표 형식으로 이렇게 하는 데는 여러 가지 이유가 있다. 이유와 수학적 증명은 SCP 백서에서 찾을 있는 이론에 의해 제공된다. 가지 중요한 고려 사항은 출력물을 수용하기 위해 투표할 분할 투표를 있다는 것이다. 그러나 투표용지를 사용하면 고려에서 값을 제거(중단)하여 투표 절차를 다시 시작하고 보다 제한된 선택사항 집합으로 합의를 시도할 가능성이 있다.

 

A note on security(보안 관련 참고 사항)

가지 측면으로 인해 네트워크는 본질적으로 많은 보안을 지향하지만 다음과 같은 이유로 국한되지 않습니다.
제대로 동작하는 노드가 실패한 노드를 슬라이스에 보관하는 것을 원치 않을 것입니다. 이는 장애가 발생한 노드가 부정적인 영향을 미치므로 자연스럽게 "좋은" 노드를 선택할 있습니다.
참가자들이 독립적으로 일부 노드를 다른 노드보다 자주 "신뢰할 있는 당사자" 선택하기 때문에 네트워크를 노드로 자연스럽게 계층화하는 것이 합의에서 중요합니다. 네트워크가 가장 신뢰할 있는 노드라고 여기는 노드를 위에 배치합니다.

 

Limitations(제한사항)

제작자인 David Mazières, SCP에는 다음과 같은 제한이 있습니다.
디지털 동전 주조 시스템 제공
노드의 양호한 동작을 장려하기 위한 인센티브 계획은 제공하지 않는다.
노드에게 신뢰할 있는 사용자를 알려주지 않음. , 노드가 잘못된 쿼럼 슬라이스를 선택할 있으며(비록 인센티브가 있더라도) 합의를 해칠 있음

 

Conclusion & Final considerations(결론 및 고려사항)

스텔라 컨센서스 프로토콜은 연합 비잔틴 협정의 번째 구현이며 분산 네트워크가 합의에 도달할 있는 새로운 방법을 제공한다. 스텔라 네트워크가 합의에 도달하기 위해 사용하는 프로토콜이지만, 그것의 애플리케이션은 블록체인을 넘어선다.

 

자세히 알아보려면 아래 링크를 방문하십시오. 기사에 대한 참조 자료로도 사용됩니다.

·         The Stellar Consensus Protocol: A Federated Model for Internet-level Consensus — David Mazières

·         David Mazières: “The Stellar Consensus Protocol” | Talks at Google

·         The Stellar Consensus Protocol — David Mazières

·         On Worldwide Consensus — Stellar.org

 

또는 기사가 이미 너무 복잡했다면 Stellar.org 통해 "Adventures in Galactic Consensus" 확인할 있다.

 

 

한글 참고 사이트 링크합니다.

[칼럼] SCP는 왜 블록체인 프로토콜의 미래인가

https://www.hkbnews.com/news/articleView.html?idxno=11604 

 

[칼럼] SCP는 왜 블록체인 프로토콜의 미래인가 - 한국블록체인뉴스

【보스아고라칼럼】 블록체인 기술은 현재까지 등장한 인류의 발명품 중 가장 안전한 것 중 하나로 알려져 있다. 이는 이론적으로 해킹이 불가능하고, 모든 거래를 보호·검증하려는 의도와 목

www.hkbnews.com

 

' > 가상화폐' 카테고리의 다른 글

2021 Pi2Day  (0) 2021.07.01
Pi Network 소개 소식 - Bitcoinist  (2) 2021.06.16
Pi Node(파이노드) 설치  (2) 2021.05.16
Pi Node(파이노드) 정보  (0) 2021.05.15
PI Brainstorm(파이 브레인스톰)  (0) 2021.05.10

댓글