본문으로 건너뛰기
0%

danksharding란?

작성자 John Favole

2022년 6월 22일에 게시됨4분 읽기

프로토-단크샤딩(proto-danksharding)이라는 새로운 샤딩 설계가 완전한 블록체인 샤딩으로 가는 로드맵의 일환으로 도입되었습니다. 워낙 새로운 개념이다 보니 아직 많은 사람들이 이를 제대로 이해하지 못하고 있습니다.

이 글에서는 프로토-단크샤딩에 대해 알아야 할 모든 것과 이것이 Layer 2의 확장성에 어떻게 도움이 되는지를 이해하기 쉽게 상세히 살펴보겠습니다. 시작하겠습니다.

샤딩이란 무엇인가?

샤딩은 전체 효율성을 높이기 위해 블록체인을 더 작은 부분으로 나누는 것을 의미합니다.

예를 들어, Ethereum Mainnet에서 10만 달러 상당의 트랜잭션을 처리하는 대신, 이 트랜잭션을 10개의 샤드로 나누어 각 샤드가 1만 달러 상당의 트랜잭션 데이터를 담당하게 할 수 있습니다. 이는 네트워크 혼잡을 줄이기 위한 것입니다.

속도 외에도 샤드 체인은 더 큰 저장 용량을 제공하고 수수료를 낮춥니다.

샤딩은 최종 단계에 도달하기까지 여러 단계를 거쳐야 하는 구현이라는 점을 유의해야 합니다.

단크샤딩이란 무엇인가?

단크샤딩(Danksharding)은 병합된 수수료 시장(merged market fee)이라는 개념을 구현하는 샤딩 설계입니다. 일반적인 샤딩에서는 각 샤드마다 서로 다른 블록과 블록 제안자(proposer)가 존재하는 반면, 단크샤딩에는 단 하나의 제안자만 존재합니다.

블록 빌더(block builder)는 블록의 각 슬롯에 들어갈 데이터와 트랜잭션을 선택하는 역할을 담당합니다.

단크샤딩과 샤딩은 서로 연관되어 있지만 별개의 개념입니다. 샤딩이 Ethereum을 확장하기 위한 네트워크 분할의 전반적인 설계라면, 단크샤딩은 이 목표를 실현하기 위한 하나의 단계입니다.

Ethereum의 대표적인 연구자 중 한 명인 Tim Beiko는 Bankless 팟캐스트에서 _Danksharding_이라는 이름의 유래를 설명했습니다. 이 이름은 또 다른 베테랑 Ethereum 연구자인 Dankrad Feist의 이름에서 따온 것입니다.

단크샤딩은 어떻게 작동하는가?

블록 빌더는 나중에 하나의 블록을 형성할 각 슬롯에 무엇이 들어갈지 결정하기 위한 요청을 제출하고, 제안자는 그중 최고 입찰자를 선택합니다. 특정 슬롯을 담당할 빌더가 선정되면, 그 빌더가 전체 블록의 처리를 책임집니다.

경우에 따라서는 오라클이 블록 빌더의 역할을 수행할 수도 있습니다. Ethereum 팀에 따르면, 이러한 설계의 주된 이유는 현재 채굴자들이 가지고 있는 두 가지 불공정한 통제력, 즉 Maximum Extractable Value(MEV)를 억제하기 위함입니다.

첫째, 채굴자는 자신 또는 자신이 아는 사람의 트랜잭션을 우대하는 불공정한 방식을 취할 수 있습니다. 둘째, 채굴자는 최고 입찰자의 트랜잭션만 골라서 처리하고, 나머지 수백만 건의 트랜잭션을 멤풀(mempool)에 몇 시간 또는 며칠씩 남겨둘 수 있습니다.

그러나 단크샤딩에서는 빌더가 제출하는 정렬된 트랜잭션 목록의 내용을 아무도 알 수 없습니다. 따라서 _제안자_의 권한이 제한됩니다.

블록 빌더와 제안자의 차이는 무엇인가?

블록 빌더는 블록 구성 역할을 수행하고, 블록 제안자는 블록에 추가할 트랜잭션 헤더를 선택하여 이를 전파하는 역할을 합니다. 이 둘은 서로 긴밀히 협력하며 작동합니다.

블록 빌더는 트랜잭션을 슬롯 또는 청크(chunk)로 묶어 블록에 추가할 수 있도록 준비한 뒤, 이를 제안자에게 제출하여 선택을 받습니다. 제안자가 블록을 성공적으로 선택하면, 블록 빌더가 해당 블록을 처리합니다.

단크샤딩의 데이터 가용성 샘플링

블록체인의 기본 원칙 중 하나는 투명성입니다. 악의적이거나 유효하지 않은 블록이 체인에 추가되면 전체 네트워크에 나쁜 영향을 미칠 수 있습니다.

일반적으로 Ethereum 생태계에서는 풀 노드가 라이트 클라이언트, 나아가 전체 네트워크에 특정 트랜잭션이 유효하지 않다는 증거로 사기 증명(fraud proof)을 제시할 수 있습니다. 하지만 이는 롤업에서는 잘 작동하지만 단크샤딩에는 완전히 적합하지 않을 수 있습니다.

채굴자는 사용 가능한 데이터를 샘플링함으로써 단크샤딩된 블록을 검증할 수 있습니다. 우선, 데이터 가용성이란 특정 해시 뒤에 있는 실제 데이터가 온체인에 게시되었음을 의미합니다. 올해 ETH Dubai에서 Protolambda는 데이터 가용성을 _상태를 재구성할 수 있는 퍼미션리스 능력_이라고 설명했습니다.

실제로 이 데이터 가용성 샘플링은 소거 코드(erasure code)를 통해 구현됩니다. 소거 코드를 샘플링하면 해당 슬롯이나 블록에 추가된 실제 데이터를 얻을 수 있습니다.

트랜잭션이 처리된 이후, 처리량 병목을 방지하기 위해 언제 Ethereum 블록체인에서 데이터를 삭제해야 하는지에 대한 논의가 계속될 수 있습니다.

현재로서는 한 달 후에 데이터를 삭제하는 계획이 있습니다. 다만 만료일이 지난 후에도 Graph Protocol이나 블록 탐색기 등 다양한 수단을 통해 데이터에 계속 접근할 수 있습니다.

프로토-단크샤딩(EIP-4844)이란 무엇인가?

현재로서는 완전한 단크샤딩을 실현하기 위해 아직 해결해야 할 사항이 많이 남아 있습니다. 이로 인해 프로토-단크샤딩을 구현하는 형식인 EIP-4844 제안이 만들어졌습니다.

이 제안은 완전한 샤딩을 위해 필요한 핵심 변경 사항, 특히 트랜잭션 형식의 변경을 구현하는 것을 목표로 합니다. 프로토-단크샤딩이라는 이름 역시 또 다른 Ethereum 연구자인 Proto Lambda의 이름에서 유래되었습니다.

Proto Lambda가 단크샤딩에 도입한 실제 변경 사항은 Binary Large Objects, 흔히 줄여서 "블롭(blob)"이라고 부르는 것입니다. 사실 블롭은 프로그래밍에서 새로운 개념이 아니며, JavaScript나 Python에도 존재합니다. 새로운 점은 블롭이 스마트 컨트랙트에서도 활용될 수 있다는 가능성입니다. 이를 더 잘 이해하기 위해서는 "블롭이란 무엇인가?"라는 질문을 먼저 살펴봐야 합니다.

블롭(binary large objects)이란 무엇인가?

블롭은 블록 제안자가 제안합니다. 이는 더 저렴한 데이터를 담을 수 있는 큰 포장물 또는 대용량 휴대 번들에 비유할 수 있습니다. 각 블록은 이러한 _큰 포장물_을 제한된 크기만큼만 담을 수 있습니다. 구조적으로 일반적인 블롭은 바디(body)와 헤더(header)로 이루어져 있습니다.

블롭의 바디는 항상 트랜잭션과 직접 관련된 데이터를 저장합니다. 반면 헤더는 제안자의 서명과 같이 상대적으로 적은 양의 정보를 담고 있습니다.

프로토-단크샤딩에서는 모든 트랜잭션에 항상 짝을 이루는 블롭이 존재하며, 이 목적은 트랜잭션 비용을 더 저렴하게 만드는 것입니다. 확장성을 높이기 위해, 프로토-단크샤딩의 각 슬롯은 대체로 1MB의 데이터 대역폭을 갖게 됩니다.

참고: Ethereum 가상 머신(EVM)은 블롭 안에 포장된 더 저렴한 데이터에만 접근할 수 있으며, 블롭 자체에는 접근할 수 없습니다. 단크샤딩에서는 트랜잭션이 기존의 멤풀이 아니라 별도의 멤풀에 존재하기 때문입니다.

EIP-4844와 EIP-4488의 차이는 무엇인가?

차이는 다음과 같습니다: EIP-4844는 전체 샤딩 로드맵에 부합하며 이를 앞당기는 데에도 기여하는 해결책을 제공하는 반면, EIP-4488은 당장의 문제 해결만을 시도합니다.

EIP-4488의 핵심은 콜데이터(call data)의 가스 비용을 대폭 줄이는 것입니다. 이는 당장은 도움이 될 수 있지만, 완전한 샤딩이 도입되면 샤드가 블롭을 사용하게 되므로 이 방식은 무의미해질 것입니다. 반면 EIP-4844는 트랜잭션 형식에 블롭을 사용할 계획입니다.

다만 이 두 제안을 경쟁 관계나 트레이드오프로 볼 필요는 없다는 점도 염두에 두어야 합니다. 프로토-단크샤딩은 몇 가지 엔지니어링상의 세부 사항으로 인해 시간이 걸릴 수 있는 반면, EIP-4488은 롤업을 활용해 당면한 비용 문제를 해결하는 데 적용될 수 있습니다.

프로토-단크샤딩은 가스 수수료를 낮출 것인가

이에 대한 답은 명확히 "아니오"입니다. 프로토-단크샤딩은 Ethereum 가스 수수료를 낮추지는 않지만, Layer 2 프로토콜의 트랜잭션 비용은 낮출 것입니다.

실제로 프로토-단크샤딩에 관한 대화에서 이 질문이 자주 등장합니다. 프로토-단크샤딩이 블롭을 도입한다는 이유로 이러한 오해가 생기기 쉽습니다.

하지만 블롭은 롤업이 일반적으로 사용하는 콜데이터를 대체할 뿐입니다. 따라서 Ethereum 프로토콜 자체의 가스 수수료는 변하지 않습니다.

실제로 수년간 Ethereum 생태계의 업데이트를 지켜봐 온 개발자들이라면, 현재 나와 있는 대부분의 제안이 메인 Ethereum 프로토콜의 가스 수수료를 직접적으로나 크게 줄이지 못한다는 점에 동의할 것입니다. The Merge조차도 그렇습니다.

프로토-단크샤딩의 현재 상태

지난 2월 초 프로토-단크샤딩 개선 제안이 만들어진 이후, 진전이 있는지에 대한 기대가 이어지고 있습니다.

Ethereum 연구팀이 여전히 몇 가지 중요한 문제를 해결하는 중인 만큼, 프로토-단크샤딩이 완전한 샤딩의 선구자가 되기까지는 아직 갈 길이 멉니다.

우선, 데이터 가용성 샘플링은 아직 이론 단계에 머물러 있으며 구현되지 않았습니다. 이는 개발자들이 Ethereum Improvement Proposal에서 포인트 평가 프리컴파일(point evaluation precompile)만 구현할지, 아니면 블롭 검증 프리컴파일(blob verification precompile)과 결합할지 여부를 아직 결정하지 못했기 때문이기도 합니다.

실제로 블롭 검증 프리컴파일은 Layer 2 진영에서 자체적으로 구현 가능한 부분입니다. 이에 따라 Ethereum 커뮤니티는 이를 공식적으로 제공할 필요가 있는지 여부를 논의하고 있습니다.

Ethereum 팀은 블롭에 대한 가장 현실적인 아키텍처와 도입할 가장 합리적인 보안 조치를 검토하고 있습니다.

프로토-단크샤딩의 미래

Ethereum 네트워크는 수년간 상대적으로 느린 처리량과 높은 가스 수수료 문제와 씨름해 왔으며, Ethereum 연구자들은 샤딩을 포함한 다양한 기술적 해결책을 제안해 왔습니다.

프로토-단크샤딩은 완전한 샤딩 로드맵을 구현하기 위한 경로이며, 그 주된 목표는 블롭 중심의 트랜잭션 형식을 통해 Layer 2 프로토콜의 트랜잭션 비용을 낮추는 것입니다.

Ethereum 커뮤니티는 Layer 2 블록체인이 Ethereum 프로토콜 위에서 더 확장성 있게 구축할 수 있도록 필요한 아키텍처를 제공함으로써 모듈성 목표를 강화하는 데 힘써 왔습니다.

Background gradient

블록체인 매직을 만드세요

Alchemy는 가장 강력한 Web3 개발자 제품 및 도구를 리소스, 커뮤니티, 그리고 전설적인 지원과 결합합니다.