컨센서스(컴퓨터 사이언스)

Consensus (computer science)

분산 컴퓨팅 및 멀티 에이전트 시스템의 근본적인 문제는 다수의 결함이 있는 프로세스에서 전체적인 시스템 신뢰성을 달성하는 것입니다.이를 위해서는 종종 합의에 이르거나 계산 중에 필요한 데이터 값에 합의하기 위해 프로세스를 조정해야 합니다.합의 적용 예로는 데이터베이스에 커밋할 트랜잭션의 순서, 상태 시스템 복제원자 브로드캐스트에 대한 합의 등이 있습니다.합의가 필요한 실제 애플리케이션에는 클라우드 컴퓨팅, 클럭 동기화, PageRank, 의견 형성, 스마트 파워 그리드, 상태 추정, UAV( 일반적으로 여러 로봇/에이전트), 로드 밸런싱, 블록 체인 등이 포함됩니다.

문제 설명

합의 문제를 해결하려면 단일 데이터 값에 대한 여러 프로세스(또는 에이전트) 간의 합의가 필요합니다.일부 프로세스(에이전트)는 실패하거나 다른 방법으로 신뢰할 수 없으므로 합의 프로토콜은 내결함성 또는 복원력이 있어야 합니다.이 프로세스들은 후보 가치를 제시하고, 서로 소통하며, 단일 합의 값에 합의해야 합니다.

컨센서스 문제는 멀티에이전트 시스템 제어의 근본적인 문제입니다.합의를 도출하기 위한 한 가지 방법은 모든 프로세스(에이전트)가 다수의 가치에 동의하는 것입니다.이 맥락에서 과반수는 적어도 이용 가능한 표의 절반 이상을 요구한다(각 프로세스에 투표가 주어지는 경우).그러나 하나 이상의 결함이 있는 공정은 결과 결과를 왜곡하여 합의에 이르지 못하거나 잘못 도달할 수 있습니다.

합의된 문제를 해결하는 프로토콜은 제한된 수의 결함 프로세스를 처리하도록 설계되었습니다.이러한 프로토콜은 유용한 여러 요구 사항을 충족해야 합니다.예를 들어, 사소한 프로토콜은 모든 프로세스가 바이너리 값 1을 출력할 수 있습니다.이것은 유용하지 않기 때문에 출력이 입력에 의존하도록 요건이 수정됩니다.즉, 합의 프로토콜의 출력 값은 일부 프로세스의 입력 값이어야 합니다.또 하나의 요건은 프로세스가 출력값을 한 번만 결정할 수 있으며 이 결정은 취소할 수 없다는 것입니다.프로세스가 실패하지 않으면 실행에서 올바른 프로세스로 호출됩니다.정지 장애를 허용하는 컨센서스 [1]프로토콜은 다음 속성을 충족해야 합니다.

종료
결국, 모든 올바른 프로세스가 어느 정도의 가치를 결정합니다.
무결성
모든 올바른 프로세스가 동일한 v v를 제안했을 경우 올바른 프로세스에서 v v를 결정해야 합니다.
동의
모든 올바른 프로세스는 동일한 값으로 일치해야 합니다.

출원에 따르면 무결성의 정의에 대한 변경이 적절할 수 있다.예를 들어, 더 약한 유형의 무결성은 의사결정 값이 일부 올바른 프로세스에서 제안한 값과 동일해야 합니다(반드시 [1]모든 프로세스가 아닌 경우).무결성 조건은 [1]문서에서는 유효성으로도 알려져 있습니다.

n개의 프로세스 간에 정확하게 합의를 보장할 수 있는 프로토콜은 t-복원성이 있다고 합니다.

합의 프로토콜의 성과를 평가할 때, 두 가지 관심 요소는 실행 시간과 메시지의 복잡성이다.실행 시간은 일부 입력 파라미터(일반적으로 프로세스 수 및/또는 입력 도메인의 크기)의 함수로 메시지 교환 라운드의 수에서 빅 O 표기로 지정됩니다.메시지 복잡도는 프로토콜에 의해 생성되는 메시지 트래픽의 양을 나타냅니다.기타 요인으로는 메모리 사용량 및 메시지 크기 등이 있습니다.

계산 모델

다양한 계산 모델에 따라 "합의 문제"가 정의될 수 있습니다.일부 모델은 완전히 연결된 그래프를 다루고 다른 모델은 링과 트리를 다룰 수 있습니다.일부 모델에서는 메시지 인증이 허용된 반면 다른 모델에서는 완전히 익명 프로세스입니다.프로세스가 공유 메모리의 객체에 액세스하여 통신하는 공유 메모리 모델도 중요한 연구 영역입니다.

직접 또는 전송 가능한 인증을 사용하는 통신 채널

대부분의 통신 프로토콜 모델에서 참가자들은 인증된 채널을 통해 통신합니다.즉, 메시지는 익명이 아니며 수신자는 수신하는 모든 메시지의 발신원을 알고 있습니다.일부 모델에서는 보다 강력하고 전송 가능한 인증 형식을 채택하고 있습니다.이 경우, 각 메시지는 송신자가 서명하기 때문에, 수신자는 각 메시지의 직접 송신원 뿐만이 아니라, 최초로 메시지를 작성한 참가자도 알 수 있습니다.이 강력한 유형의 인증은 디지털 서명을 통해 이루어지며, 이 강력한 인증 형식을 사용할 수 있게 되면 프로토콜은 [2]더 많은 장애를 허용할 수 있습니다.

이 두 가지 인증 모델은 종종 구두 커뮤니케이션 모델과 서면 커뮤니케이션 모델이라고 불립니다.구두 커뮤니케이션 모델에서는 정보의 직접 출처를 알 수 있는 반면, 보다 강력한 서면 커뮤니케이션 모델에서는 수신자를 따르는 모든 단계는 메시지의 직접 출처를 학습할 뿐만 아니라 [3]메시지의 통신 이력을 학습한다.

컨센서스 입력 및 출력

Paxos와 같은 가장 전통적인 단일값 컨센서스 프로토콜에서 협력 노드는 데이터베이스에 커밋된 트랜잭션과 같은 유용한 메타데이터를 인코딩하기 위해 가변적인 크기의 정수와 같은 단일값에 합의합니다.

바이너리 컨센서스라고 하는 단일값 컨센서스 문제의 특수한 경우는 입력, 즉 출력 도메인을 단일 바이너리 디짓 {0,1}으로 제한합니다.바이너리 컨센서스 프로토콜 자체는 그다지 유용하지 않지만, 특히 비동기 컨센서스를 위해 보다 일반적인 컨센서스 프로토콜의 구성 요소로서 유용한 경우가 많다.

Multi-Paxos Raft와 같은 다중값 컨센서스 프로토콜에서는 단일값뿐만 아니라 시간이 지남에 따라 일련의 값에 합의하여 점진적으로 성장하는 역사를 형성하는 것이 목표입니다.다중값 컨센서스는 단일값 컨센서스 프로토콜의 여러 반복을 연속적으로 실행함으로써 순진하게 달성될 수 있지만, 많은 최적화와 재구성 지원과 같은 다른 고려사항들은 실제로 다중값 컨센서스 프로토콜을 더 효율적으로 만들 수 있다.

크래시 및 비잔틴 장애

프로세스에서 발생할 수 있는 장애에는 크래시 장애와 비잔틴 장애의 두 가지 유형이 있습니다.크래시 실패는 프로세스가 갑자기 중지되고 재개되지 않을 때 발생합니다.비잔틴의 실패는 조건이 전혀 부과되지 않는 실패입니다.예를 들어 상대방의 악의적인 액션으로 인해 발생할 수 있습니다.비잔틴 장애가 발생한 프로세스는 모순되거나 모순되는 데이터를 다른 프로세스로 전송하거나 sleep 상태로 있다가 장시간 지연된 후 활동을 재개할 수 있습니다.두 가지 실패 유형 중 비잔틴 실패는 훨씬 더 파괴적입니다.

따라서 비잔틴의 실패를 허용하는 합의 프로토콜은 발생할 수 있는 모든 오류에 대해 탄력적이어야 합니다.

무결성 제약 조건을 강화함으로써 비잔틴의 실패를 허용하는 보다 강력한 버전의 합의가 제공됩니다.

무결성
올바른 프로세스에서 vv가 되는 v\v는 올바른 프로세스에 의해 제안되어야 합니다.

비동기 및 동기 시스템

컨센서스 문제는 비동기 또는 동기 시스템의 경우 고려될 수 있습니다.현실세계의 통신은 본질적으로 비동기적인 경우가 많지만, 비동기 시스템이 동기식 시스템보다 더 많은 문제를 수반한다는 점을 고려하면 동기식 [4]시스템을 모델링하는 것이 더 실용적이고 종종 더 쉽습니다.

동기 시스템에서는 모든 통신이 라운드로 진행된다고 가정한다.한 번의 라운드에서 프로세스는 다른 프로세스에서 모든 메시지를 수신하면서 필요한 모든 메시지를 보낼 수 있습니다.이와 같이 하면, 1 라운드의 메시지는 같은 라운드로 송신되는 메시지에 영향을 주지 않습니다.

비동기 결정론적 컨센서스의 FLP 불가능 결과

적어도 하나의 프로세스가 크래시 장애를 가질 수 있는 완전 비동기 메시지 전달 분산 시스템에서 컨센서스를 달성하기 위한 결정론적 알고리즘이 [5]불가능하다는 것이 유명한 FLP 불가능 결과에서 증명되었다.이 불가능한 결과는 최악의 스케줄링 시나리오에서 비롯됩니다.이러한 시나리오는 네트워크 내의 인텔리전트 서비스 거부 공격자 등의 적대적인 상황을 제외하고는 실제로 발생할 가능성이 거의 없습니다.대부분의 정상적인 상황에서 공정 스케줄링은 어느 정도 자연 [4]랜덤성을 가집니다.

비동기 모델에서는 동기 컨센서스 프로토콜에 의해 일부 형태의 장애를 처리할 수 있습니다.예를 들어, 통신 링크의 손실은 비잔틴의 실패를 겪은 프로세스로 모델링될 수 있다.

랜덤화된 컨센서스 알고리즘은 네트워크 내의 [6]인텔리전트 서비스 거부 공격자 등의 최악의 스케줄링 시나리오에서도 높은 확률로 안전성과 유효성을 모두 달성함으로써 FLP 불가능의 결과를 회피할 수 있습니다.

허가된 컨센서스와 무허가 컨센서스

컨센서스 알고리즘은 전통적으로 참가 노드 세트가 고정되고 처음에 주어지는 것으로 가정합니다.즉, 이전(수동 또는 자동) 설정 프로세스 중 일부가 서로를 그룹의 멤버로 인증할 수 있는 특정 알려진 참가자 그룹을 허용하고 있습니다.이렇게 명확하게 정의된 폐쇄형 그룹이 인증 멤버를 가지고 있지 않은 경우, 오픈 컨센서스 그룹에 대한 Sybil 공격은 폴트 톨러런스 임계값을 초과할 정도로 충분한 가상 참가자를 만드는 것만으로 비잔틴의 컨센서스 알고리즘조차 물리칠 수 있습니다.

와는 대조적으로 허가 없는 합의 프로토콜은 네트워크 내의 모든 사용자가 동적으로 가입하여 사전 허가 없이 참여할 수 있도록 허용하지만, 대신 Sybil 공격의 위협을 완화하기 위해 다른 형태의 인위적인 비용 또는 진입 장벽을 부과합니다.Bitcoin은 참가자들암호화 해시 퍼즐을 풀기 위해 경쟁하고 확률적으로 블록을 커밋할 권리를 획득하고 투자한 계산 노력에 비례하여 관련 보상을 얻는 작업 증명과 난이도 조정 기능을 이용한 최초의 허가 없는 합의 프로토콜을 도입했다.부분적으로 이 접근법의 높은 에너지 비용에 의해 동기 부여되어 후속 무허가 합의 프로토콜은 지분 증명, 공간 증명권한 증명같은 Sybil 공격 보호를 위한 다른 대안 참여 규칙을 제안하거나 채택했다.

합의문제의 동등성

관심있는 3가지 합의문제는 다음과 같습니다.

신뢰성 높은 브로드캐스트 종료

0~ -n개의 집합 메시지를 전송하여 통신합니다. 0 0 다음과 같은 값 v 모든 프로세스에 전송해야 합니다.

  1. 0 0 올바르면 모든 올바른 프로세스는 v v합니다.
  2. 두 개의 올바른 프로세스에 대해 각 프로세스는 동일한 값을 받습니다.

그것은 장군의 문제로도 알려져 있다.

컨센서스

합의 프로토콜에 대한 공식 요건은 다음을 포함할 수 있다.

  • 동의:모든 올바른 프로세스는 동일한 값으로 일치해야 합니다.
  • 취약한 유효성:각 올바른 프로세스에 대한 출력은 올바른 프로세스의 입력이어야 합니다.
  • 강력한 타당성:모든 올바른 프로세스가 동일한 입력값을 수신할 경우 모두 해당 값을 출력해야 합니다.
  • 종료:모든 프로세스가 최종적으로 출력 값을 결정해야 합니다.

약한 인터랙티브 일관성

부분적으로 동기화된 시스템에서 n개의 프로세스(시스템은 동기 기간이 좋거나 나쁘거나 번갈아)의 경우 각 프로세스는 개인 값을 선택합니다.프로세스는 라운드로 서로 통신하여 공공 가치를 결정하고 다음과 같은 [7]요건을 가진 합의 벡터를 생성합니다.

  1. 올바른 프로세스가 v v를 전송하면 모든 올바른 프로세스는v{ v 또는 nothing(프로퍼티)을 수신합니다.
  2. 올바른 프로세스에 의해 라운드로 송신되는 모든 메시지는, 모든 올바른 프로세스(즉시 속성)에 의해 같은 라운드로 수신됩니다.

한 유형의 모델에서 발생한 문제에 대한 해결책이 다른 유형의 모델에서 발생한 문제에 대한 해결책이 될 수 있다는 점에서 이러한 문제의 변동은 동등하다는 것을 보여줄 수 있습니다.예를 들어, 동기 인증된 메시지 전달 모델에서 약한 비잔틴 일반 문제에 대한 솔루션은 약한 대화형 [8]일관성을 위한 솔루션으로 이어집니다.인터랙티브 일관성 알고리즘은 각 프로세스가 합의 [9]벡터의 다수값을 합의값으로 선택함으로써 합의문제를 해결할 수 있다.

일부 합의 문제에 대한 해결 가능성 결과

만약 tn<>는 problem,[10][11]는 동 로마 군사령관을 해결하t-resilient 익명의 동기식 프로토콜;13{\displaystyle{\tfrac{t}{n}}<>{\tfrac{1}{3}}}과 약한 비잔틴 제너럴스 절차의 case[8]실패와 n{n\displaystyle}의 t{\displaystyle지}수이다 수이다.이.

ff가비잔틴인 의 프로세서를 한 시스템의 경우, 구술 메시지 [12]모델에서 n 3 \ n대한 문제를 해결하는 알고리즘은 존재하지 않는 것으로 나타났습니다.증명은 먼저 3노드 n)의 불가능성을 보여주고 이 결과를 사용하여 프로세서의 파티션에 대해 논의함으로써 구성됩니다.쓰기/쓰기 모델에는 n + n[2]을 허용하는 프로토콜이 있습니다.

완전 비동기 시스템에서는 비사소한 [5]속성만 필요한 경우에도 1개 이상의 크래시 장애를 허용할 수 있는 합의 솔루션은 없습니다.이 결과는 작가 마이클 J의 이름을 딴 FLP 불가능 증명이라고 불리기도 한다. 피셔, 낸시 린치, 마이크 패터슨은 이 중요한 업적으로 다이크스트라 상을 받았다.공정성 가정하에서도 [13]FLP 결과가 유지되는 것이 기계적으로 검증되었습니다.그러나, FLP는 합의에 도달할 수 없다고 기술하지 않는다. 단지 모델의 가정 하에서, 어떤 알고리즘도 항상 제한된 시간 내에 합의에 도달할 수 없다.실제로 그것은 일어날 가능성이 매우 낮다.

일부 합의 프로토콜

Leslie LamportPaxos 컨센서스 알고리즘과 Raft와 같은 이 알고리즘의 변형은 널리 배포된 분산형 및 클라우드 컴퓨팅 시스템에 사용됩니다.이러한 알고리즘은 일반적으로 동기식으로 선출한 리더에 의존하여 진전을 이루며 비잔틴의 실패가 아닌 크래시만 허용합니다.

비잔틴 실패를 허용하는 다항식 시간 이진 합의 프로토콜의 예로는 Garay와 Berman의 위상[14] 킹 알고리즘이 있습니다.이 알고리즘은 n개의 프로세스와 최대 f개의 장애를 가진 동기 메시지 전달 모델에서 합의를 해결합니다(n > 4f).위상킹 알고리즘에는 위상당 2라운드가 있는 f + 1 위상이 있습니다.각 프로세스는 우선 출력을 추적합니다(처음에는 프로세스 자체의 입력 값과 동일).각 단계의 첫 번째 라운드에서 각 프로세스는 자신의 우선값을 다른 모든 프로세스에 브로드캐스트합니다.그런 다음 모든 프로세스에서 값을 수신하여 어떤 값이 과반수 값인지와 그 수를 결정합니다.위상의 두 번째 라운드에서 현재 위상의 번호와 일치하는 id를 가진 프로세스가 위상의 킹으로 지정됩니다.킹은 1라운드에서 관찰한 과반수 값을 브로드캐스트하여 동점자 역할을 합니다.그런 다음 각 프로세스는 다음과 같이 기본 값을 업데이트합니다.첫 번째 라운드에서 관측된 공정의 과반수 값 카운트가 n/2 + f보다 크면 공정의 선호도가 해당 과반수 값으로 변경됩니다. 그렇지 않으면 위상 킹 값을 사용합니다.f + 1 단계의 마지막에 프로세스는 원하는 값을 출력합니다.

구글은 [15]Chubby라고 불리는 분산 잠금 서비스 라이브러리를 구현했다.Chubby는 복제 데이터베이스에 저장된 작은 파일에 잠금 정보를 유지하여 장애 발생 시 고가용성을 실현합니다.데이터베이스는 Paxos 컨센서스알고리즘에 기초한 폴트 톨러런스 로그레이어 위에 실장됩니다.이 방식에서 Chubby 클라이언트는 복제된 로그에 액세스/갱신하기 위해 Paxos 마스터와 통신합니다.즉,[16] 파일에 대한 읽기/쓰기입니다.

많은 피어투피어 온라인 실시간 전략 게임에서는 게임 내 플레이어 간의 게임 상태를 관리하기 위해 변경된 Lockstep 프로토콜을 컨센서스 프로토콜로 사용합니다.각 게임 동작은 전체 게임 상태의 해시와 함께 게임 내의 다른 모든 플레이어에게 게임 상태 델타 방송을 일으킨다.각 플레이어는 자신의 게임 상태에 델타를 적용하여 게임 상태 해시를 비교함으로써 변화를 검증한다.해시가 동의하지 않으면 투표가 이루어지며, 게임 상태가 마이너리티인 플레이어는 연결 해제되고 게임에서 제외됩니다(디싱크로 알려져 있습니다).

또 다른 잘 알려진 접근법은 MSR형 알고리즘이라고 불리며,[17][18][19] 컴퓨터 과학에서 제어 이론까지 폭넓게 사용되어 왔다.

원천 동기 인증 임계값 라운드 메모들
Pease-Shostak-Lamport [10] 동기 오랄 O ( f) { O ( { ) }
Pease-Shostak-Lamport [10] 동기 쓰인 O ( f) { O ( { ) }
벤오르 비동기 오랄 {O(2예상) \ f < \ { }일 때 O ( O ( 반올림됩니다.
돌레브 [21] 동기 오랄 O log )({}\ f
돌레프 스트롱 동기 쓰인 전체 O2){ O
돌레프 스트롱 동기 쓰인 전체 O ( ) { O ( ) }
펠드만 미칼리 동기 오랄 ( ){ O (1} (예상)
카츠구 동기 쓰인 ( ){ O (1} (예상) PKI 필요
PBFT [24] 비동기(안전)--동기(활용) 오랄
허니오소리 비동기 오랄 ( logn) { O ( \ n } (예상) per tx O (){ ( n ) 공개 키 암호화 필요
아브라함 [26] 동기 쓰인
비잔틴 협정은 사소한 것으로 만들었다. 동기 시그니처 {\displaystyle 9( 9 디지털 서명 필요

권한 없는 합의 프로토콜

Bitcoin은 열린 P2P 네트워크에서 허가 없는 합의를 얻기 위해 작업 증명, 난이도 조정 기능, 재구성 기능을 사용합니다.Bitcoin의 블록 체인 또는 분산 원장을 확장하기 위해, 광부들은 해결책을 찾을 확률이 초당 해시 단위로 소비되는 계산 노력에 비례하는 암호 퍼즐을 풀려고 시도합니다.이러한 퍼즐을 처음 푸는 노드는 제안된 다음 트랜잭션 블록 버전을 원장에 추가하고 다른 모든 노드에서 최종적으로 수락합니다.네트워크 내의 모든 노드가 작업 증명 문제를 해결하려고 시도할 수 있으므로 공격자가 네트워크 계산 자원의 50% 이상을 보유하지 않는 한 Sybil 공격은 원칙적으로 불가능합니다.

다른 암호 화폐(예: NEO, STRATIS 등)는 노드가 블록 추가 및 지분 비율에 비례하여 관련 보상을 얻기 위해 경쟁하는 지분 증명(Proof of Stake)을 사용하거나 기존 암호 화폐가 일정 기간 할당되고 잠기거나 고정됩니다.'작업 증명' 시스템보다 '지분 증명'의 장점 중 하나는 후자가 요구하는 높은 에너지 소비량입니다.예를 들어, Bitcoin mining(2018년)은 체코 또는 [29]요르단과 유사한 양의 비재생 에너지원을 소비할 것으로 추정된다.

리플과 같은 일부 암호화 화폐는 노드 검증 시스템을 사용하여 원장을 검증합니다.Riple Protocol Consensus Algorithm(RPCA)이라고 불리는 리플이 사용하는 이 시스템은 라운드로 동작합니다.스텝 1: 모든 서버가 유효한 후보 트랜잭션 목록을 작성합니다.스텝 2: 각 서버는 Unique Nodes List(UNL; 고유 노드 목록)에서 가져온 모든 후보를 통합하고 사실 여부를 투표합니다.스텝 3: 최소 임계값을 초과하는 트랜잭션을 다음 라운드로 넘깁니다.스텝 4: 최종 라운드는 80%의[30] 동의를 필요로 합니다.

진입 장벽을 부과하고 Sybil 공격에 저항하기 위해 허가 없는 합의 프로토콜에 사용되는 다른 참여 규칙에는 권한 증명, 공간 증명, 화상 증명 또는 경과 시간 증명 등이 있다.이러한 대안은 작업 [31]증명에 의해 소비되는 대량의 계산 에너지에 의해 크게 동기 부여됩니다.공간 증명은 버스트코인과 같은 크립토코인이 사용합니다.

어떤 행동이나 자원에 대한 투자 금액에 비례하여 참가자에게 보상을 제공하는 위의 허가 없는 참여 규칙과 대조적으로, 인격 증명 프로토콜은 각 실제 인간 참가자에게 경제적 [32][33]투자에 관계없이 허가 없는 합의에서 정확히 한 단위의 투표력을 부여하는 것을 목표로 한다.인격증명에 대한 합의권력의 1인당 분배를 달성하기 위해 제안된 접근법에는 물리적 가명 당사자,[34] 소셜 네트워크,[35] 가명화된 정부 발행 신원 [36]및 생체 [37]인식 등이 포함된다.

합의번호

공유 메모리 시스템에서 컨센서스 문제를 해결하려면 동시 객체를 도입해야 합니다.동시 객체 또는 공유 객체는 동시 프로세스가 합의에 도달할 수 있도록 지원하는 데이터 구조입니다.크리티컬 섹션을 사용하는 기존 구현에서는 크리티컬 섹션 내에서 일부 프로세스가 중단되거나 허용할 수 없을 정도로 오랜 시간 동안 절전 상태가 되면 크래시의 위험이 있습니다.연구자들은 대기자유를 알고리즘이 한정된 수의 단계로 완료된다는 보증으로 정의했다.

동시 객체의 컨센서스 수는 대기 없는 [38]구현에서 지정된 객체에 의해 컨센서스에 도달할 수 있는 시스템 내 프로세스의 최대 수로 정의됩니다.컨센서스 가 ndisplaystyle n 오브젝트는 컨센서스 번호가 n n 인 오브젝트는 구현할 수 있지만 컨센서스 번호가 높은 오브젝트는 구현할 수 없습니다.컨센서스 번호는 Herlihy의 동기화 [39]객체 계층이라고 불리는 것을 형성합니다.

합의번호 물건들
아토믹 읽기/쓰기 레지스터, 뮤텍스
테스트 및 설정, 스왑, 가져오기 및 추가, 대기 없는또는 스택
... ...
n-register 할당
... ...
비교/실행, 로드링크/스토어 조건부,[40] 메모리 간 이동 및 스왑, 피크 조작이 있는 큐, fetch&cons, 스틱바이트

계층에 따르면 읽기/쓰기 레지스터는 2-프로세스 시스템에서도 컨센서스를 해결할 수 없다.스택이나 큐와 같은 데이터 구조는 두 프로세스 간의 합의만 해결할 수 있습니다.그러나 일부 동시 객체는 범용 객체(표에서 입니다. 즉, 임의의 수의 프로세스 간의 컨센서스를 해결할 수 있으며 동작 [38]시퀀스를 통해 다른 객체를 시뮬레이션할 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c Coulouris, George; Jean Dollimore; Tim Kindberg (2001), Distributed Systems: Concepts and Design (3rd Edition), Addison-Wesley, p. 452, ISBN 978-0201-61918-8
  2. ^ a b c d Dolev, D.; Strong, H.R. (1983). "Authenticated algorithms for Byzantine agreement". SIAM Journal on Computing. 12 (4): 656–666. doi:10.1137/0212045.
  3. ^ Gong, Li; Lincoln, Patrick; Rushby, John (1995). "Byzantine Agreement with authentication". Dependable Computing for Critical Applications. 10.
  4. ^ a b Aguilera, M. K. (2010). "Stumbling over Consensus Research: Misunderstandings and Issues". Replication. Lecture Notes in Computer Science. Vol. 5959. pp. 59–72. doi:10.1007/978-3-642-11294-2_4. ISBN 978-3-642-11293-5.
  5. ^ a b Fischer, M. J.; Lynch, N. A.; Paterson, M. S. (1985). "Impossibility of distributed consensus with one faulty process" (PDF). Journal of the ACM. 32 (2): 374–382. doi:10.1145/3149.214121. S2CID 207660233.
  6. ^ Aspnes, James (May 1993). "Time- and Space-Efficient Randomized Consensus". Journal of Algorithms. 14 (3): 414–431. doi:10.1006/jagm.1993.1022.
  7. ^ Milosevic, Zarko; Martin Hutle; Andre Schiper (2009). Unifying Byzantine Consensus Algorithms with Weak Interactive Consistency. Principles of Distributed Systems, Lecture Notes in Computer Science. Lecture Notes in Computer Science. Vol. 5293. pp. 300–314. CiteSeerX 10.1.1.180.4229. doi:10.1007/978-3-642-10877-8_24. ISBN 978-3-642-10876-1.
  8. ^ a b Lamport, L. (1983). "The Weak Byzantine Generals Problem". Journal of the ACM. 30 (3): 668. doi:10.1145/2402.322398. S2CID 1574706.
  9. ^ Fischer, Michael J. "The Consensus Problem in Unreliable Distributed Systems (A Brief Survey)" (PDF). Retrieved 21 April 2014.
  10. ^ a b c Lamport, L.; Shostak, R.; Pease, M. (1982). "The Byzantine Generals Problem" (PDF). ACM Transactions on Programming Languages and Systems. 4 (3): 382–401. CiteSeerX 10.1.1.64.2312. doi:10.1145/357172.357176.
  11. ^ Lamport, Leslie; Marshall Pease; Robert Shostak (April 1980). "Reaching Agreement in the Presence of Faults" (PDF). Journal of the ACM. 27 (2): 228–234. CiteSeerX 10.1.1.68.4044. doi:10.1145/322186.322188. S2CID 6429068. Retrieved 2007-07-25.
  12. ^ Attiya, Hagit (2004). Distributed Computing 2nd Ed. Wiley. pp. 101–103. ISBN 978-0-471-45324-6.
  13. ^ Bisping, Benjamin; et al. (2016), Blanchette, Jasmin Christian; Merz, Stephan (eds.), Mechanical Verification of a Constructive Proof for FLP, Lecture Notes in Computer Science, vol. 9807, Springer International Publishing, doi:10.1007/978-3-319-43144-4_7, ISBN 978-3-319-43144-4
  14. ^ Berman, Piotr; Juan A. Garay (1993). "Cloture Votes: n/4-resilient Distributed Consensus in t + 1 rounds". Theory of Computing Systems. 2. 26: 3–19. doi:10.1007/BF01187072. S2CID 6102847.
  15. ^ Burrows, M. (2006). The Chubby lock service for loosely-coupled distributed systems (PDF). Proceedings of the 7th Symposium on Operating Systems Design and Implementation. USENIX Association Berkeley, CA, USA. pp. 335–350.
  16. ^ C., Tushar; Griesemer, R; Redstone J. (2007). Paxos Made Live – An Engineering Perspective (PDF). Proceedings of the Twenty-sixth Annual ACM Symposium on Principles of Distributed Computing. Portland, Oregon, USA: ACM Press New York, NY, USA. pp. 398–407. doi:10.1145/1281100.1281103. Archived from the original (PDF) on 2014-12-12. Retrieved 2008-02-06.
  17. ^ LeBlanc, Heath J. (April 2013). "Resilient Asymptotic Consensus in Robust Networks". IEEE Journal on Selected Areas in Communications. 31 (4): 766–781. CiteSeerX 10.1.1.310.5354. doi:10.1109/JSAC.2013.130413. S2CID 11287513.
  18. ^ Dibaji, S. M. (May 2015). "Consensus of second-order multi-agent systems in the presence of locally bounded faults". Systems & Control Letters. 79: 23–29. doi:10.1016/j.sysconle.2015.02.005.
  19. ^ Dibaji, S. M. (July 2017). "Resilient consensus of second-order agent networks: Asynchronous update rules with delays". Automatica. 81: 123–132. arXiv:1701.03430. Bibcode:2017arXiv170103430M. doi:10.1016/j.automatica.2017.03.008. S2CID 7467466.
  20. ^ Ben-Or, Michael (1983). "Another advantage of free choice (extended abstract): Completely asynchronous agreement protocols". Proceedings of the second annual ACM symposium on Principles of distributed computing. pp. 27–30. doi:10.1145/800221.806707. S2CID 38215511.
  21. ^ Dolev, Danny; Fisher, Michael J.; Fowler, Rob; Lynch, Nancy; Strong, H. Raymond (1982). "An Efficient Algorithm for Byzantine Agreement without Authentication". Information and Control. 52 (3): 257–274. doi:10.1016/S0019-9958(82)90776-8.
  22. ^ Feldman, Pesech; Micali, Sylvio (1997). An optimal probabilistic protocol for synchronous Byzantine agreement. SIAM Journal on Computing (Technical report). doi:10.1137/S0097539790187084.
  23. ^ Katz, Jonathan; Koo, Chiu-Yuen (2006). On Expected Constant-Round Protocols for Byzantine Agreement. CRYPTO. doi:10.1007/11818175_27.
  24. ^ Castro, Miguel; Liskov, Barbara (1999). Practical Byzantine Fault Tolerance (PDF). OSDI.
  25. ^ Miller, Andrew; Xia, Yu; Croman, Kyle; Shi, Elaine; Song, Dawn (2016). The honey badger of BFT protocols. CCS. doi:10.1145/2976749.2978399.
  26. ^ Abraham, Ittai; Devadas, Srinivas; Dolev, Danny; Nayak, Kartik; Ren, Ling (2017). Efficient Synchronous Byzantine Consensus (Technical report).
  27. ^ Micali, Sylvio (2018). "Byzantine agreement made trivial" (PDF).
  28. ^ Chen, Jing; Micali, Silvio (2016). "ALGORAND". arXiv:1607.01341v9 [cs.CR].
  29. ^ Irfan, Umair (June 18, 2019). "Bitcoin is an energy hog. Where is all that electricity coming from?". Vox.
  30. ^ Schwartz D, YoungsN, Brito A. 2014 The Ripple 프로토콜 컨센서스 알고리즘
  31. ^ 작업 증명에 대한 대체 전략은 무엇입니까?
  32. ^ Maria Borge, Eleftherios Kokoris-Kogias, Philipp Jovanovic, Linus Gasser, Nicolas Gailly, Bryan Ford (29 April 2017). Proof-of-Personhood: Redemocratizing Permissionless Cryptocurrencies. IEEE Security & Privacy on the Blockchain (IEEE S&B). doi:10.1109/EuroSPW.2017.46.{{cite conference}}: CS1 maint: 작성자 파라미터 사용(링크)
  33. ^ Divya Siddarth, Sergey Ivliev, Santiago Siri, Paula Berman (13 Oct 2020). "Who Watches the Watchmen? A Review of Subjective Approaches for Sybil-resistance in Proof of Personhood Protocols". arXiv:2008.05300 [cs.CR].{{cite arxiv}}: CS1 maint: 작성자 파라미터 사용(링크)
  34. ^ Ford, Bryan; Strauss, Jacob (1 April 2008). An Offline Foundation for Online Accountable Pseudonyms. 1st Workshop on Social Network Systems - SocialNets '08. pp. 31–6. doi:10.1145/1435497.1435503. ISBN 978-1-60558-124-8.
  35. ^ Gal Shahaf, Ehud Shapiro, Nimrod Talmon (October 2020). Genuine Personal Identifiers and Mutual Sureties for Sybil-Resilient Community Growth. International Conference on Social Informatics. doi:10.1007/978-3-030-60975-7_24.{{cite conference}}: CS1 maint: 작성자 파라미터 사용(링크)
  36. ^ Deepak Maram, Harjasleen Malvai, Fan Zhang, Nerla Jean-Louis, Alexander Frolov, Tyler Kell, Tyrone Lobban, Christine Moy, Ari Juels, Andrew Miller (28 Sep 2020). "CanDID: Can-Do Decentralized Identity with Legacy Compatibility, Sybil-Resistance, and Accountability" (PDF).{{cite web}}: CS1 maint: 작성자 파라미터 사용(링크)
  37. ^ Mohammad-Javad Hajialikhani, Mohammad-Mahdi Jahanara (20 June 2018). "UniqueID: Decentralized Proof-of-Unique-Human". arXiv:1806.07583.{{cite arxiv}}: CS1 maint: 작성자 파라미터 사용(링크)
  38. ^ a b Herlihy, Maurice. "Wait-Free Synchronization" (PDF). Retrieved 19 December 2011.
  39. ^ Imbs, Damien; Raynal, Michel (25 July 2010). "The multiplicative power of consensus numbers" (PDF). Proceedings of the 29th ACM SIGACT-SIGOPS Symposium on Principles of Distributed Computing. Association for Computing Machinery: 26–35. doi:10.1145/1835698.1835705. ISBN 9781605588889. S2CID 3179361. Retrieved 22 April 2021.
  40. ^ Fich, Faith; Hendler, Danny; Shavit, Nir (25 July 2004). "On the inherent weakness of conditional synchronization primitives". Proceedings of the Twenty-third Annual ACM Symposium on Principles of Distributed Computing. Association for Computing Machinery: 80–87. CiteSeerX 10.1.1.96.9340. doi:10.1145/1011767.1011780. ISBN 1581138024. S2CID 9313205.

추가 정보