V 갓 : 블록체인 검증할 때 뭐하는 건가요?
편집자 주: 이 기사의 출처는이더리움 애호가(ID: ethfans)편집자 주: 이 기사의 출처는
이더리움 애호가(ID: ethfans)
, 저자: Vitalik, 번역 및 교정: Elisa & A Jian, 승인을 받아 Odaily에서 재인쇄함.
그러나 실제로 얼마나 많은 유효성 검사기가 실제로 필요합니까? 100개의 독립적으로 검증하는 노드? 천? 모든 거래를 확인하기 위해 소프트웨어를 실행하는 세상의 모든 평범한 사람이 필요합니까? 특히 단일 체인 Nakamoto 작업 증명보다 더 유리한 합의 메커니즘으로 블록체인을 구축하려는 경우 이러한 질문에 답하는 것이 우리의 과제이며, 이러한 질문을 해결하는 것이 특히 중요합니다.
보조 제목
왜 확인
이미지 설명
사용자가 블록체인을 검증하면 두 가지 주요 이점이 있습니다. 첫째, 이를 통해 노드는 합법적인 체인(즉, 전체 커뮤니티에서 수용되고 정당성을 갖는 체인)을 결정하는 과정에 최대한 참여할 수 있습니다. 일반적으로 법적 체인은 비트코인의 "가장 긴 유효 체인"과 같이 "가장 많은 채굴자 또는 검증자가 지원하는 유효한 블록체인"으로 정의됩니다. 유효하지 않은 체인은 정의상 거부되며 여러 개의 유효한 체인이 경쟁하는 경우 가장 많은 채굴자 또는 유효성 검사기 지원이 있는 체인이 승리합니다. 따라서 모든 블록의 유효성을 검증하는 노드를 실행하면 어떤 체인이 유효한지 아닌지 감지할 수 있으므로 합법적인 체인을 감지할 가능성이 극대화됩니다.
그러나 실제로 블록체인을 검증하는 사용자에게는 더 깊은 이점이 있습니다. 강력한 행위자가 네트워크가 프로토콜 변경(예: 발행 변경)을 수락하도록 시도하고 대다수의 채굴자가 이에 찬성하는 경우 다른 사람이 블록체인을 검증하지 않고도 공격이 쉽게 수행됩니다. 그리고 모든 클라이언트는 기본적으로 이 새 체인을 수락합니다. 모든 사람이 정신을 차리고 이것을 깨달을 때, 그들은 협력을 통해 이 새로운 사슬을 거부하기 위해 상대에게만 의존할 수 있습니다. 그러나 일반 사용자도 검증에 참여한다면 상황은 완전히 달라지며, 프로토콜 변경을 시도하는 공격자는 검증된 사용자가 프로토콜 변경을 위해 자신의 소프트웨어 패치를 적극적으로 다운로드하도록 설득해야 합니다.
충분한 사용자가 유효성 검사에 참여하면 누군가 프로토콜에 논란의 여지가 있는 변경을 시도할 때 기본값은 성공이 아니라 혼란입니다. 자연적 혼돈은 네트워크에 피해를 주기도 하는데, 이를 해결하기 위해서는 프로토콜 수준 밖의 사회적 조율이 필요하지만, 공격자 앞에 더 큰 장애물을 두어 일격에 성공하고 나서 걸을 수 있다는 확신을 할 수 없게 만들기도 합니다. 공격하려는 의지를 크게 감소시킵니다. 다수의 사용자가 직접 또는 간접 검증에 참여하고 공격자가 다수의 채굴자만 지원하는 경우 공격은 자연스럽게 실패하며 이는 모두에게 최상의 결과입니다.
보조 제목
정의된 관점과 협력적 관점
위 추론의 논리는 우리가 자주 듣는 다른 종류의 추론과는 매우 다르다는 점에 유의해야 합니다. 그들은 체인이 프로토콜의 규칙을 변경하는 한 "정의에 따라" 합법적인 체인이 아닐 것이라고 말합니다. 그리고 중요한 문제는 얼마나 많은 사용자가 새로운 규칙 집합을 기꺼이 받아들이느냐가 아니라 원하는 이전 규칙을 사용하여 항상 체인에 머무를 수 있다는 것입니다.
"정의 관점"에서 문제를 논의하는 Gavin Andresen의 이 예를 살펴보십시오.
"비트코인"은 이전에 사용하지 않은 자금을 사용하는 법적으로 서명된 거래를 블록체인 형태로 기록하는 거래 원장입니다. 체인은 해시가 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f인 제네시스 블록으로 시작하며, 이 블록은 예정된 일정에 따라 가장 많은 이중 SHA256 작업 증명을 축적한 체인에서 2,100만 비트코인을 발행합니다.
전체 노드의 가치를 더 쉽게 설명하는 Wasabi 지갑의 또 다른 정의:
Bitcoin 전체 노드를 실행할 때 동의하는 정확한 통화 규칙을 정의할 수 있습니다. 아무도 당신에게 그것을 강요할 수 없습니다. 따라서 재정적 자유를 추구하는 자율적인 기업은 풀 노드를 운영해야 합니다. 자체 규칙을 결정한 후 풀 노드 소프트웨어는 비트코인 P2P 네트워크에서 우리의 규칙을 충족하는 노드를 찾을 수 있습니다. 이 노드는 규칙에 따라 유효하다고 판단되는 거래를 우리에게 보내고 우리는 우리 자신의 규칙에 따라 이를 확인합니다. 규칙을 충족하지 않는 트랜잭션을 수신하면 이를 유효하지 않은 트랜잭션으로 표시하고 유효하지 않은 트랜잭션의 소스 노드에서 연결을 끊을 수 있습니다.
보조 제목
통화 주권 주장
전체 노드를 사용하면 비트코인 통화의 규칙을 정의, 검증 및 시행할 수 있는 권한이 부여됩니다.
"정의"의 관점에서 두 가지 핵심에 주의를 기울여야 합니다.
가장 중요한 것은 자신의 규칙에 맞는 체인을 고수하는 것입니다.
귀하의 관점에서 귀하는 여전히 귀하가 동의하는 규칙을 기반으로 구축된 시스템에 통화를 보유하고 있지만 그렇다면 어떻게 됩니까? 아무도 더 이상 귀하의 통화를 수락하지 않습니다. 거래소는 그것을 받아들이지 않을 것이고, 웹사이트는 새로운 통화에 대해 치솟는 가격을 보여줄 수 있지만, 그것은 대부분의 사용자와 함께 체인에 있는 통화이고, 당신의 통화는 가치가 없게 될 것입니다. 암호화폐와 블록체인은 근본적으로 사회적 구성물입니다. 다른 사람이 믿지 않으면 의미가 없습니다.
그렇다면 이 문제를 어떤 각도에서 바라봐야 할까요? 이 관점의 핵심은 보안을 달성하기 위해 조정 문제를 활용하는 예로서 블록체인입니다.
일반적으로 실제 화해 문제는 어렵습니다. 비록 대부분의 사람들에게 영어가 매우 복잡하고 불규칙한 철자 체계를 음성 철자 체계로 바꾸는 것이 더 나을 것이지만, 미국이 미터법 Good으로 바꾸는 것이 더 나을 것입니다. 경기 침체 우리가 한 번에 모든 가격과 임금을 함께 10% 인하한다면 더 좋을 것입니다. 실제로 이것은 모든 사람이 이러한 변화에 동시에 동의해야 하며 이는 달성하기 매우 어려울 것입니다.
그러나 블록체인을 적용함에 있어 조정 문제가 우리의 장점이 되었습니다. 핵심 플레이어의 불법 행위를 방지하기 위해 조정 문제로 인한 마찰을 이용합니다. 우리는 속성 X가 있는 시스템을 구축하고 속성 X가 보존되도록 보장할 수 있습니다. 속성 X에서 비X로 규칙을 변경하려면 많은 사람들이 동의하고 동시에 소프트웨어를 업데이트해야 하기 때문입니다. 한 명의 행위자가 변화를 강요할 수 있다고 해도 상대방이 변화에 저항을 적극적으로 조율하는 것보다 그가 그렇게 하는 것이 훨씬 더 어려울 것입니다.
텍스트
풀노드를 운영하는 목적은 자신의 이익을 보호하기 위한 것일 뿐만 아니라 하드포크 논란이 발생할 경우 풀노드를 운영하는 사용자는 안전하지만 전체 노드 없이는 아닙니다. 이는 크게 보면 일종의 집단면역이라고 볼 수 있는데, 검증하는 사람이 많을수록 모두가 더 안전하고, 일부만 검증해도 모두가 더 높은 수준의 보호를 받을 수 있다.
보조 제목
"검증"에 대한 심도 있는 논의
기본 원인 실패 > 기본 원인 혼란 > 기본 성공
여기서 "보다 큼" 기호는 전자가 후자보다 낫다는 것을 의미합니다. 가장 좋은 경우는 공격이 직접 실패하는 것이고, 차선의 경우는 공격이 혼란을 초래하여 법적 사슬에 모두가 동의하지 못하는 것이며, 최악의 경우는 공격이 성공하는 것입니다. 공격에 성공하는 것보다 혼돈을 만드는 것이 훨씬 더 좋은 이유는 무엇입니까? 그것은 인센티브로 귀결되며, 혼란은 또한 공격자에게 비용을 부과하여 공격이 성공할 것이라는 확신을 덜게 만들어 공격자가 공격을 시작하는 인센티브를 감소시킵니다. 자연스럽게 혼돈으로 이어지는 환경은 공격자에게 블록체인 전쟁에서 승리(성공적으로 51% 공격 시작)하고 "여론 전쟁"에서 승리하여 전체 커뮤니티가 공격 체인을 따르도록 설득해야 함을 의미합니다. 이것은 단순히 51% 공격을 실행하는 것이 성공을 보장하는 것보다 훨씬 더 어렵고 수익성이 떨어지는 공격을 만듭니다.
검증의 목표는 공격이 자연스럽게 성공하는 상태에서 자연스럽게 실패하는 상태(최적) 또는 자연스럽게 혼란을 초래하는 상태(최적화되지 않음)로 공격을 취하는 것입니다. 모든 블록을 완전히 검증하는 노드를 실행하고 공격자가 네트워크가 다른 규칙을 가진 체인을 수락하도록 시도하면 공격이 실패합니다. 일부 사용자는 전체 노드 유효성 검사를 실행하고 많은 사용자는 그렇지 않은 경우 공격으로 인해 혼란이 발생할 수 있습니다. 그러나 우리는 여전히 같은 효과를 얻을 수 있는 다른 방법이 있는지 생각해야 합니다.
라이트 클라이언트 및 사기 증거
더 나은 접근 방식은 자연스럽게 사기 증거가 있는 라이트 클라이언트를 사용하는 것입니다. 대부분의 현재 블록체인 라이트 클라이언트는 프로토콜 규칙이 충족되지 않고 대다수의 채굴자가 특정 블록을 지원하는지 확인합니다. 이러한 클라이언트의 정상적인 작동은 대부분의 광부가 정직하다고 가정합니다. 논란이 되는 포크가 발생하면 이러한 클라이언트는 자연스럽게 추세를 따르게 되며 사용자는 이전 규칙에 따라 소수 체인에 머물기 위해 사전 조치를 취해야 합니다. 따라서 현재의 라이트 클라이언트가 공격을 시작하기 위해서는 공격자가 자연스럽게 성공할 수 있습니다. 그러나 사기 방지 기술을 사용하면 상황이 상당히 다릅니다.
간단히 말해서 사기 증명은 다음과 같이 작동합니다. 일반적으로 블록체인의 단일 블록은 블록체인 "상태"(계정 잔액, 스마트 계약 코드...)의 작은 부분만 참조합니다. 전체 노드가 블록을 처리하고 유효하지 않은 것으로 확인되면 데이터 패킷(즉, 사기 증명)을 생성하여 라이트 클라이언트에 브로드캐스트할 수 있습니다. 데이터 패킷에는 블록과 블록을 처리하기에 충분한 데이터만 포함되며, 데이터 패킷을 수신한 후 라이트 클라이언트는 체인에 다른 데이터를 필요로 하지 않고 자체적으로 블록을 검증할 수 있습니다.
이 기술을 무상태 검증이라고도 하는데 클라이언트는 완전한 블록체인 상태 데이터를 기록하지 않고 블록 헤더만 기록할 수 있으며 다른 노드에서 임의의 상태 항목에 대한 Merkle 증명을 요청하여 실시간으로 확인할 수 있습니다.
분열
이 기술의 힘은 라이트 클라이언트가 경고를 받은 후 단일 블록만 확인한다는 것입니다(경고도 확인할 수 있으며 라이트 클라이언트가 잘못된 경고를 발견하면 노드의 경고 듣기를 중지할 수 있음). 라이트 클라이언트는 경량으로 유지되며 대부분의 채굴자 또는 유효성 검사기가 지원하는 블록만 확인합니다. 그러나 특수한 경우에 대다수의 사람들이 위치한 체인에 라이트 클라이언트가 받아들이지 않는 블록이 포함되어 있는 경우, 적어도 하나의 정직한 풀 노드가 문제 블록을 검증하기만 하면 무효임을 알 수 있으며, 네트워크의 다른 노드도 거부하도록 사기 증명을 브로드캐스트합니다.
보조 제목
분열
또한 또 다른 점이 매우 중요합니다. 샤딩 시스템에서 블록 생성(단지 검증이 아님)의 임계값이 매우 낮으며 가정용 노트북에서도 수행할 수 있습니다. 네트워크의 핵심은 고성능 하드웨어에 의존하지 않으므로 상대가 소수가 될 수 있는 임계값이 충분히 낮아 다수가 지배하는 프로토콜이 "자연스러운 공격 성공"으로 전환되기가 더 어렵습니다. " 공격자에 의한 상태(다른 사람이 공격에 복종하도록 강제함).
이는 실세계에서 감사의 의미이기도 합니다. 모든 사람이 항상 모든 것을 검증하는 것은 아니지만, 첫째, 각 특정 부분을 검사하는 사람이 충분하고, 오류가 발견될 수 있다는 점, 둘째, 오류가 확인되면, 모든 사람이 어디에서 잘못되었는지 명확하게 볼 수 있습니다.
장기적으로 볼 때 블록체인은 이 점에서 분명히 더 나아갈 수 있습니다. 발전의 한 가지 소스는 ZK-SNARK(또는 "유효성 증명")로, 블록 생산자가 블록이 임의로 복잡한 유효성 조건을 충족함을 고객에게 증명할 수 있는 효율적이고 검증 가능한 암호화 증명입니다. 유효성 증명은 속임수를 잡기 위해 대화형 게임에 의존하지 않기 때문에 사기 증명보다 강력합니다. 또 다른 중요한 기술은 전체 공개 콘텐츠가 없는 블록을 감지할 수 있는 "데이터 가용성 확인"입니다. 데이터 가용성의 증명은 일부 보안 가정에 의존하지만 이 가정은 매우 보수적입니다. 네트워크에는 여전히 정직한("계약을 준수할 의사가 있는") 사용 가능한 소수의 노드가 있습니다. 좋은 소식은 이것이 정직한 검증자의 최소 수는 적고 공격자의 수가 매우 많더라도 요구 사항을 올릴 필요가 거의 없습니다.
보조 제목
이제 "자연적 혼돈" 패턴의 가장 강력한 결과를 살펴보겠습니다. 51% 공격이 자신을 공격하기 시작합니다. 현재 많은 커뮤니티에서 51% 공격이 발생하고 공격자가 이기면 51% 공격 체인이 합법적인 체인이 됩니다. 이 사양은 모든 사람이 엄격히 준수합니다. 최근 이더리움 클래식에 대한 51% 공격이 이 점을 잘 보여줍니다. 공격자는 3,000개 이상의 블록을 롤백하여 이중 지출 공격으로 807,260 ETC를 훔쳤습니다. Ethereum(OpenEthereun)의 두 가지 클래식 클라이언트 중 하나는 기술적으로 공격 체인의 역사적 높이로 돌아갈 수 없기 때문에 Geth 노드는 공격 체인에서 실행될 수 있는 반면 OpenEthereum은 원래 체인에만 갇힐 수 있습니다.
우리는 그 공격이 혼란을 야기했다고 말할 수 있지만, 그것은 Ethereum Classic 커뮤니티의 의도적인 설계가 아니라 사고였습니다. 이후 커뮤니티가 (더 긴) 공격 체인을 합법적인 것으로 받아들이기로 선택한 것은 유감입니다. 이더리움 클래식 트위터 계정은 이를 "우리의 원래 의도처럼 작업 증명에 대한 엄격한 준수"라고 불렀습니다. 따라서 이 커뮤니티 규범은 공격자의 승리를 적극적으로 돕습니다.
그러나 실제로 우리는 법적 체인의 정의에 대해 또 다른 합의에 도달할 수 있습니다. 또는 확정성이 있는 지분 증명(예: Ethereum 2.0이 해당) 규칙은 일단 블록이 확정되면 절대 롤백되지 않는다는 것입니다.
이미지 설명
이 접근 방식은 또한 성장 가능성이 있습니다. 혼란을 야기할 트랜잭션을 특별히 검열하기 위해 51% 공격을 시도할 수 있습니다. 적시성 검증자에 대한 연구도 모든 유형의 공격을 자연적인 실패로 몰아가고 있습니다. 그렇더라도 적시성 검사기가 오프라인 상태이거나 네트워크 연결이 불량한 노드를 도울 수 없기 때문에 여전히 약간의 혼란이 있을 것입니다.
결론적으로
불변성을 중시하는 블록체인 커뮤니티의 경우 롤백을 제한하는 이 조치는 좋은 선택이라고 할 수 있습니다. 네트워크가 트랜잭션을 수락한 지 아무리 오래되더라도 여전히 실수로 롤백될 수 있는 경우 블록체인이 불변이라고 주장할 수 없다. 물론 BTC와 ETC도 극단적인 경우 롤백이 제한적이라고 생각합니다 공격이 몇 주 동안의 블록 기록을 롤백하려고 시도하면 커뮤니티는 적극적인 사용자 참여를 요구하는 소프트 포크를 시작하여 수신자 체인 공격을 거부할 수 있습니다. 그러나 이 조치에 대한 보다 명시적인 동의와 공식화는 한 단계 더 나아갈 것입니다.
보조 제목
결론적으로
그렇다면 이 이야기는 우리에게 무엇을 가르쳐 줍니까? 첫째, 소셜 협업의 정당성을 받아들이고 "1-of-N" 신뢰 모델을 가정하는 간접 검증의 정당성을 받아들인다면, 즉 특정 참여자를 가정하는 것이 아니라 네트워크에 항상 정직한 참여자가 있다고 가정하는 것입니다. (예: Infura)는 항상 정직합니다. 그러면 더 확장 가능한 블록체인을 만들 수 있습니다.


