샤딩

용어심층

Sharding

샤딩은 하나의 큰 데이터 집합이나 네트워크를 '샤드(shard)'라 부르는 여러 작은 조각으로 나누어 처리 부담을 분산하는 기법으로, 블록체인에서는 레이어 1 네트워크의 확장성을 높이는 대표적 방법 중 하나로 응용된다.

1.개요

샤딩(Sharding)은 하나의 큰 데이터 집합이나 네트워크를 '샤드(shard)'라 부르는 여러 개의 작은 조각으로 분할하는 기법이다. '조각'을 뜻하는 영어 단어 shard에서 이름이 유래했다. 원래는 대규모 데이터베이스의 부하를 여러 서버에 나누어 담기 위해 쓰이던 방식으로, 블록체인에서는 레이어 1 네트워크의 확장성 문제를 해결하기 위한 대표적인 방법 중 하나로 응용된다.

기존의 많은 블록체인에서는 모든 풀 노드가 모든 거래를 검증하고 저장해야 한다. 이 때문에 참여자가 늘어도 처리량이 쉽게 늘지 않는 구조적 한계가 있다. 샤딩은 네트워크를 여러 샤드로 나누고 각 샤드가 서로 다른 거래를 나누어 병렬로 처리하게 함으로써, 이론적으로 샤드 수에 비례해 전체 처리량을 늘릴 수 있다.

2.데이터베이스에서 온 개념

블록체인 샤딩의 발상은 관계형 데이터베이스에서 먼저 쓰인 수평 분할(horizontal partitioning) 기법에서 비롯됐다. 하나의 거대한 테이블을 행 단위로 잘라 여러 데이터베이스 서버에 나누어 저장하면, 각 서버는 전체가 아니라 자신이 맡은 조각만 다루면 되므로 읽기·쓰기 부하가 분산된다. 이렇게 나뉜 조각 하나하나가 샤드다.

블록체인 샤딩은 이 아이디어를 분산원장에 옮긴 것이다. '모든 노드가 모든 것을 처리한다'는 구조적 병목을, 데이터베이스에서 부하를 나누던 것처럼 노드와 데이터를 나누어 깨려는 시도라고 볼 수 있다. 다만 신뢰할 수 없는 다수의 노드가 참여하는 개방형 네트워크에서 이를 안전하게 구현하는 일은 중앙에서 관리되는 데이터베이스보다 훨씬 까다롭다.

3.왜 필요한가: 확장성 병목

블록체인은 흔히 탈중앙성·보안·확장성 세 가지를 동시에 만족시키기 어렵다는 '트릴레마'로 설명된다. 노드 수를 늘려 탈중앙성과 보안을 높이더라도, 모든 노드가 같은 거래를 중복해서 검증하는 구조 탓에 전체 처리량은 오히려 늘지 않는다. 네트워크의 처리 능력이 사실상 노드 한 대의 처리 능력에 묶여 버리는 셈이다.

샤딩은 이 병목을 노드 집단을 나누어 병렬화함으로써 완화하려는 접근이다. 검증 작업 자체를 여러 샤드로 쪼개기 때문에, 노드 수를 늘리면 늘어난 만큼 처리 용량도 함께 커지는 것을 목표로 한다. 즉 탈중앙성을 크게 훼손하지 않으면서 확장성을 확보하려는 데 그 취지가 있다.

4.작동 원리

네트워크를 여러 샤드로 나누면 각 노드는 전체가 아니라 자신이 속한 샤드의 거래만 검증하고 저장하면 된다. 서로 다른 샤드는 각기 다른 거래를 동시에 처리하므로, 여러 샤드가 함께 돌아갈 때 전체 처리량이 곱절로 늘어날 수 있다.

다만 샤드가 제각기 돌아가기만 해서는 하나의 블록체인으로서 일관성을 유지할 수 없다. 그래서 대개 샤드 간 조율과 최종 합의를 담당하는 상위 체인(비콘 체인·메인 체인 등으로 불린다)이 각 샤드의 상태 요약을 모아 전체 네트워크를 하나로 묶는 구조를 쓴다. 노드가 어느 샤드를 맡을지는 합의 알고리즘 안에서 무작위로 배정되고 주기적으로 재배치되는 경우가 많은데, 이는 뒤에 설명할 단일 샤드 공격을 막기 위한 장치다.

5.샤딩의 종류

블록체인 샤딩은 무엇을 나누느냐에 따라 크게 세 가지 방식으로 나뉜다.

  • 네트워크 샤딩: 노드를 여러 그룹으로 나누어 각 그룹이 별도의 샤드를 담당하게 한다. 통신과 검증의 부담을 그룹 단위로 분산하는 가장 기본적인 층위다.
  • 거래 샤딩: 거래를 정해진 규칙에 따라 특정 샤드에 배정한다. 어떤 거래가 어느 샤드에서 처리될지를 결정하는 방식이 핵심이다.
  • 상태 샤딩: 계정 잔액 같은 블록체인의 상태 데이터 자체를 샤드별로 분산 저장한다.

이 중 상태 샤딩은 저장 부담까지 나눌 수 있어 효과가 가장 크지만, 각 노드가 전체 상태의 일부만 갖게 되므로 교차 샤드 처리와 데이터 이전이 복잡해져 구현 난도도 가장 높다.

6.핵심 과제: 교차 샤드와 단일 샤드 공격

샤딩에는 나눔에서 비롯되는 두 가지 근본적인 난제가 따른다.

6.1.교차 샤드 거래

서로 다른 샤드에 걸쳐 일어나는 '교차 샤드(cross-shard) 거래'를 안전하게 처리하는 문제다. 예컨대 A 샤드의 계정이 B 샤드의 계정으로 자산을 보내려면, 두 샤드에 걸친 변경이 모두 성공하거나 모두 실패하는 원자성이 보장돼야 한다. 이를 위한 조율 과정은 지연을 늘리고 설계를 복잡하게 만든다.

6.2.단일 샤드 공격

하나의 샤드에 악의적 노드가 몰려 그 샤드만 장악당하는 '단일 샤드 공격'을 막아야 한다. 전체 네트워크를 장악하기는 어려워도, 쪼개진 개별 샤드는 상대적으로 적은 자원으로도 다수를 차지할 수 있어 51% 공격에 더 취약해질 수 있기 때문이다. 이를 막기 위해 노드를 무작위로 샤드에 배정하고 주기적으로 재배치하는 방식이 흔히 쓰이며, 비잔틴 장애 허용을 각 샤드 안에서 확보하는 것이 중요하다.

이런 복잡성 때문에 샤딩은 테스트넷에서 오랜 검증을 거친 뒤에야 메인넷에 적용되는 경우가 많다.

7.이더리움의 샤딩 로드맵

이더리움은 초기 확장 로드맵에서 64개의 샤드 체인을 도입하는 실행 샤딩을 계획했다. 그러나 이후 레이어 2 롤업 중심의 로드맵으로 방향을 전환하면서, 실행을 직접 나누는 대신 롤업이 사용할 데이터 공간을 확장하는 '데이터 샤딩'에 초점을 맞추게 됐다.

2024년 도입된 EIP-4844(프로토 댕크샤딩, proto-danksharding)는 블록에 '블롭(blob)'이라는 임시 데이터 영역을 추가한 것이다. 롤업이 이 저렴한 임시 공간에 데이터를 올릴 수 있게 되어 레이어 2의 비용 부담이 크게 줄었다. EIP-4844는 완전한 형태의 댕크샤딩(danksharding)으로 나아가는 중간 단계로, 최종적으로는 여러 블롭을 대량으로 수용해 데이터 가용성을 크게 확장하는 것을 지향한다.

8.주요 프로젝트

이더리움 외에도 여러 프로젝트가 자체적인 샤딩 방식을 채택해 처리량 확장을 시도했다.

  • 질리카(Zilliqa): 상용 블록체인 가운데 이른 시기에 샤딩을 실제로 구현한 사례로 꼽힌다. 주로 네트워크·거래 샤딩에 해당하는 방식으로 처리량을 늘렸다.
  • 하모니(Harmony): 무작위 배정과 재배치를 결합한 샤딩 구조로 다수의 샤드를 병렬 운영하는 방식을 채택했다.
  • 니어(NEAR): 나이트셰이드(Nightshade)라는 이름의 샤딩 설계를 단계적으로 도입해 왔다.

각 프로젝트는 샤드 배정, 교차 샤드 처리, 상태 분산의 세부 방식에서 서로 다른 선택을 했으며, 이는 앞서 설명한 난제들을 어떻게 풀 것인가에 대한 각기 다른 답이라고 볼 수 있다.

9.레이어 2와의 관계

샤딩은 블록체인의 확장성을 높이는 여러 접근 중 하나로, 별도의 처리 계층을 얹는 레이어 2 방식과 자주 비교된다. 샤딩이 기반 체인(레이어 1) 자체를 여러 조각으로 나눠 처리 용량을 키우는 '수평 분할'이라면, 레이어 2는 처리를 체인 바깥으로 옮긴 뒤 결과만 기반 체인에 기록하는 '위로 쌓기'에 가깝다.

두 방식은 상호 배타적이지 않다. 이더리움처럼 데이터 샤딩으로 기반 체인의 데이터 공간을 넓혀 레이어 2 롤업의 성능과 비용 효율을 함께 끌어올리는 결합 전략도 쓰인다. 즉 오늘날 이더리움의 샤딩은 실행을 나누는 대신 레이어 2를 뒷받침하는 데이터 계층으로 자리를 잡았다.

10.한계와 앞으로의 과제

샤딩은 이론적 이점이 크지만 구현 난도가 높다. 상태 샤딩처럼 효과가 큰 방식일수록 교차 샤드 거래의 원자성 보장, 샤드 간 데이터 가용성 확보, 노드 재배치 시의 상태 이전 등 풀어야 할 문제가 많다.

또한 스마트 컨트랙트나 자산이 여러 샤드에 흩어지면 서로 자유롭게 호출하고 조합하기 어려워지는 '컴포저빌리티(합성 가능성)' 저하가 지적된다. 하나의 체인에서 즉시 이뤄지던 상호작용이 샤드 경계를 넘을 때는 지연과 추가 조율을 요구하기 때문이다. 이더리움이 실행 샤딩 대신 롤업 중심 로드맵으로 방향을 튼 배경에도 이런 복잡성과 위험이 있었다. 앞으로 샤딩이 널리 자리 잡으려면 이런 분할의 대가를 얼마나 낮출 수 있는가가 관건이 될 것이다.

11.연표6

  1. 2019이정표질리카(Zilliqa) 메인넷 출시, 상용 블록체인 가운데 이른 시기에 샤딩을 구현
  2. 2019이정표하모니(Harmony) 메인넷 출시, 샤딩 기반 처리량 확장 시도
  3. 2020이정표이더리움, 실행 샤딩 대신 롤업 중심 로드맵으로 방향 전환
  4. 2020이정표니어(NEAR) 메인넷 출시
  5. 2021출시니어, 심플 나이트셰이드(Simple Nightshade)로 샤딩 도입 단계 진입
  6. 2024출시이더리움 EIP-4844(프로토 댕크샤딩) 도입, 블록에 임시 데이터 영역 '블롭' 추가
이 문서 인용하기
토큰포스트 위키, “샤딩”, 2026-07-31 수정, https://wiki.tokenpost.kr/w/sharding

문단 10개 · 연표 6건 · 각주 0