약한 주관성
블록체인에서 주관성(Subjectivity)이란 현재 상태에 합의하기 위해 사회적 정보에 의존하는 것을 의미합니다. 네트워크의 다른 피어들로부터 수집한 정보에 따라 선택할 수 있는 여러 유효한 포크가 존재할 수 있습니다. 반대 개념인 객관성(Objectivity)은 모든 노드가 코딩된 규칙을 적용하여 필연적으로 동의하게 되는, 유일하게 가능한 유효한 체인이 존재하는 체인을 의미합니다. 또한 약한 주관성(Weak subjectivity)으로 알려진 세 번째 상태도 있습니다. 이는 초기에 사회적으로 수집된 정보의 씨앗(seed)을 바탕으로 객관적으로 진행될 수 있는 체인을 의미합니다.
전제 조건
이 페이지를 이해하려면 먼저 지분 증명 (PoS)의 기본 사항을 이해해야 합니다.
약한 주관성은 어떤 문제를 해결하나요?
여러 포크 중에서 올바른 체인을 선택하는 과정이 과거의 투표를 세는 방식으로 이루어지기 때문에, 주관성은 지분 증명(PoS) 블록체인에 내재되어 있습니다. 이로 인해 블록체인은 여러 공격 벡터에 노출됩니다. 대표적으로 체인 초기에 참여했던 노드들이 자신들에게 유리하도록 대체 포크를 유지하다가 훨씬 나중에 공개하는 장거리 공격(long-range attack)이 있습니다. 또는 검증자의 33%가 스테이크를 인출한 후에도 계속해서 증명(attest)하고 블록을 생성한다면, 정규(canonical) 체인과 충돌하는 대체 포크를 생성할 수도 있습니다. 새로운 노드나 오랫동안 오프라인 상태였던 노드는 이러한 공격 검증자들이 자금을 인출했다는 사실을 모를 수 있으므로, 공격자들은 이들을 속여 잘못된 체인을 따르게 만들 수 있습니다. 이더리움은 메커니즘의 주관적인 측면, 즉 신뢰 가정을 최소한으로 줄이는 제약 조건을 부과하여 이러한 공격 벡터를 해결할 수 있습니다.
약한 주관성 체크포인트
지분 증명(PoS) 이더리움에서 약한 주관성은 "약한 주관성 체크포인트"를 사용하여 구현됩니다. 이는 네트워크의 모든 노드가 정규 체인에 속한다고 동의하는 상태 루트입니다. 이들은 블록체인의 제네시스(genesis) 위치에 있지 않다는 점만 제외하면 제네시스 블록과 동일한 "보편적 진리"의 역할을 합니다. 포크 선택 알고리즘은 해당 체크포인트에 정의된 블록체인 상태가 올바르다고 신뢰하며, 그 시점부터 체인을 독립적이고 객관적으로 검증합니다. 약한 주관성 체크포인트 이전의 블록은 변경할 수 없기 때문에 이 체크포인트는 "되돌리기 제한(revert limits)" 역할을 합니다. 이는 메커니즘 설계의 일부로 장거리 포크를 무효로 정의함으로써 장거리 공격을 무력화합니다. 약한 주관성 체크포인트 사이의 간격을 검증자 인출 기간보다 짧게 유지하면, 체인을 포크하는 검증자가 스테이크를 인출하기 전에 최소한 임계값 이상의 슬래싱을 당하게 되며, 스테이크가 인출된 검증자에 의해 신규 진입자가 잘못된 포크로 속는 것을 방지할 수 있습니다.
약한 주관성 체크포인트와 완결된 블록의 차이점
완결된 블록과 약한 주관성 체크포인트는 이더리움 노드에서 다르게 취급됩니다. 노드가 두 개의 경쟁하는 완결된 블록을 인지하게 되면, 둘 사이에서 갈등하게 되며 어느 것이 정규 포크인지 자동으로 식별할 방법이 없습니다. 이는 합의 실패의 증상입니다. 반면, 노드는 자신의 약한 주관성 체크포인트와 충돌하는 모든 블록을 단순히 거부합니다. 노드의 관점에서 약한 주관성 체크포인트는 피어들로부터 얻은 새로운 지식에 의해 훼손될 수 없는 절대적인 진리를 나타냅니다.
얼마나 약한 것인가요?
이더리움 지분 증명(PoS)의 주관적인 측면은 동기화할 신뢰할 수 있는 출처의 최근 상태(약한 주관성 체크포인트)가 필요하다는 점입니다. 잘못된 약한 주관성 체크포인트를 얻을 위험은 매우 낮습니다. 블록 탐색기나 여러 노드와 같은 독립적인 공개 출처 여러 곳과 대조하여 확인할 수 있기 때문입니다. 그러나 소프트웨어 개발자가 정직한 소프트웨어를 만들었다고 신뢰하는 것처럼, 모든 소프트웨어 애플리케이션을 실행하는 데는 항상 어느 정도의 신뢰가 필요합니다.
약한 주관성 체크포인트는 클라이언트 소프트웨어의 일부로 제공될 수도 있습니다. 공격자가 소프트웨어 내의 체크포인트를 손상시킬 수 있다면, 소프트웨어 자체도 쉽게 손상시킬 수 있다고 볼 수 있습니다. 이 문제를 우회할 수 있는 실질적인 암호경제학적 방법은 없지만, 이더리움에서는 여러 독립적인 클라이언트 팀이 각기 다른 언어로 동등한 소프트웨어를 구축하고 정직한 체인을 유지하는 데 기득권을 가짐으로써 신뢰할 수 없는 개발자의 영향을 최소화합니다. 블록 탐색기 또한 약한 주관성 체크포인트를 제공하거나, 다른 곳에서 얻은 체크포인트를 추가 출처와 교차 검증할 수 있는 방법을 제공할 수 있습니다.
마지막으로, 다른 노드에 체크포인트를 요청할 수도 있습니다. 풀 노드를 실행하는 다른 이더리움 사용자가 체크포인트를 제공하면, 검증자는 이를 블록 탐색기의 데이터와 대조하여 검증할 수 있습니다. 전반적으로 약한 주관성 체크포인트 제공자를 신뢰하는 것은 클라이언트 개발자를 신뢰하는 것만큼이나 문제가 될 수 있습니다. 하지만 요구되는 전반적인 신뢰 수준은 낮습니다. 이러한 고려 사항은 대다수의 검증자가 공모하여 블록체인의 대체 포크를 생성하는 매우 희박한 상황에서만 중요해진다는 점에 유의해야 합니다. 그 외의 모든 상황에서는 선택할 수 있는 이더리움 체인이 단 하나뿐입니다.
더 읽어보기
- 이더2의 약한 주관성 (opens in a new tab)
- 비탈릭: 내가 약한 주관성을 사랑하게 된 방법 (opens in a new tab)
- 약한 주관성 (테쿠 문서) (opens in a new tab)
- 0단계 약한 주관성 가이드 (opens in a new tab)
- 이더리움 2.0의 약한 주관성 분석 (opens in a new tab)
페이지 최근 업데이트: 2026년 2월 26일