컨센서스 원칙과 규칙(Consensus Principles and Rules)

XRP Ledger는 이메일을 보내는 것과 같이 국경을 넘어 사용자가 자유롭게 자금을 이동할 수 있는 범용 결제 시스템입니다. 비트코인과 같은 다른 P2P 결제 네트워크와 마찬가지로 XRP Ledger는 분산된 컴퓨터 네트워크를 통해 P2P 거래 결제를 가능하게 합니다. 다른 디지털 통화 프로토콜과는 달리 XRP Ledger는 사용자가 선호하는 어떤 통화든지 포함하여 거래를 표시할 수 있습니다. 이는 법정 화폐, 디지털 화폐 및 기타 가치 형태와 XRP(똑같은 XRP Ledger의 기본 자산)를 포함합니다.

XRP Ledger의 기술은 실시간 정산(3~6초)을 가능하게 하며, 통화 간에 가장 저렴한 거래 순서를 자동으로 사용하여 통화 간 연결을 제공하는 탈중앙화 거래소(DEX)를 포함하고 있습니다.

배경(Background)

작동 방식(Mechanics)

XRP Ledger는 계정, 잔액, 자산 거래 요청과 같은 정보를 기록하는 공유 데이터베이스입니다. "트랜잭션"이라고 불리는 서명된 명령은 계정 생성, 지불, 자산 거래 등과 같은 변경을 발생시킵니다.

암호화 시스템으로서, XRP Ledger 계정의 소유자는 공개/비밀 키 쌍에 해당하는 암호학적 신원으로 식별됩니다. 트랜잭션은 이러한 신원과 일치하는 암호학적 서명에 의해 승인됩니다. 각 서버는 동일한 결정론적이고 알려진 규칙에 따라 모든 트랜잭션을 처리합니다. 궁극적으로, 네트워크의 모든 서버가 중앙 기관 없이도 정확히 동일한 ledger 상태의 완전한 사본을 갖도록 하는 것이 목표입니다. 이를 통해 거래를 중재하기 위한 단일한 중앙 기관 없이 완벽한 컨센서스를 이룰 수 있습니다.

이중지불 문제(The Double Spend Problem)

"이중지불" 문제는 모든 디지털 결제 시스템에 대한 근본적인 도전 과제입니다. 이 문제는 돈이 한 곳에서 사용되었을 때 다른 곳에서도 사용될 수 없다는 요구 사항에서 발생합니다. 더 일반적으로는 어느 한 거래라도 개별적으로는 유효하지만 함께 유효하지 않은 두 거래가 있는 경우에 문제가 발생합니다.

예를 들어, Alice, Bob, Charlie가 결제 시스템을 사용하는 상황을 가정해보겠습니다. Alice가 10달러의 잔액을 가지고 있다고 가정하면, 결제 시스템이 유효하려면 Alice는 10달러를 Bob에게 보낼 수 있어야 하거나 Charlie에게 보낼 수 있어야 합니다. 그러나 Alice가 동시에 Bob에게 10달러를 보내고 Charlie에게도 10달러를 보내려고 하면 이중지불 문제가 발생합니다.

만약 Alice가 "같은" 10달러를 Charlie와 Bob에게 모두 보낼 수 있다면 결제 시스템은 유용하지 않게 됩니다. 결제 시스템은 어떤 거래가 성공하고 어떤 거래가 실패해야 하는지 선택할 수 있는 방법이 필요합니다. 이 선택은 모든 참여자가 해당 거래가 발생한 것에 대해 동의하는 방식으로 이루어져야 합니다. 두 거래 중 어느 하나는 개별적으로는 동일하게 유효합니다. 그러나 결제 시스템의 참여자들은 어떤 거래가 먼저 발생했는지에 대해 서로 다른 시각을 가질 수 있습니다.

전통적으로, 결제 시스템은 중앙 기관이 거래를 추적하고 승인하는 방식으로 이중지불 문제를 해결합니다. 예를 들어, 은행은 은행 자체가 유일한 관리자인 발행자의 가용 잔액에 기반하여 수표를 처리하기로 결정합니다. 이러한 시스템에서는 모든 참여자가 중앙 기관의 결정을 따르게 됩니다.

XRP Ledger와 같은 분산 ledger 기술에는 중앙 기관이 없습니다. 이러한 시스템은 다른 방식으로 이중지불 문제를 해결해야 합니다.

컨센서스 작동 방식(How Consensus Works)

문제 단순화(Simplifying the Problem)

이중지불 문제의 많은 부분은 자금이 없는 계정에서 자금을 소비하는 것을 금지하는 등 이미 알려진 규칙에 따라 해결할 수 있습니다. 실제로, 이중지불 문제는 트랜잭션을 순서대로 정렬하는 것으로 간소화될 수 있습니다.

Alice가 Bob과 Charlie에게 동일한 10달러를 보내려고 하는 예를 생각해보겠습니다. 만약 Bob에 대한 결제가 먼저 알려진다면, 모두가 Alice가 Bob에게 지불할 자금이 있다는 것에 동의할 수 있습니다. 만약 Charlie에 대한 결제가 두 번째로 알려진다면, 이미 돈이 Bob에게 보내졌기 때문에 Alice가 그 자금을 Charlie에게 보낼 수 없다는 것에 모두 동의할 수 있습니다.

또한, 결정론적인 규칙에 따라 트랜잭션을 순서대로 정렬할 수 있습니다. 트랜잭션은 디지털 정보의 모음이므로 컴퓨터에서 정렬하는 것은 간단합니다.

이는 중앙 기관 없이도 이중지불 문제를 해결하는 데 충분하지만, 모든 거래가 발생하기 전에(정렬하기 위해 모든 거래를 갖고 있어야 함) 결과에 대해 확실성을 얻으려면 실현 불가능합니다. 이는 분산 ledger 기술에서는 현실적이지 않습니다.

만약 우리가 거래를 그룹으로 모을 수 있고 그룹화에 동의할 수 있다면 그룹 내에서 거래를 정렬할 수 있습니다. 모든 참여자가 거래가 하나의 단위로 처리되어야 한다는 점에서 합의한다면, 중앙 기관 없이도 결정론적인 규칙을 사용하여 이중지불 문제를 해결할 수 있습니다. 참여자들은 각각 거래를 정렬하고 알려진 규칙을 따라 결정론적인 방식으로 적용합니다. XRP Ledger는 이와 같은 방식으로 이중지불 문제를 해결합니다.

XRP Ledger는 동일한 그룹 내에 서로 충돌하는 여러 거래를 허용합니다. 그룹의 거래들은 결정론적인 규칙에 따라 실행되므로 정렬 규칙에 따라 먼저 발생한 거래가 성공하고 충돌하는 다른 거래가 두 번째로 발생합니다.

컨센서스 규칙(Consensus Rules)

컨센서스의 주요 역할은 참여자들이 그룹으로 처리될 거래를 어떻게 합의할지 결정하는 것입니다. 이러한 컨센서스를 이루는 것이 예상보다 쉬운 유형의 이유는 다음과 같습니다:

  1. 거래를 그룹에 포함시키는 데 아무런 이유가 없다면, 모든 성실한 참여자는 해당 거래를 포함시키기로 동의합니다. 모든 참여자가 이미 동의하는 경우에는 컨센서스 작업이 필요하지 않습니다.

  2. 거래를 그룹에 포함시키는 데 어떤 이유라도 있을 경우, 모든 성실한 참여자는 해당 거래를 제외하기로 동의합니다. 거래가 여전히 유효한 경우, 다음 라운드에 포함시키기 위해 어떤 이유도 없으므로 모두 동의해야 합니다.

  3. 참여자가 거래 그룹화에 특별히 관심을 갖는 경우는 매우 드뭅니다. 모두가 합의에 도달하기를 원하는 경우 합의가 가장 쉽게 이루어집니다. 그러나 이해관계가 상이한 경우 합의를 도달하기가 어려울 수 있습니다.

  4. 결정론적인 규칙은 그룹화를 형성하는 데도 사용될 수 있으며, 이는 극히 드물지만 의견이 다를 수 있는 극단적인 경우에만 의견이 분기될 수 있습니다. 예를 들어, 한 라운드에 충돌하는 두 개의 상충하는 거래가 있는 경우, 결정론적인 규칙을 사용하여 다음 라운드에 포함시킬 거래를 결정할 수 있습니다.

모든 참여자의 최우선 순위는 정확성입니다. 공유된 ledger의 무결성을 위해 먼저 규칙을 강제해야 합니다. 예를 들어, 올바르게 서명되지 않은 트랜잭션은 절대로 처리해서는 안 됩니다(다른 참여자들이 그것을 처리하길 원할지라도). 그러나 성실한 참여자의 두 번째 최우선 순위는 합의입니다. 이중지불이 가능한 네트워크는 전혀 유용하지 않으므로 성실한 참여자는 정확성 외에는 합의를 가장 중요하게 생각합니다.

컨센서스 라운드(Consensus Rounds)

컨센서스 라운드는 처리할 거래 그룹에 대해 합의하기 위한 시도입니다. 컨센서스 라운드는 참여하고자 하는 각 참여자가 초기 위치를 취하는 것으로 시작됩니다. 이는 참여자들이 본인이 보았던 유효한 거래의 집합입니다.

그런 다음 참여자들은 컨센서스를 위해 "눈사태"를 일으킵니다: 특정 거래가 다수의 지지를 받지 않는다면, 참여자들은 해당 거래를 연기하기로 동의합니다. 특정 거래가 다수의 지지를 받는다면, 참여자들은 해당 거래를 포함하기로 동의합니다. 이렇게 약간의 다수가 빠르게 만장일치 지지로 바뀌고 약간의 소수가 현재 라운드에서 거부됩니다.

컨센서스가 50% 근처에서 정체되는 것을 방지하고 신뢰할 수 있는 수렴에 필요한 겹치기를 줄이기 위해 트랜잭션을 포함하기 위해 필요한 임계치는 시간이 지남에 따라 증가합니다. 처음에는 참여자들이 다수의 동의를 받는 경우에만 거래를 포함하기로 동의합니다. 참여자들이 의견이 분기하는 경우, 임계치를 높여 60% 이상으로 설정하고, 그 이후에도 더 높여서 모든 논쟁 거래를 현재 집합에서 제거합니다. 이렇게 제거된 거래는 다음 ledger 버전으로 연기됩니다.

참여자가 다음 처리될 거래 집합에 대해 지지를 받는 상대 다수를 볼 때, 그들은 합의가 이루어진 것으로 선언합니다.

컨센서스 실패 가능성(Consensus Can Fail)

완벽한 합의를 달성하지 못하는 컨센서스 알고리즘을 개발하는 것은 현실적으로 불가능합니다. 그 이유를 이해하기 위해 컨센서스 프로세스가 어떻게 끝나는지 살펴보겠습니다. 어느 시점에서는 각 참여자가 합의가 이루어졌고 일부 거래 집합이 프로세스의 결과로 알려져 있다고 선언해야 합니다. 이 선언은 해당 참여자가 특정 거래 집합을 합의 프로세스의 결과로서 변경할 수 없음을 의미합니다.

어떤 참여자가 이를 먼저 수행해야만 다른 참여자들도 이를 수행하고 합의에 도달할 수 있습니다. 이제, 이를 먼저 수행하는 참여자는 합의에 도달하지 않을 것입니다. 이 참여자가 합의가 완료되었다고 결정할 때 다른 참여자들은 아직 그 결정을 내린 것이 아닙니다. 만약 다른 참여자들이 그들의 관점에서 합의된 집합을 변경할 수 없다면, 이미 합의가 완료되었다고 결정한 상태일 것입니다. 그러므로 그들은 여전히 합의된 집합을 변경할 수 있는 상태에 있어야 합니다.

다른 말로 하면, 컨센서스 프로세스가 완료되려면 어떤 참여자가 일부 거래 집합이 합의된 것으로 선언하고 다른 참여자들이 이를 변경할 수 있는 상태일 때만 가능합니다.

예를 들어, 문을 나가기 위해 어떤 문을 사용해야 하는지 합의하려는 방에서 사람들의 그룹을 상상해보십시오. 참여자들이 토론을 하더라도, 어느 순간에는 누군가가 첫 번째로 문을 나가기로 결정해야 합니다. 이 참여자가 합의가 완료되었다고 결정할 때, 다른 사람들은 아직 그 결정을 내리지 않았습니다. 그들이 합의된 집합을 변경할 수 없는 상태라면 이미 그들은 합의가 완료되었다고 결정한 것일 테지만, 그들은 여전히 합의된 집합을 변경할 수 있는 상태에 있을 것입니다.

이러한 종류의 실패 가능성은 매우 낮게 만들 수 있지만, 절대로 0으로 줄일 수는 없습니다. 공학적인 트레이드오프로 인해 이 확률을 1,000분의 1 이하로 낮추려면 컨센서스가 현저히 느려지고 네트워크 및 엔드포인트 장애를 용인하기 어려워집니다.

컨센서스 실패 시 XRP Ledger의 처리 방법(How the XRP Ledger Handles Consensus Failure)

컨센서스 라운드가 완료된 후, 각 참여자는 합의된 거래 집합을 적용하여 다음 ledger 상태를 구성합니다.

동시에 검증자로서의 역할을 하는 참여자들은 이 다음 ledger에 대한 암호학적 지문을 발행합니다. 이를 "유효성 투표"라고 합니다. 컨센서스 라운드가 성공한 경우, 성실한 검증자 대부분은 동일한 지문을 발행해야 합니다.

그런 다음 참여자들은 이러한 유효성 투표를 수집합니다. 유효성 투표를 통해 이전 컨센서스 라운드에서 대다수의 참여자들이 거래 집합에 합의했는지 여부를 확인할 수 있습니다.

그 결과, 참여자들은 가능성에 따라 다음 세 가지 상황 중 하나에 속하게 됩니다:

  1. 대다수가 합의한 거래 집합과 동일한 ledger를 구축했습니다. 이 경우 해당 ledger를 완전히 검증되었다고 간주하고 그 내용을 신뢰할 수 있습니다.

  2. 대다수가 합의한 거래 집합과 다른 ledger를 구축했습니다. 이 경우 대다수가 합의한 ledger를 구축하고 수용해야 합니다. 이는 해당 참여자가 일찍 합의를 선언했고 다른 참여자들이 그 후에 변경한 것을 의미합니다. 이들은 수용하기 위해 대다수의 ledger로 "전환"해야 합니다.

  3. 유효성 투표를 통해 대다수가 명확하게 나타나지 않는 경우입니다. 이 경우 이전 컨센서스 라운드는 무산되었으며, 새로운 라운드가 진행되어야만 어떠한 ledger도 검증될 수 있습니다.

물론, 상황 1이 가장 일반적입니다. 상황 2는 네트워크에 아무런 영향을 미치지 않습니다. 소수의 참여자들이 매 라운드마다 상황 2에 해당할 수도 있지만, 네트워크는 아무런 문제없이 작동할 수 있습니다. 실제로 이러한 참여자들은 대다수와 동일한 ledger를 구축하지 않았음을 인지하므로, 대다수와 컨센서스가 이루어질 때까지 자신의 결과를 최종으로 보고하지 않아야 합니다.

상황 3은 네트워크가 몇 초 동안 전진할 수 있는 기회를 잃게 되지만, 매우 드물게 발생합니다. 이 경우, 다음 컨센서스 라운드에서는 의견 분기가 해소되고, 남아 있는 의견 분기만이 실패의 원인이 될 수 있으므로 컨센서스 실패가 더 적게 발생합니다.

드물게 네트워크 전체가 몇 초 동안 전진하지 못하는 경우가 있습니다. 그 대신 평균 거래 확인 시간이 낮습니다.

철학(Philosophy)

신뢰성의 한 형태는 일부 구성 요소가 고장나거나 일부 참여자가 악의적인 상황에서도 시스템이 결과를 제공할 수 있는 능력입니다. 이는 중요하지만, 암호화된 결제 시스템에서 훨씬 더 중요한 신뢰성의 다른 형태는 신뢰할 수 있는 결과를 생성할 수 있는 시스템의 능력입니다. 즉, 시스템이 신뢰할 수 있는 결과로 보고할 때 그 결과에 의존할 수 있어야 합니다.

그러나 실제 시스템은 하드웨어 고장, 통신 장애, 심지어 부정직한 참여자들과 같은 운영 조건에서 두 종류의 신뢰성이 모두 손상될 수 있습니다. XRP Ledger의 설계 철학 중 일부는 결과의 신뢰성이 저하된 상황을 감지하고 보고하는 것이며, 의존해서는 안 되는 결과를 제공하는 대신 이를 강조하는 것입니다.

XRP Ledger의 컨센서스 알고리즘은 계산 리소스를 불필요하게 소모하지 않으면서도 작업 증명 시스템에 대한 견고한 대안을 제공합니다. 비잔틴 오류는 가능하며 발생하지만, 그 결과는 소규모의 지연에 불과합니다. 모든 경우에 XRP Ledger의 컨센서스 알고리즘은 결과가 실제로 신뢰할 수 있는 경우에만 신뢰할 수 있는 결과로 보고합니다.

Last updated