데이터 가용성
"신뢰하지 말고 검증하라(Don't trust, verify)"는 이더리움에서 흔히 쓰이는 격언입니다. 이 개념은 노드가 피어로부터 받은 블록 내의 모든 트랜잭션을 실행하여, 제안된 변경 사항이 노드가 독립적으로 계산한 것과 정확히 일치하는지 확인함으로써 수신한 정보가 올바른지 독립적으로 검증할 수 있다는 것입니다. 이는 노드가 블록 전송자가 정직하다고 신뢰할 필요가 없음을 의미합니다. 데이터가 누락된 경우에는 이것이 불가능합니다.
데이터 가용성은 블록을 검증하는 데 필요한 데이터가 모든 네트워크 참여자에게 실제로 제공되고 있다는 사용자의 확신을 의미합니다. 이더리움 레이어 1 (l1)의 풀 노드에게 이는 비교적 간단합니다. 풀 노드는 각 블록의 모든 데이터 사본을 다운로드하며, 다운로드가 가능하려면 데이터가 반드시 가용해야 합니다. 데이터가 누락된 블록은 블록체인에 추가되지 않고 폐기됩니다. 이것이 "온체인 데이터 가용성"이며, 모놀리식 블록체인의 특징입니다. 풀 노드는 모든 트랜잭션을 직접 다운로드하고 실행하기 때문에 유효하지 않은 트랜잭션을 수락하도록 속일 수 없습니다. 하지만 모듈형 블록체인, 레이어 2 (l2) 롤업 및 경량 클라이언트의 경우 데이터 가용성 환경이 더 복잡하여 보다 정교한 검증 절차가 필요합니다.
전제 조건
블록체인 기초, 특히 합의 메커니즘에 대해 잘 이해하고 있어야 합니다. 또한 이 페이지는 독자가 블록, 트랜잭션, 노드, 확장성 솔루션 및 기타 관련 주제에 익숙하다고 가정합니다.
데이터 가용성 문제
데이터 가용성 문제는 블록체인에 추가되는 일부 트랜잭션 데이터의 요약된 형태가 실제로 유효한 트랜잭션 세트를 나타낸다는 것을 전체 네트워크에 증명해야 하지만, 모든 노드가 모든 데이터를 다운로드하지 않고도 이를 수행해야 한다는 필요성에서 비롯됩니다. 블록을 독립적으로 검증하려면 전체 트랜잭션 데이터가 필요하지만, 모든 노드에 전체 트랜잭션 데이터를 다운로드하도록 요구하는 것은 확장에 장애물이 됩니다. 데이터 가용성 문제에 대한 해결책은 데이터를 직접 다운로드하고 저장하지 않는 네트워크 참여자에게도 검증을 위한 전체 트랜잭션 데이터가 제공되었다는 충분한 보장을 제공하는 것을 목표로 합니다.
경량 노드와 레이어 2 (l2) 롤업은 강력한 데이터 가용성 보장이 필요하지만 트랜잭션 데이터를 직접 다운로드하고 처리할 수 없는 네트워크 참여자의 중요한 예입니다. 트랜잭션 데이터 다운로드를 피하는 것이 경량 노드를 가볍게 만들고 롤업이 효과적인 확장성 솔루션이 될 수 있게 하는 요소입니다.
데이터 가용성은 블록을 검증하기 위해 상태 데이터를 다운로드하고 저장할 필요가 없는 미래의 "무상태(stateless)" 이더리움 클라이언트에게도 중요한 문제입니다. 무상태 클라이언트는 여전히 데이터가 어딘가에 가용하며 올바르게 처리되었음을 확신할 수 있어야 합니다.
데이터 가용성 솔루션
데이터 가용성 샘플링(DAS)
데이터 가용성 샘플링(DAS)은 개별 노드에 너무 많은 부담을 주지 않으면서 네트워크가 데이터가 가용한지 확인하는 방법입니다. 각 노드(스테이킹하지 않는 노드 포함)는 전체 데이터 중 무작위로 선택된 작은 하위 집합을 다운로드합니다. 샘플을 성공적으로 다운로드하면 모든 데이터가 가용하다는 것을 높은 신뢰도로 확인할 수 있습니다. 이는 주어진 데이터 세트를 중복 정보로 확장하는 데이터 이레이저 코딩에 의존합니다(이 작업은 데이터에 다항식이라는 함수를 맞추고 추가 지점에서 해당 다항식을 평가하는 방식으로 수행됩니다). 이를 통해 필요할 때 중복 데이터에서 원본 데이터를 복구할 수 있습니다. 이러한 데이터 생성의 결과로, 원본 데이터 중 일부라도 가용하지 않으면 확장된 데이터의 절반이 누락됩니다! 각 노드가 다운로드하는 데이터 샘플의 양을 조정하여, 실제로 가용한 데이터가 절반 미만일 경우 각 클라이언트가 샘플링한 데이터 조각 중 적어도 하나가 누락될 가능성을 매우 높일 수 있습니다.
DAS는 완전한 댕크샤딩이 구현된 후 롤업 운영자가 트랜잭션 데이터를 가용하게 만들도록 보장하는 데 사용될 것입니다. 이더리움 노드는 위에서 설명한 중복 체계를 사용하여 블롭에 제공된 트랜잭션 데이터를 무작위로 샘플링하여 모든 데이터가 존재하는지 확인합니다. 동일한 기술을 사용하여 블록 생성자가 경량 클라이언트를 보호하기 위해 모든 데이터를 가용하게 만들고 있는지 확인할 수도 있습니다. 마찬가지로 제안자-빌더 분리 (PBS) 하에서는 블록 빌더만 전체 블록을 처리하면 되며, 다른 검증자는 데이터 가용성 샘플링을 사용하여 검증하게 됩니다.
데이터 가용성 위원회
데이터 가용성 위원회(DAC)는 데이터 가용성을 제공하거나 증명하는 신뢰할 수 있는 당사자입니다. DAC는 DAS 대신 사용하거나 DAS와 결합하여 (opens in a new tab) 사용할 수 있습니다. 위원회가 제공하는 보안 보장은 특정 설정에 따라 다릅니다. 예를 들어, 이더리움은 무작위로 샘플링된 검증자 하위 집합을 사용하여 경량 노드를 위한 데이터 가용성을 증명합니다.
DAC는 일부 밸리디움(validium)에서도 사용됩니다. DAC는 데이터 사본을 오프라인에 저장하는 신뢰할 수 있는 노드 집합입니다. 분쟁이 발생할 경우 DAC는 데이터를 가용하게 만들어야 합니다. DAC 구성원은 또한 해당 데이터가 실제로 가용하다는 것을 증명하기 위해 온체인 증명을 게시합니다. 일부 밸리디움은 DAC를 지분 증명 (PoS) 검증자 시스템으로 대체합니다. 여기서는 누구나 검증자가 되어 오프체인에 데이터를 저장할 수 있습니다. 하지만 이들은 스마트 컨트랙트에 예치되는 "보증금(bond)"을 제공해야 합니다. 검증자가 데이터를 은닉하는 등의 악의적인 행동을 할 경우 보증금은 슬래싱될 수 있습니다. 지분 증명 (PoS) 데이터 가용성 위원회는 정직한 행동을 직접적으로 장려하기 때문에 일반 DAC보다 훨씬 더 안전합니다.
데이터 가용성과 경량 노드
경량 노드는 블록 데이터를 다운로드하지 않고 수신한 블록 헤더의 정확성을 검증해야 합니다. 이러한 가벼움의 대가는 풀 노드처럼 로컬에서 트랜잭션을 재실행하여 블록 헤더를 독립적으로 검증할 수 없다는 것입니다.
이더리움 경량 노드는 동기화 위원회에 할당된 512명의 무작위 검증자 세트를 신뢰합니다. 동기화 위원회는 암호화 서명을 사용하여 헤더의 데이터가 올바르다는 것을 경량 클라이언트에게 알리는 DAC 역할을 합니다. 동기화 위원회는 매일 갱신됩니다. 각 블록 헤더는 경량 노드에게 다음 블록에 서명할 검증자가 누구인지 알려주므로, 실제 동기화 위원회인 척하는 악의적인 그룹을 신뢰하도록 속일 수 없습니다.
하지만 공격자가 어떻게든 악의적인 블록 헤더를 경량 클라이언트에게 전달하고 정직한 동기화 위원회가 서명했다고 확신시키는 데 성공한다면 어떻게 될까요? 이 경우 공격자는 유효하지 않은 트랜잭션을 포함할 수 있으며, 경량 클라이언트는 블록 헤더에 요약된 모든 상태 변경을 독립적으로 확인하지 않기 때문에 이를 맹목적으로 수락하게 됩니다. 이를 방지하기 위해 경량 클라이언트는 사기 증명을 사용할 수 있습니다.
이러한 사기 증명이 작동하는 방식은 다음과 같습니다. 네트워크에 유효하지 않은 상태 전환이 전파되는 것을 본 풀 노드는 제안된 상태 전환이 주어진 트랜잭션 세트에서 발생할 수 없음을 보여주는 작은 데이터를 신속하게 생성하여 피어에게 브로드캐스트할 수 있습니다. 경량 노드는 이러한 사기 증명을 수신하여 잘못된 블록 헤더를 폐기하는 데 사용함으로써 풀 노드와 동일한 정직한 체인에 머물 수 있습니다.
이는 풀 노드가 전체 트랜잭션 데이터에 접근할 수 있다는 점에 의존합니다. 잘못된 블록 헤더를 브로드캐스트하면서 트랜잭션 데이터도 가용하게 만들지 않는 공격자는 풀 노드가 사기 증명을 생성하는 것을 막을 수 있습니다. 풀 노드는 잘못된 블록에 대한 경고를 보낼 수는 있지만, 증명을 생성할 데이터가 제공되지 않았기 때문에 증명으로 경고를 뒷받침할 수는 없습니다!
이 데이터 가용성 문제에 대한 해결책이 바로 DAS입니다. 경량 노드는 전체 상태 데이터의 매우 작은 무작위 청크를 다운로드하고 샘플을 사용하여 전체 데이터 세트가 가용한지 검증합니다. N개의 무작위 청크를 다운로드한 후 전체 데이터가 가용하다고 잘못 가정할 실제 가능성은 계산할 수 있습니다(100개 청크의 경우 확률은 10^-30 (opens in a new tab)으로, 믿을 수 없을 정도로 낮습니다).
이 시나리오에서도 단 몇 바이트만 은닉하는 공격은 무작위 데이터 요청을 하는 클라이언트가 눈치채지 못할 수 있습니다. 이레이저 코딩은 제안된 상태 변경을 확인하는 데 사용할 수 있는 누락된 작은 데이터 조각을 재구성하여 이 문제를 해결합니다. 그런 다음 재구성된 데이터를 사용하여 사기 증명을 구성할 수 있으므로 경량 노드가 잘못된 헤더를 수락하는 것을 방지할 수 있습니다.
참고: DAS 및 사기 증명은 지분 증명 (PoS) 이더리움 경량 클라이언트를 위해 아직 구현되지 않았지만 로드맵에 있으며, 영지식 스나크 기반 증명의 형태를 취할 가능성이 높습니다. 오늘날의 경량 클라이언트는 DAC의 한 형태에 의존합니다. 즉, 동기화 위원회의 신원을 검증한 다음 수신한 서명된 블록 헤더를 신뢰합니다.
데이터 가용성과 레이어 2 (l2) 롤업
과 같은 레이어 2 (l2) 확장성 솔루션은 트랜잭션을 오프체인에서 처리하여 트랜잭션 비용을 줄이고 이더리움의 처리량을 늘립니다. 롤업 트랜잭션은 압축되어 이더리움에 배치(batch)로 게시됩니다. 배치는 이더리움의 단일 트랜잭션 내에 수천 개의 개별 오프체인 트랜잭션을 나타냅니다. 이는 기본 레이어의 혼잡을 줄이고 사용자의 수수료를 낮춥니다.
하지만 이더리움에 게시된 '요약' 트랜잭션을 신뢰할 수 있는 것은 제안된 상태 변경이 독립적으로 검증될 수 있고 모든 개별 오프체인 트랜잭션을 적용한 결과임이 확인될 때뿐입니다. 롤업 운영자가 이 검증을 위해 트랜잭션 데이터를 가용하게 만들지 않으면 이더리움에 잘못된 데이터를 보낼 수 있습니다.
옵티미스틱 롤업은 압축된 트랜잭션 데이터를 이더리움에 게시하고 독립적인 검증자가 데이터를 확인할 수 있도록 일정 시간(일반적으로 7일)을 기다립니다. 누군가 문제를 발견하면 사기 증명을 생성하여 롤업에 이의를 제기할 수 있습니다. 이로 인해 체인이 롤백되고 유효하지 않은 블록이 생략됩니다. 이는 데이터가 가용할 때만 가능합니다. 현재 옵티미스틱 롤업이 레이어 1 (l1)에 트랜잭션 데이터를 게시하는 방법에는 두 가지가 있습니다. 일부 롤업은 온체인에 영구적으로 존재하는 CALLDATA로 데이터를 영구적으로 가용하게 만듭니다. EIP-4844의 구현으로 일부 롤업은 트랜잭션 데이터를 더 저렴한 블롭 스토리지에 대신 게시합니다. 이는 영구적인 스토리지가 아닙니다. 독립적인 검증자는 데이터가 이더리움 레이어 1 (l1)에서 삭제되기 전인 약 18일 이내에 블롭을 쿼리하고 이의를 제기해야 합니다. 데이터 가용성은 그 짧은 고정된 기간 동안만 이더리움 프로토콜에 의해 보장됩니다. 그 이후에는 이더리움 생태계 내 다른 주체들의 책임이 됩니다. 모든 노드는 DAS를 사용하여, 즉 블롭 데이터의 작고 무작위적인 샘플을 다운로드하여 데이터 가용성을 검증할 수 있습니다.
영지식(ZK) 롤업은 이 상태 전환의 정확성을 보장하므로 트랜잭션 데이터를 게시할 필요가 없습니다. 하지만 상태 데이터에 접근하지 않고는 ZK 롤업의 기능(또는 상호 작용)을 보장할 수 없기 때문에 데이터 가용성은 여전히 문제입니다. 예를 들어, 운영자가 롤업의 상태에 대한 세부 정보를 은닉하면 사용자는 자신의 잔액을 알 수 없습니다. 또한 새로 추가된 블록에 포함된 정보를 사용하여 상태 업데이트를 수행할 수 없습니다.
데이터 가용성 대 데이터 검색 가능성
데이터 가용성은 데이터 검색 가능성(retrievability)과 다릅니다. 데이터 가용성은 풀 노드가 특정 블록과 관련된 전체 트랜잭션 세트에 접근하고 검증할 수 있었다는 보장입니다. 이것이 데이터에 영원히 접근할 수 있다는 것을 의미하지는 않습니다.
데이터 검색 가능성은 노드가 블록체인에서 과거 정보를 검색할 수 있는 능력입니다. 이 과거 데이터는 새로운 블록을 검증하는 데 필요하지 않으며, 제네시스 블록부터 풀 노드를 동기화하거나 특정 과거 요청을 처리하는 데만 필요합니다.
핵심 이더리움 프로토콜은 주로 데이터 검색 가능성이 아닌 데이터 가용성에 중점을 둡니다. 데이터 검색 가능성은 제3자가 운영하는 소수의 아카이브 노드에 의해 제공되거나, 포털 네트워크 (opens in a new tab)와 같은 탈중앙화된 파일 스토리지를 사용하여 네트워크 전체에 분산될 수 있습니다.
더 읽어보기
- 데이터 가용성이란 무엇인가요? (opens in a new tab)
- 데이터 가용성이란 무엇인가요? (opens in a new tab)
- 데이터 가용성 검사 입문 (opens in a new tab)
- 샤딩 + DAS 제안에 대한 설명 (opens in a new tab)
- 데이터 가용성 및 이레이저 코딩에 대한 참고 사항 (opens in a new tab)
- 데이터 가용성 위원회 (opens in a new tab)
- 지분 증명 (PoS) 데이터 가용성 위원회 (opens in a new tab)
- 데이터 검색 가능성 문제에 대한 해결책 (opens in a new tab)
- 데이터 가용성, 또는 롤업이 걱정을 멈추고 이더리움을 사랑하게 된 방법 (opens in a new tab)
- EIP-7623: 콜 데이터 비용 증가 (opens in a new tab)