원제: " 잠깐, 왜 다시 합의가 필요한가요? "
작성자: Shresth Agrawal, Dionysis Zindros, k4m4, pod.network
편집자: Tia, Techub News
지구가 우주의 중심이라는 오해는 수세기 동안 지속되었습니다. 당시 사람들은 태양, 별, 행성이 모두 지구 주위를 돈다고 믿었습니다. 용감한 사상가들이 태양중심설에 대한 진실을 밝히고 나서야 천문학에 혁명을 일으키고 천동설 모델을 깨뜨렸습니다.
천문학의 세계와 마찬가지로 블록체인 세계에도 오랜 오해가 있습니다. 합의는 분산형 결제를 구축하기 위한 필수 조건입니다. 우리는 비트코인과 이더리움에 갇혀 있습니다.
분산형 통화에는 분산형 합의 솔루션이 필요합니다. —이더리움 백서, 2014년
합의는 실제로 적입니다. 합의를 제거함으로써 Google 검색만큼 빠르게 거래를 완료할 수 있습니다.
합의 딜레마
Eve는 첫 번째 Tesla를 구매하기 위해 비트코인을 모았습니다. Bob과 Charlie는 Tesla 대리점 운영자입니다.
Eve는 Bob에게 돈을 이체한다는 메시지에 서명합니다. Bob은 Eve가 서명한 지불금을 받았지만 아직 그녀에게 자동차 열쇠를 건네는 것이 불편합니다. 왜냐하면 Bob은 Eve가 Charlie에게 동시에 지불 거래에 서명하지 않도록 해야 하기 때문입니다(이중 지출).
그림 1: Eve는 동일한 토큰을 Bob과 Charlie에게 전송하기 위해 이중 지출을 시도합니다.
일반적으로 이중지불 문제를 해결하기 위해 블록체인 합의가 사용됩니다. 합의는 트랜잭션을 입력으로 받아들이고 대다수의 노드가 동의하는 전역 순서로 트랜잭션을 출력합니다.
그림 2: 합의는 순서가 지정되지 않은 "mempool" 트랜잭션을 입력으로 받아 모든 사람이 동의하는 순서로 출력하는 블랙박스 역할을 합니다.
이브에게로 돌아갑니다. Bob에게 Eve를 지불하는 트랜잭션을 tx1이라고 하고 Charlie에게 지불하는 트랜잭션을 tx2라고 합니다. 블록체인은 합의를 통해 거래 순서를 보장합니다. 이중 지출이 발생하면 블록에서 처음으로 패키징된 거래가 유효합니다.
이브에게로 돌아갑니다. Bob에게 Eve를 지불하는 트랜잭션을 tx1이라고 하고 Charlie에게 지불하는 트랜잭션을 tx2라고 합니다. 블록체인은 합의를 통해 거래 순서를 보장합니다. 이중 지출이 발생하면 블록에서 처음으로 패키징된 거래가 유효합니다.
한 당사자만 참여하는 네트워크에서는 합의에 도달하는 것이 간단합니다. 해당 당사자는 단순히 수신된 순서대로 트랜잭션을 출력합니다. 그러나 둘 이상의 당사자가 관련된 네트워크에서는 네트워크 상태의 차이로 인해 트랜잭션이 다른 순서로 수신됩니다. 이 외에도 악의적인 당사자는 의도적으로 상충되는 견해를 제시하거나 네트워크 지연을 초래할 수 있습니다. 그렇다면 글로벌 질서에 어떻게 동의할 수 있을까요?
우리는 중앙은행을 이용해 모든 거래를 관리할 수 있습니다. 그러나 우리는 신뢰할 수 있는 중개자에게 의존하고 싶지 않기 때문에 검증자라고 불리는 참가자 그룹을 선택하고 그 중 2/3 이상이 정직하다고 가정합니다.
검증인은 여러 차례의 의사소통을 통해 합의에 도달합니다. 때때로 리더는 무작위로 선택되어 자신이 서명한 블록에 보류 중인 트랜잭션을 배치하여 글로벌 질서를 제안합니다. 나머지 검증인은 리더의 블록에 투표합니다. 검증인 중 2/3의 서명이 있는 블록은 공증된 것으로 간주됩니다. 악의적인 리더는 선택적으로 트랜잭션을 검열하거나 심지어 블록 생성에 실패하여 프로세스를 다시 시작하게 할 수도 있습니다. 이 반복 프로세스를 여러 번 반복하면 결국 모든 사람이 동일한 순서에 도달할 수 있습니다. 합의에 도달하는 과정은 느리다.
대조적으로, 웹 애플리케이션은 빠르고 단일 왕복만 필요합니다. 클라이언트는 HTTP 요청을 보내고 서버는 HTTP 응답을 반환합니다.
전체 정렬이 필요합니까?
다시 생각해 보겠습니다. 모든 트랜잭션이 전역 상태의 일부여야 합니까?
Alice가 Bob에게 지불하고 Charlie가 Dave에게 지불하는 두 가지 지불 거래가 있다고 가정합니다. 두 결제는 독립적이기 때문에 실제로 어떤 순서로든 실행될 수 있습니다. 즉, 어떤 방식으로 실행되더라도 결과 상태는 변경되지 않습니다.
그림 3: Alice가 Bob에게 지불한 금액은 Charlie가 Dave에게 지불한 금액과 별개입니다. 이러한 거래가 정산되는 순서에 관계없이 결과는 동일하게 유지됩니다.
합의는 이중 지출 문제를 해결할 수 있지만 그에 따른 지연 비용을 피할 수 있습니까?
방법은 다음과 같습니다. 합의와 유사하게 검증인 그룹이 여전히 필요하며, 이들 중 2/3 이상이 정직하다고 가정됩니다. 검증인은 글로벌 주문에 동의하는 대신 서명을 통해 수신한 거래가 유효함(현지 관점에 따라)임을 보장합니다. 거래가 검증인의 2/3 이상에 의해 확인되는 한 유효한 거래입니다.
Eve는 검증인에게 두 개의 이중 지출 거래를 보냅니다. 첫째, 두 거래에 동시에 서명한 부정직한 검증인 그룹이 있습니다. 그런 다음 그녀는 정직한 검증자를 두 그룹으로 나누고(각 그룹이 전체 검증자 수의 1/3을 차지한다고 가정) 서로 다른 트랜잭션을 서로 다른 그룹에 보냅니다(예: Bob에게 첫 번째 그룹으로 트랜잭션을 보내고 Bob에게 트랜잭션을 보냅니다. 두 번째 그룹) Charlie에게 전송된 트랜잭션 그룹입니다. 그러나 Eve는 여전히 이중 지출 공격을 수행하기 위해 이 두 거래에 대한 충분한 서명을 수집할 수 없었습니다.
이 분산 네트워크를 다시 시각화하려면 이 네트워크에 N개의 검증자가 있고 그 중 1/3 미만이 악성이라고 가정합니다.
정직한 사용자: 모든 검증인에게 새로운 거래를 알리고, 검증인의 2/3 이상의 서명을 받은 후 거래가 완료된 것으로 간주되고 거래는 인증서를 얻습니다.
정직한 검증자: 사용되지 않은 토큰의 로컬 목록을 유지하고 토큰에 대한 첫 번째 유효한 거래에만 서명합니다.
이중 지출을 완료하려면 두 이중 지출 거래 모두 인증서를 획득해야 합니다. 즉, 검증자의 1/3 이상이 부정직해야 합니다.
정직한 검증자: 사용되지 않은 토큰의 로컬 목록을 유지하고 토큰에 대한 첫 번째 유효한 거래에만 서명합니다.
이중 지출을 완료하려면 두 이중 지출 거래 모두 인증서를 획득해야 합니다. 즉, 검증자의 1/3 이상이 부정직해야 합니다.
이 비합의 프로토콜은 검증자 간의 통신이 필요하지 않으며 단 한 번의 네트워크 왕복이 필요합니다! 더욱이, 이 아키텍처는 학문적 용어가 합의 방송인 블록체인 문헌 에서 잘 연구되었습니다.
잠재적인 위험이 있나요? Eve가 이중 지출을 시도하면 합의는 전 세계적으로 거래를 주문하고 두 거래 중 첫 번째 거래만 허용됩니다. 그러나 우리가 설명하는 프로토콜에서 프로토콜은 Eve의 모든 거래가 결국 완료될 것이라고 보장할 수 없습니다. Eve의 계정은 거래 상대방에게 어떠한 보증도 제공할 필요가 없기 때문에 영구적으로 차단될 수도 있습니다.
그렇다면 왜 다시 합의가 필요한가요?
우리는 합의가 없습니다.
지불 외에도 "백" 또는 공통 하위 집합 프로토콜(예: 온체인 경매, 투표, 제한 주문), 추가 전용 정보 흐름(분산형 소셜, 공증) 및 충돌 없는 복제 데이터로 표현될 수 있는 프로토콜 유형(소셜 그래프, 평판 시스템, 게임)은 모두 글로벌 순서 없이 실행될 수 있습니다. 현재 주문에 의존하는 많은 DeFi 프로토콜은 글로벌 주문 없이도 실행될 수 있습니다.
포드는 합의를 제거하여 Google 검색만큼 빠르고 비트코인만큼 안전한 분산형 시스템을 구현합니다.
모든 댓글