Vitalik Buterin의 손글씨: 블록체인 검증의 철학
편집자 주: 이 기사의 출처는골든 파이낸스, 승인을 받아 Odaily에서 재인쇄했습니다.
편집자 주: 이 기사의 출처는
골든 파이낸스
이더리움의 공동창업자 비탈릭 부테린(Vitalik Buterin)은 8월 17일 자신의 개인 홈페이지에 "블록체인 검증 철학"이라는 논문을 게재했다. 진세파이낸스는 논문을 다음과 같이 정리했다.
블록체인을 검증해야 하는 이유는 무엇입니까?
블록체인의 가장 강력한 기능 중 하나는 블록체인 실행의 각 부분을 독립적으로 검증하는 기능입니다. 대부분의 블록체인 채굴자(또는 지분 증명 블록체인의 유효성 검사기)가 공격자에 의해 인수되더라도 해당 공격자가 유효하지 않은 블록을 푸시하려고 하면 네트워크는 단순히 해당 블록을 거부합니다. 사용자가 일정 시간 내에 해당 블록을 검증하지 않은 경우에도 잠재적으로 자동 경고를 받고 공격자의 블록체인이 유효하지 않은지 확인하고 규칙에 따라 체인을 수락하기 전에 해당 블록을 자동으로 거부할 수 있습니다.
그러나 실제로 얼마나 많은 검증이 필요합니까? 100명의 독립적인 유효성 검사기가 필요합니까, 아니면 1000명의 독립적인 유효성 검사기가 필요합니까? 세상의 모든 평범한 사람이 모든 거래를 확인하기 위해 소프트웨어를 실행하는 문화가 필요합니까? "Satoshi Nakamoto"가 원래 만든 단일 작업 증명 체인보다 더 나은 합의 메커니즘으로 블록체인을 구축하려면 위의 문제를 해결하는 것이 매우 중요한 과제가 될 것입니다.
보조 제목
블록체인을 검증해야 하는 이유는 무엇입니까?
블록체인 검증은 두 가지 주요 이유로 사용자에게 매우 유익합니다.
1. 우선, 블록체인을 확인하면 노드가 정식 체인에서 말하기를 올바르게 결정할 수 있는 기회를 극대화합니다. 해당 체인을 지원하는 가장 많은 채굴자/검증자가 있는 유효한 블록체인"(예: 비트코인에서 "가장 긴 유효 체인"). 유효하지 않은 체인은 정의상 거부되며, 여러 개의 유효한 체인 중에서 하나를 선택하면 채굴자/검증자로부터 가장 많은 지원을 받는 체인이 승리합니다. 따라서 모든 유효성 조건을 확인할 수 있는 노드가 있는 경우 어떤 체인이 유효한지 여부를 감지하면 캐노니컬 체인을 올바르게 감지할 가능성이 최대화됩니다.
2. 둘째, 블록체인의 유효성을 검증해야 하는 더 깊은 이유가 있습니다. 강력한 행위자가 프로토콜에 대한 변경(예: 토큰 발행 변경)을 시도하고 다른 사람이 없다면 대다수의 채굴자에 의해 지원된다고 가정합니다. 블록체인을 검증하면 이 공격이 성공하기 쉽습니다. 왜냐하면 모든 고객이 기본적으로 새 체인을 수락하기 때문입니다. 그러나 일반 사용자가 확인하는 경우 조정 문제는 반대쪽에 있습니다. 계약을 변경하려는 사람은 사용자가 계약에 동의하기 위해 소프트웨어 패치를 적극적으로 다운로드하도록 설득해야 할 책임이 있습니다.
충분한 사용자가 유효성을 검사하면 프로토콜에 대한 강제 변경에 대한 불필요한 혼란과 분쟁을 피할 수 있습니다. 혼돈은 많은 피해를 유발할 수 있으며 이를 해결하기 위해 대역 외 사회적 조정이 필요하며 공격할 동기가 없습니다. 대다수의 사용자가 (직접 또는 간접적으로) 유효성을 검사하고 공격이 대다수의 채굴자에 의해서만 지원되는 경우 공격은 기본적으로 실패로 설정되며 이는 모든 결과 중 가장 좋은 결과입니다.
보조 제목
관점 정의 vs. 관점 조정
아래 이미지는 Gavin Andresen의 "정의에 따른" 보기의 예입니다.비트코인와사비 월렛의 또 다른 관점은 전체 노드가 가치 있는 이유를 설명하는 관점에서 더 간단합니다.
이 보기에는 두 가지 핵심 부분이 있습니다.
1. 기본적이고 양도할 수 없는 규칙이라고 생각하는 것을 받아들이지 않는 체인의 버전은 정의에 따라
비트코인
(또는 이더리움 또는 다른 블록체인) 체인을 수락하는 다른 사람의 수에 관계없이.
2. 중요한 것은 당신이 받아들일 수 있다고 생각하는 체인의 규칙을 지켜야 한다는 것입니다.
그러나 저는 이러한 "개인주의적" 견해가 매우 잘못되었다고 생각합니다. 그 이유를 알아보기 위해 우리가 두려워하는 상황을 살펴보겠습니다. 대다수의 참가자가 귀하가 수용할 수 없다고 생각하는 프로토콜 규칙의 일부 변경을 수락할 수 있습니다. 예를 들어, 거래 수수료가 낮고 거의 모든 사람이 블록체인을 안전하게 유지하기 위해 발행을 늘리는 새로운 규칙 세트로 변경하는 데 동의하지만 고집스럽게 계속 실행하는 미래가 있다고 상상해보십시오. 대부분의 노드가 아닌 다른 체인으로 이전 규칙 및 분기.
자신의 관점에서 허용되는 이전 규칙에 따라 작동하는 시스템에 여전히 토큰을 넣을 수 있습니다. 하지만 그래서? 다른 사용자는 귀하의 토큰을 전혀 수락하지 않으며 거래소도 귀하의 토큰을 수락하지 않습니다. 가격 웹 사이트는 토큰 가격을 나열하지만 데이터 소스는 확실히 주요 체인의 토큰을 가리킬 것이므로 토큰은 가치가 없습니다. 암호화폐와 블록체인은 근본적으로 사회적 구성물이며 아무도 믿지 않는다면 아무 의미가 없습니다.
그렇다면 대안적 견해는 무엇인가? 여기에 제시된 핵심 아이디어는 블록체인을 조정 문제를 통해 엔지니어링 보안으로 보는 것입니다.
일반적으로 우리 세계에서 발생하는 대부분의 조정 문제는 나쁜 것입니다. 다음은 몇 가지 예입니다.
2. 어떤 사람들은 미국이 미터법으로 전환하면 더 나을 것이라고 생각합니다.
3. 다른 사람들은 경기 침체 시 모든 물가와 임금을 즉시 10% 인하하는 것이 국가에 도움이 된다면 모든 사람이 동의해야 하며 일반적으로 달성하기 매우 어렵다고 생각합니다.
그러나 블록체인 응용 프로그램에서 우리는 조정 문제를 유리하게 사용하고 조정 문제로 인해 발생하는 마찰을 중앙 집중식 집행자의 불법 행위에 저항합니다. 또 다른 예로, 속성 X를 사용하여 시스템을 구축할 수 있고 시스템이 항상 속성 X를 유지하도록 보장할 수 있지만 규칙을 X에서 not-X로 변경하려면 많은 사람들이 동시에 소프트웨어를 업데이트하는 데 동의해야 합니다. . 집행자가 변경을 강제하더라도 사용자가 반대자들을 조정하여 변경에 저항하는 것보다 훨씬 더 어려울 것입니다.
이 관점은 특별한 결과를 가져옵니다: 전체 노드의 핵심 목적은 단지 귀하를 보호하는 것이 아니며, 논쟁적인 하드 포크의 경우 전체 노드를 가진 사람들이 전체 노드가 없는 사람들보다 더 안전합니다. . 오히려 여기서의 관점은 집단면역의 관점에 가깝다, 즉 검증하는 사람이 많을수록 모두의 보안이 높아진다 일부만 검증해도 결과는 모두가 개인이 된다 더 높은 수준의 보호가 제공됩니다.
보조 제목
이제 라이트 클라이언트 및 샤딩과 같은 주제와 매우 관련된 다음 주제로 이동합니다. 유효성 검사를 통해 무엇을 달성할 수 있습니까? 이를 이해하기 위해 이전 시간으로 돌아가 보겠습니다. 블록체인에서 공격이 발생하는 경우 공격이 발생하는 방식은 다음과 같은 우선 순위를 가질 수 있습니다.
기본은 실패 > 기본은 혼돈 > 기본은 승리
여기서 ">"는 "보다 낫다"를 의미합니다. 기껏해야 공격이 완전히 실패하고 차선책으로 공격이 혼돈을 일으키고 모든 사람이 올바른 체인에 동의하지 않으며 최악의 경우 공격이 성공합니다. 여기서 질문은: 혼돈이 승리보다 훨씬 나은 이유는 무엇입니까? 사실 이것은 동기의 문제입니다. 즉, 혼란은 공격자의 비용을 증가시킵니다. 즉, 공격자가 확실히 이길 확률이 크게 감소하므로 공격자가 처음부터 공격하도록 권장되지 않습니다. 기본적으로 혼란스러운 환경은 공격자가 51% 공격에 대한 블록체인 전쟁에서 승리해야 할 뿐만 아니라 커뮤니티가 이 "사회 전쟁"을 따르도록 설득해야 함을 의미합니다. 이는 단지 51% 공격을 시작하고 순수한 공격 훨씬 덜 매력적입니다.
유효성 검사의 목표는 기본 상태에서 승리에서 혼돈(이상적으로)으로, 혼돈에서 실패(덜 이상적)로 이동하는 것입니다. 완전히 검증된 노드가 있고 공격자가 다른 규칙으로 체인을 푸시하려고 하면 공격이 실패합니다. 일부 사람들은 완전히 검증된 노드를 가지고 있고 다른 많은 사람들은 그렇지 않은 경우 공격으로 인해 혼란이 발생할 수 있습니다. 그러나 이제 우리는 또 다른 질문을 생각해야 합니다. 즉, 동일한 효과를 얻을 수 있는 다른 방법이 있습니까?
보조 제목
라이트 클라이언트 및 사기 증거
이 방향의 자연스러운 발전은 사기 증거가 있는 라이트 클라이언트입니다. 현재 시장에 나와 있는 대부분의 블록체인 라이트 클라이언트는 다른 프로토콜 규칙이 적용되는지 확인하지 않고 대다수의 채굴자가 특정 블록을 지원하는지 확인하는 방식으로 작동합니다. 즉, 클라이언트는 대부분의 채굴자가 정직하다는 신뢰 가정하에 운영됩니다. 논쟁의 여지가 있는 포크의 경우 클라이언트는 기본적으로 다수 체인을 따르므로 사용자가 이전 규칙을 따르고자 하는 경우 공격적인 조치를 취할 수 있습니다. 따라서 오늘날 공격을 받는 라이트 클라이언트는 기본적으로 승리합니다. 그러나 사기 방지 기술을 사용하면 상황이 매우 다르게 보이기 시작합니다.
위의 다이어그램에서 볼 수 있듯이 블록체인의 개별 블록은 몇 개의 계정만 참조합니다. 사기 증명에는 이 데이터가 정확하다는 Merkle 증명과 함께 이러한 계정의 데이터가 포함됩니다.
분열
이 기술은 때때로 상태 비저장 검증이라고도 합니다. 클라이언트는 전체 블록체인 상태 데이터베이스 대신 블록 헤더만 유지할 수 있으며 다른 노드에 원하는 상태의 Merkle 증명을 요청하여 실시간으로 모든 블록을 확인할 수 있습니다. 블록 검증 항목에도 액세스할 수 있습니다.
이 기술의 장점은 라이트 클라이언트가 경고를 들을 때만 독립 실행형 블록을 검증한다는 것입니다(그리고 경고는 검증 가능하므로 라이트 클라이언트가 잘못된 경고를 들으면 해당 노드에 대한 경고 듣기를 중지할 수 있습니다). 따라서 정상적인 상황에서 라이트 클라이언트는 여전히 라이트 클라이언트이며 대부분의 채굴자/검증자가 어떤 블록을 지원하는지 확인합니다. 그러나 다수 체인이 블록을 수락하지 않는 라이트 클라이언트를 포함하는 것과 같은 특수한 상황에서 사기성 블록을 검증할 정직한 노드가 있는 한 노드는 블록이 유효하지 않음을 발견할 것입니다. 이 A 노드는 사기 증거를 방송하고 네트워크의 다른 노드는 이를 거부합니다.
보조 제목
분열
샤딩은 네트워크 검증의 자연스러운 확장으로 볼 수 있습니다. 샤딩된 시스템에서는 대부분 직접 검증을 유지하기에는 시스템에 너무 많은 트랜잭션이 있지만 시스템이 잘 설계되어 있으면 모든 잘못된 트랜잭션을 감지할 수 있습니다. 개별 블록 및 이 무효성은 종종 네트워크 전체에 전파될 수 있는 사기성 증거의 증거를 수반합니다. 우리는 공유 네트워크를 모든 사람이 라이트 클라이언트인 것처럼 생각할 수 있으며 각 샤드에 특정 최소 임계값 참가자 수가 있는 한 네트워크는 집단 면역이 있습니다.
이것은 일반적으로 현실 세계에서 감사 가능성이 의미하는 것입니다. 모든 사람이 항상 모든 것을 확인하지는 않지만 다음과 같습니다.
(i) 각 특정 부품에는 오류가 있는 경우 찾을 수 있는 충분한 눈이 있습니다.
(ii) 오류가 감지되면 모든 사람이 명확하게 볼 수 있도록 합니다.
즉, 블록체인은 장기적으로 이를 확실히 개선할 수 있습니다. 개선의 특정 소스 중 하나는 ZK-SNARK(또는 "유효성 증명")입니다. 즉, 블록 생성자가 블록이 임의로 복잡한 유효성 조건을 충족했음을 고객에게 증명할 수 있는 유효한 확인의 암호화 증명입니다. 유효성 증명은 사기를 잡기 위해 대화형 게임에 의존하지 않기 때문에 사기 증명보다 강력합니다. 또 다른 중요한 기술은 블록이 완전히 게시되지 않은 데이터를 실행하지 못하도록 하는 데이터 가용성 검사입니다. 그러나 데이터 가용성 검사는 네트워크 어딘가에 최소한 소수의 정직한 노드가 있다는 매우 보수적인 가정을 기반으로 하며 좋은 소식은 네트워크에 항상 정직한 노드가 있다는 것입니다. 다수의 공격자.
보조 제목


