메인 콘텐츠로 건너뛰기
Change page

약한 주관성

페이지 마지막 업데이트됨: 2026년 2월 26일

블록체인에서 주관성이란 현재 상태를 알아내기 위해 사회적인 정보에 의존하는 것을 의미합니다. 네트워크에서 다른 피어로부터 수집된 정보에 따라 선택되는 유효한 포크가 여러 개 있을 수 있습니다. 반대로 모든 노드가 코드로 짜여진 규칙에 의해 하나의 유효한 체인만을 참조할 수 있는 속성을 객관성이라 부릅니다. 여기에 세 번째 속성인 약한 주관성도 있습니다. 약한 주관성은 일부 초기 정보가 사회적으로 받아들여진 뒤에 객관성을 가지고 진행될 수 있는 체인의 속성을 의미합니다.

필수 구성 요소

이 페이지를 이해하려면 먼저 지분 증명의 기본 사항을 이해해야 합니다.

약한 주관성이 풀고자 하는 문제는 무엇일까요?

지분 증명 방식은 약한 주관성을 내재하고 있는데, 그 이유는 여러 포크들 중에서 올바른 체인을 선택하기 위해 과거 투표 수를 계산하기 때문입니다. 이는 초기에 합의에 참여하던 노드들이 이득을 얻기 위해 과거 블록으로부터 새로운 포크를 만들어서 유지하다가 나중에 공개하는 장거리 공격(long-range attacks)을 포함한 여러 공격 벡터에 블록체인을 노출시킵니다. 또는 검증인의 33%가 지분을 철회했지만 계속해서 블록을 증명하고 생성함으로써 정통(canonical) 체인과 충돌하는 대체 포크를 만들 수 있습니다. 오랫동안 오프라인 상태였던 노드나 새로운 노드는 공격자가 자금을 인출했다는 사실을 인지하지 못할 수 있으므로 공격자는 그들이 잘못된 체인을 따르도록 속일 수 있습니다. 이더리움은 주관성을 최소한으로 줄이는 제약 조건을 적용하는 매커니즘을 통하여 이러한 공격 벡터를 해결할 수 있습니다.

약한 주관성 체크포인트

약한 주관성은 지분 증명 이더리움에서 "약한 주관성 체크포인트"를 통해 구현됩니다. 이는 네트워크의 모든 노드가 정통 체인에 속한다고 합의하는 상태 루트들을 말합니다. 이는 제네시스 블록과 동일한 "보편적 진실"의 목적을 수행하지만 블록체인의 제네시스 위치에 있지는 않다는 점이 다릅니다. 포크 선택 알고리즘은 해당 체크포인트에 정의된 블록체인 상태가 정확하다고 간주하고 그로부터 진행되는 체인을 독립적이고 객관적으로 검증한다고 가정합니다. 약한 주관성 체크포인트 이전에 생성된 블록들은 변경될 수 없기 때문에 체크포인트는 "한계 환원점"의 역할을 합니다. 이는 메커니즘 설계의 일부로 장거리 포크(long-range forks)를 유효하지 않은 것으로 정의하는 것만으로 장거리 공격(long-range attack)을 약화시킵니다. 약한 주관성 체크포인트가 검증자 인출 기간보다 더 짧은 간격으로 분리되도록 하면, 체인을 포크하는 검증자는 스테이킹을 인출하기 전에 최소 임계치 이상으로 슬래싱당하게 되며, 새로운 참여자는 스테이킹이 인출된 검증자에 의해 잘못된 포크로 유인되지 않게 됩니다.

약한 주관성 체크포인트와 완결된 블록의 차이점

완결된 블록과 약한 주관성 체크포인트는 이더리움 노드에서 다르게 처리됩니다. 노드가 경쟁하는 두 개의 완결된 블록을 인지하게 되면, 둘 사이에서 결정을 내리지 못하게 됩니다. 즉, 어느 것이 정식 포크인지 자동으로 식별할 방법이 없습니다. 이는 합의 실패의 징후입니다. 반면에, 노드는 약한 주관성 체크포인트와 충돌하는 모든 블록을 거부합니다. 노드의 관점에서 약한 주관성 체크포인트는 피어로부터 얻는 새로운 정보에 의해 훼손될 수 없는 절대적인 진실을 나타냅니다.

어느 정도로 약한가요?

이더리움 지분 증명의 주관적인 측면은 동기화를 위해 신뢰할 수 있는 출처의 최신 상태(약한 주관성 체크포인트)가 필요하다는 점입니다. 블록 탐색기나 다수의 노드와 같은 여러 독립적인 공개 출처와 대조하여 확인할 수 있으므로, 잘못된 약한 주관성 체크포인트를 받을 위험은 매우 낮습니다. 하지만 모든 소프트웨어 애플리케이션을 실행하려면 어느 정도의 신뢰가 필요합니다. 예를 들어, 소프트웨어 개발자가 정직한 소프트웨어를 만들었다고 신뢰하는 것과 같습니다.

약한 주관성 체크포인트는 클라이언트 소프트웨어의 일부로 제공될 수도 있습니다. 공격자는 소프트웨어의 체크포인트를 손상시킬 수 있으며, 마찬가지로 소프트웨어 자체도 쉽게 손상시킬 수 있다고 주장할 수 있습니다. 이 문제에 대한 실질적인 암호경제학적 해결책은 없지만, 이더리움에서는 여러 독립적인 클라이언트 팀을 둠으로써 신뢰할 수 없는 개발자의 영향을 최소화합니다. 각 팀은 서로 다른 언어로 동등한 소프트웨어를 구축하며, 모두 정직한 체인을 유지하는 데 이해관계가 있습니다. 블록 탐색기는 약한 주관성 체크포인트를 제공하거나, 다른 곳에서 얻은 체크포인트를 추가적인 출처와 교차 참조할 수 있는 방법을 제공할 수도 있습니다.

마지막으로, 다른 노드에 체크포인트를 요청할 수 있습니다. 예를 들어, 풀노드를 실행하는 다른 이더리움 사용자가 체크포인트를 제공하면, 검증자는 블록 탐색기의 데이터와 대조하여 이를 확인할 수 있습니다. 전반적으로, 약한 주관성 체크포인트 제공자를 신뢰하는 것은 클라이언트 개발자를 신뢰하는 것만큼 문제가 될 수 있다고 간주할 수 있습니다. 필요한 전반적인 신뢰 수준은 낮습니다. 이러한 고려 사항은 대다수의 검증자가 공모하여 블록체인의 대체 포크를 생성하는, 발생 가능성이 매우 낮은 경우에만 중요해진다는 점에 유의해야 합니다. 그 외의 모든 상황에서는 선택할 수 있는 이더리움 체인은 단 하나뿐입니다.

추가 정보

이 문서가 도움이 되셨나요?