본문으로 건너뛰기

분산 검증자 기술

  • 검증자의 서명 키를 여러 머신과 운영자에게 분할하여 단일 장애점을 제거합니다.
  • 개별 하드웨어, 소프트웨어 또는 운영자 장애가 발생해도 검증자를 온라인 상태로 유지합니다.
  • 오늘날 솔로 스테이커, 스테이킹 서비스 및 스테이킹 풀에서 사용하는 프로덕션 인프라입니다.

분산 검증자 기술이란 무엇인가요?

분산 검증자 기술(DVT)은 단일 장애점을 줄이고 검증자의 복원력을 높이기 위해 키 관리 및 서명 책임을 여러 참여자에게 분산시키는 검증자 보안 접근 방식입니다.

DVT는 검증자를 보호하는 데 사용되는 개인 키를 분할하여 "클러스터"로 구성된 여러 컴퓨터에 분산시킴으로써 키 관리 및 서명 작업을 분산합니다. 이렇게 하면 각 클러스터 내 일부 머신만으로도 필요한 검증 작업을 수행할 수 있으므로, 클러스터의 일부 노드가 오프라인 상태가 되더라도 검증자 노드를 활성 상태로 유지할 수 있습니다. 이러한 분산은 단일 장애점을 줄여 검증자를 더욱 견고하게 만듭니다. DVT의 서명 분산이 제공하는 또 다른 이점은 전체 키가 단일 머신에 저장되지 않기 때문에 공격자가 키에 접근하기가 매우 어렵다는 것입니다.

하나의 검증자 키가 키 셰어로 분할되어 서로 다른 구성 요소를 가진 여러 노드에 분산되는 방식을 보여주는 다이어그램.

DVT는 별도의 스테이킹 방식이 아닙니다. 이는 모든 스테이킹 설정에서 사용할 수 있는 소프트웨어 계층입니다:

  • 솔로 스테이커는 팀을 이루어 검증자를 함께 운영하거나, 개별 솔로 스테이커가 DVT를 사용하여 자신의 솔로 스테이킹 설정에 복원력을 더할 수 있습니다.
  • 스테이킹 서비스스테이킹 풀은 DVT를 사용하여 복원력을 더하고 스테이킹 인프라를 강화하거나, 여러 독립적인 운영자에게 검증자 운영을 분산시킬 수 있습니다.

DVT가 필요한 이유는 무엇인가요?

보안

검증자는 합의에 참여하기 위한 검증자 키와 자금에 접근하기 위한 인출 키라는 두 쌍의 공개-개인 키 쌍을 생성합니다. 검증자는 인출 키를 콜드 스토리지에 안전하게 보관할 수 있지만, 증명 및 블록 제안과 같이 24시간 내내 할당된 임무에 서명하기 위해 검증자 개인 키는 연중무휴 온라인 상태를 유지해야 합니다. 키를 온라인 상태로 유지하면 도난의 위험에 노출되는데, DVT는 이러한 노출을 제한합니다. 전체 키는 절대 온라인에 노출되지 않으며 오직 키 셰어(key share)만 온라인 상태가 됩니다.

검증자 개인 키가 손상되면 공격자가 검증자를 제어할 수 있으며, 이는 잠재적으로 슬래싱이나 스테이커의 ETH 손실로 이어질 수 있습니다. DVT는 이러한 위험을 완화합니다. DVT를 사용하면 원본 전체 검증자 키가 암호화되어 키 셰어로 분할됩니다. 전체 '마스터' 키는 오프라인에 안전하게 보관되는 반면, 키 셰어는 온라인에 존재하며 검증자를 함께 운영하는 여러 노드에 분산됩니다. 이러한 분산이 가능한 이유는 이더리움 검증자가 가산성(additive)을 가진 BLS 서명을 사용하기 때문입니다. 즉, 구성 요소를 합산하여 전체 키를 재구성할 수 있습니다. 키 셰어로 만든 부분 서명은 전체 키에 유효한 서명으로 결합되므로, 일상적인 서명 작업에는 전체 키 자체가 필요하지 않습니다. 클러스터가 분산 키 생성을 사용하여 새로운 검증자 키를 생성할 때, 전체 개인 키는 단일 머신에 절대 존재하지 않습니다.

단일 장애점 제거

검증자가 여러 운영자와 여러 머신에 분할되면, 오프라인 상태가 되지 않고도 개별 하드웨어 및 소프트웨어 장애를 견딜 수 있습니다. 클러스터 내 노드 전반에 걸쳐 다양한 하드웨어 및 소프트웨어 구성을 사용함으로써 장애 위험을 줄일 수도 있습니다. 다중 운영자 분산은 단일 노드 검증자 구성에서는 기본적으로 사용할 수 없으며, DVT 미들웨어 계층을 통해 제공됩니다.

클러스터 내 머신의 구성 요소 중 하나가 다운되더라도(예를 들어, 검증자 클러스터에 4명의 운영자가 있고 그중 한 명이 버그가 있는 특정 클라이언트를 사용하는 경우), 나머지 운영자들이 검증자가 계속 실행되도록 보장할 수 있습니다.

탈중앙화

이더리움의 이상적인 시나리오는 독립적으로 운영되는 검증자를 최대한 많이 확보하는 것입니다. 그러나 소수의 스테이킹 제공자가 매우 인기를 얻어 네트워크에 스테이킹된 전체 ETH의 상당 부분을 차지하게 되었습니다. DVT는 스테이크의 탈중앙화를 유지하면서 이러한 운영자가 존재할 수 있도록 해줍니다. 각 검증자의 키가 여러 머신에 분산되어 있어 검증자가 악의적으로 변하려면 훨씬 더 큰 규모의 담합이 필요하기 때문입니다.

DVT가 없다면 스테이킹 제공자는 모든 검증자에 대해 한두 가지 클라이언트 구성만 지원하기 쉬워져 클라이언트 버그의 영향력이 커집니다. DVT를 사용하면 여러 클라이언트 구성과 다양한 하드웨어에 위험을 분산시켜 다양성을 통한 복원력을 구축할 수 있습니다.

DVT는 이더리움에 다음과 같은 이점을 제공합니다:

  1. 이더리움 지분 증명(PoS) 합의의 탈중앙화
  2. 네트워크의 활성도(liveness) 보장
  3. 검증자 내결함성(fault tolerance) 생성
  4. 신뢰 최소화된 검증자 운영
  5. 슬래싱 최소화 및 다운타임 위험 감소
  6. 다양성 향상 (클라이언트, 데이터 센터, 위치, 규제 등)
  7. 검증자 키 관리의 보안 강화

DVT는 어떻게 작동하나요?

DVT 구현은 일반적으로 클러스터의 각 머신에서 추가 소프트웨어로 실행됩니다. 이 소프트웨어는 노드의 검증자 클라이언트와 합의 클라이언트 사이에 위치하는 미들웨어 역할을 하며, 클러스터 내 다른 노드와 조정하여 검증자의 임무가 집단으로 서명되도록 합니다.

DVT 솔루션에는 다음 구성 요소가 포함됩니다:

  • 샤미르의 비밀 공유(Shamir's secret sharing) (새 탭에서 열림) - 검증자는 BLS 키 (새 탭에서 열림)를 사용합니다. 검증자 개인 키는 여러 "키 셰어"로 분할될 수 있으며, BLS 서명은 가산성을 가지므로 이러한 키 셰어로 만든 부분 서명을 결합하여 전체 검증자 키에 유효한 단일 서명을 만들 수 있습니다.
  • 임계값 서명 체계(Threshold signature scheme) (새 탭에서 열림) - 서명 임무에 필요한 개별 키 셰어의 수(예: 4개 중 3개)를 결정합니다.
  • 분산 키 생성(DKG) (새 탭에서 열림) - 키 셰어를 생성하는 암호화 프로세스로, 기존 또는 새로운 검증자 키의 셰어를 클러스터의 노드에 분배하는 데 사용됩니다.
  • 다자간 컴퓨팅(MPC) (새 탭에서 열림) - 전체 검증자 키는 다자간 컴퓨팅을 사용하여 비밀리에 생성됩니다. 전체 키는 개별 운영자에게 절대 알려지지 않으며, 운영자는 자신의 부분(자신의 "셰어")만 알 수 있습니다.
  • 합의 프로토콜 - 합의 프로토콜은 하나의 노드를 블록 제안자로 선택합니다. 제안자는 클러스터의 다른 노드와 블록을 공유하고, 다른 노드들은 집계 서명에 자신의 키 셰어를 추가합니다. 충분한 키 셰어가 집계되면 이더리움에 블록이 제안됩니다.

분산 검증자는 내결함성이 내장되어 있어 일부 개별 노드가 오프라인 상태가 되더라도 계속 실행될 수 있습니다. 검증자 노드의 클러스터는 그 안의 일부 노드가 악의적이거나 게으른 것으로 판명되더라도 복원력을 유지합니다.

프로덕션 환경의 DVT

오늘날 분산 검증자는 솔로, 서비스 및 풀 스테이킹 전반에 걸쳐 메인넷에서 실행되고 있습니다. 두 개의 네트워크가 이러한 활동의 대부분을 차지합니다:

제품 및 서비스는 이더리움 커뮤니티의 편의를 위해 나열되어 있습니다. 제품이나 서비스가 포함되어 있다고 해서 ethereum.org 웹사이트 팀이나 이더리움 재단의 보증을 의미하는 것은 아닙니다.
  • Obol은 머신 클러스터가 검증자를 함께 운영할 수 있게 해주는("스쿼드 스테이킹") 오픈 소스 DVT 미들웨어 클라이언트인 Charon을 개발합니다. 그룹은 분산 키 생성을 수행하고 Obol의 DV 런치패드(DV Launchpad) (새 탭에서 열림)를 통해 클러스터를 구성합니다. Obol 클러스터는 리도(Lido)의 Simple DVT 모듈과 홈 운영자를 내결함성 클러스터에 온보딩하는 EtherFi의 Operation Solo Staker 프로그램을 포함하여 스테이킹 프로토콜스테이킹 서비스의 프로덕션 환경에서 사용됩니다.
  • SSV Network는 독립적인 노드 운영자들로 구성된 무허가성 네트워크입니다. 검증자 키는 키 셰어로 분할되어 선택된 운영자 그룹에 분배되며, 이들은 집단으로 검증자의 임무를 수행합니다. 단일 운영자가 전체 키를 보유하는 일은 없습니다. 스테이킹 서비스와 풀은 SSV에서 대규모 검증자 세트를 실행하며, Obol과 마찬가지로 리도의 Simple DVT 모듈에서 사용됩니다.

DVT 사용 사례

DVT는 광범위한 스테이킹 산업에 중요한 의미를 갖습니다:

솔로 스테이커

DVT는 **스쿼드 스테이킹(squad staking)**을 가능하게 합니다. 친구, 커뮤니티 구성원 또는 런치패드를 통해 조율된 낯선 사람들과 같은 소규모 그룹이 각자의 머신에서 단일 검증자를 집단으로 운영하는 것입니다. 검증자가 임무를 수행하려면 그룹의 임계값(예: 4명 중 3명)이 온라인 상태여야 하므로, 단일 구성원의 다운타임, 하드웨어 장애 또는 실수로 인해 검증자가 오프라인 상태가 되지 않습니다. 분산 키 생성으로 키가 생성될 때, 어떤 구성원도 전체 서명 키를 보유하지 않습니다.

또한 DVT는 전체 키를 완전히 오프라인으로 유지하면서 원격 노드에 검증자 키를 분산시킬 수 있게 하여 비수탁형 스테이킹을 가능하게 합니다. 이는 스테이커가 반드시 자신의 하드웨어를 실행할 필요가 없음을 의미하며, 키 셰어를 분산시키면 잠재적인 해킹으로부터 보호하는 데 도움이 됩니다.

서비스형 스테이킹 (SaaS)

많은 검증자를 관리하는 운영자(예: 스테이킹 풀 및 기관 스테이커)는 DVT를 사용하여 위험을 줄일 수 있습니다. 인프라를 분산시킴으로써 운영에 중복성을 더하고 사용하는 하드웨어 유형을 다양화할 수 있습니다.

DVT는 여러 노드에 걸쳐 키 관리 책임을 공유하므로 일부 운영 비용도 공유할 수 있습니다. 또한 DVT는 스테이킹 제공자의 운영 위험과 보험 비용을 줄일 수 있습니다.

스테이킹 풀

표준 검증자 설정으로 인해, 스테이킹 풀과 유동성 스테이킹 제공자는 역사적으로 각 개별 운영자에게 상당한 신뢰를 두어야 했습니다. 이익과 손실이 풀 전체에 사회화되기 때문입니다. 또한 DVT가 등장하기 전까지는 다른 대안이 없었기 때문에 서명 키를 안전하게 보호하는 것도 운영자에게 의존해야 했습니다.

전통적으로 여러 운영자에게 스테이크를 분산시켜 위험을 분산하려는 노력이 있었음에도 불구하고, 각 운영자는 여전히 상당한 스테이크를 독립적으로 관리합니다. 단일 운영자에게 의존하는 것은 그들이 저조한 성과를 내거나, 다운타임을 겪거나, 손상되거나, 악의적으로 행동할 경우 엄청난 위험을 초래합니다.

DVT를 활용하면 각 개별 운영자에게 요구되는 신뢰를 줄일 수 있습니다. 풀은 운영자가 검증자 키를 수탁할 필요 없이 스테이크를 보유할 수 있도록 할 수 있습니다(키 셰어만 활용되기 때문입니다). 또한 관리되는 스테이크를 더 많은 운영자에게 분산시킬 수 있습니다(예: 단일 운영자가 1000개의 검증자를 관리하는 대신, DVT를 통해 여러 운영자가 해당 검증자를 집단으로 실행할 수 있습니다). 다양한 운영자 구성은 한 운영자가 다운되더라도 다른 운영자가 계속해서 증명할 수 있도록 보장하는 데 도움이 됩니다. 그 결과로 얻어지는 중복성과 다양성은 보상을 극대화하면서 더 나은 성능과 복원력으로 이어질 수 있습니다.

단일 운영자 신뢰를 최소화하는 또 다른 이점은 스테이킹 풀이 더 개방적이고 무허가성인 운영자 참여를 허용할 수 있다는 것입니다. 오늘날 일부 스테이킹 풀은 프로덕션 환경에서 이를 수행하고 있습니다. 다중 운영자 DVT 클러스터는 프로토콜이 홈 스테이커 및 소규모 운영자를 대규모 전문 운영자와 연결하여, 선별된 운영자 세트와 무허가성 운영자 세트를 결합할 수 있게 해줍니다.

DVT 사용의 잠재적 단점

  • 추가 구성 요소 - DVT 노드를 도입하면 결함이 있거나 취약할 수 있는 또 다른 부분이 추가됩니다. 이는 합의 및 실행 계층에 여러 클라이언트가 있는 것처럼 DVT 소프트웨어의 여러 구현을 통해 완화됩니다.
  • 운영 비용 - DVT는 검증자를 여러 참여자에게 분산시키므로 단일 노드 대신 운영에 더 많은 노드가 필요하며, 이로 인해 운영 비용이 증가합니다.
  • 잠재적인 지연 시간 증가 - DVT는 검증자를 운영하는 여러 노드 간의 합의를 달성하기 위해 합의 프로토콜을 활용하므로 잠재적으로 지연 시간이 증가할 수 있습니다.

자주 묻는 질문

아닙니다. 검증자 클라이언트를 실행하는 단일 머신은 DVT 소프트웨어 없이도 작동하며, 이는 여전히 일반적인 홈 스테이킹 설정입니다. DVT는 내결함성을 추가하고 단일 장애점을 제거하는 선택적 계층입니다. 이는 개별 머신의 장애에도 검증자가 살아남기를 원하거나, 검증자 운영 책임을 다른 사람들과 공유하고자 할 때 유용합니다.

아닙니다. DVT는 증명 및 블록 제안과 같은 합의 임무에 사용되는 검증자 서명 키만 분할합니다. 귀하의 스테이크는 항상 검증자에 설정된 인출 주소에 의해 제어되며, 이는 DVT의 영향을 받지 않습니다. 펙트라 업그레이드 이후, 인출 주소 보유자는 서명 키가 전혀 없어도 실행 계층에서 직접 검증자 종료를 트리거할 수 있습니다.

노드의 임계값(예: 4개 중 3개)이 온라인 상태를 유지하는 한 검증자는 계속해서 임무를 수행합니다. 너무 많은 노드가 한 번에 오프라인 상태가 되면, 다른 오프라인 검증자와 마찬가지로 검증자는 단순히 오프라인 상태가 되어 충분한 노드가 돌아올 때까지 보상을 놓치게 됩니다. 오프라인 상태가 되는 것은 슬래싱 대상이 아닙니다.

아닙니다. "4개 중 3개"는 가장 작은 일반적인 구성일 뿐이며, 이 페이지 전체에서 예시로 사용되었습니다. 클러스터 크기와 서명 임계값은 클러스터가 생성될 때 선택됩니다.

클러스터는 일반적으로 임계값이 노드의 3분의 2 절대다수가 되도록 크기가 조정되며, 이를 통해 클러스터는 결함이 있거나 오프라인인 구성원을 허용하면서 계속 서명할 수 있습니다. 4노드 클러스터는 3개로 서명하고 1개의 장애를 허용하며, 7노드는 5개로 서명하고 2개를 허용하고, 10노드는 7개로 서명하고 3개를 허용합니다. 클러스터가 클수록 더 많은 내결함성을 얻을 수 있지만, 실행할 머신이 더 많아지고 이들 간의 조정이 더 많이 필요하다는 비용이 발생합니다.

클러스터 크기 및 복원력에 대해 자세히 알아보기 (새 탭에서 열림)

아닙니다. 풀 스테이킹은 여러 사람의 ETH를 결합하여 검증자에게 자금을 지원하는 것으로, 여러 스테이킹 방법 중 하나입니다. DVT는 검증자를 _운영_하기 위한 인프라입니다. 단일 검증자의 서명을 여러 머신과 운영자에게 분산시킵니다. 이 둘은 상호 보완적입니다. 많은 풀이 DVT를 사용하여 운영자 세트를 분산시키지만, DVT 자체가 누군가의 ETH를 풀링하지는 않습니다.

더 읽어보기