Sharding
**샤딩(Sharding)**은 데이터 세트 관리의 용이성, 확장성 개선 및 거래 속도 향상을 위해 블록체인을 샤드(shards)라고 불리는 더 작고 분할된 블록체인으로 나누는 프로세스를 설명하는 용어입니다. [1][2][3]\
개요
샤딩은 확장성을 목적으로 전통적인 데이터베이스에서 유래된 블록체인 기술로, 초당 더 많은 거래를 처리할 수 있게 해줍니다. 샤딩은 수평 분할(horizontal partitioning)이라고도 불리는 데이터베이스 파티셔닝 기술에서 시작되었습니다. 이 프로세스는 대규모 데이터베이스를 "샤드"라고 알려진 더 작은 단위로 나누는 것을 포함합니다. 이러한 분할은 데이터베이스 정보에 대한 접근성을 개선합니다. [2]
각 샤드는 자체 데이터로 구성되어 있어 다른 샤드와 비교했을 때 독특하고 독립적입니다. 데이터베이스 샤드, 또는 단순히 샤드는 데이터베이스나 검색 엔진에 있는 데이터의 수평적 파티션입니다. 각 샤드는 부하를 분산하기 위해 별도의 데이터베이스 서버 인스턴스에 보관됩니다. 데이터베이스 내의 일부 데이터는 모든 샤드에 존재하지만, 일부는 단일 샤드에만 나타납니다. 각 샤드는 이 데이터 하위 집합에 대한 단일 소스 역할을 합니다.
샤딩은 블록체인 네트워크를 별도의 샤드로 나누기 때문에 네트워크의 지연 시간이나 속도 저하를 줄이는 데 도움이 될 수 있습니다. 그러나 샤드가 공격받을 수 있다는 샤딩 관련 보안 우려도 존재합니다.[7]
샤딩은 블록체인 네트워크의 모든 상호작용과 거래를 처리하는 단일 체인의 부담을 덜어줍니다. 각 샤드는 자체 원장을 가지고 있으며 자체 거래를 처리할 수 있고 고유한 스마트 컨트랙트 세트를 보유합니다. [1][3]
장점
- 확장성: 샤딩은 대규모 분산 기업용 애플리케이션에 매우 적합합니다. 명령이나 쿼리의 빠른 실행을 가능하게 합니다. 샤딩 패턴의 핵심 기능인 스토리지 세분화는 물리적 인프라가 통제된 방식으로 확장될 수 있도록 합니다.[8]
- 탈중앙화: 블록체인 확장성에 미치는 긍정적인 영향 외에도, 샤딩은 탈중앙화 측면에서도 중요한 의미를 갖습니다. 샤딩은 네트워크에서 더 많은 수의 노드가 참여하여 거래를 처리할 수 있도록 촉진합니다. 결과적으로 이는 네트워크 내의 탈중앙화 정도와 공평한 권력 분배를 증대시킵니다. 광범위하게 탈중앙화된 네트워크에는 단일 중앙 취약점이 없으므로 이러한 배치는 잠재적으로 보안 수준을 높일 수 있습니다.[5]
- 성능: 데이터를 여러 머신에 분산함으로써, 샤딩된 데이터베이스는 단일 머신보다 더 많은 요청을 처리할 수 있습니다. 샤딩은 부하를 공유하기 위해 추가 노드가 투입되는 수평적 확장(horizontal scaling) 또는 스케일 아웃(scale-out)의 한 형태입니다.[8]
단점
샤딩이 블록체인의 확장성 문제에 대한 잠재적 해결책처럼 보일 수 있지만, 구현에는 몇 가지 과제가 따릅니다. 블록체인 샤딩과 관련된 두 가지 주요 단점은 복잡성과 보안입니다.
- 복잡성: 기존 블록체인 네트워크에 샤딩을 도입하는 것은 네트워크 분할의 복잡한 과정과 필요한 상태 재할당으로 인해 매우 어려운 작업입니다. 샤딩은 소프트웨어 개발 프로젝트의 복잡성을 크게 증가시킵니다. 데이터베이스를 샤딩하고 쿼리를 올바른 샤드로 적절히 유도하기 위해 추가적인 로직이 필요합니다. 이는 개발 시간과 비용을 증가시킵니다. [3][4]
- 보안 우려: 샤딩을 둘러싼 보안 우려에는 한 샤드가 다른 샤드를 공격하여 정보 손실을 초래하는 해킹이나 샤드 탈취가 포함됩니다. 부적절한 구현은 이중 지불 위험으로 이어져 네트워크의 전반적인 보안에 큰 영향을 미칠 수 있습니다. 또한, 개별 세그먼트를 조작하는 데 필요한 해시 파워가 줄어들기 때문에 해커가 단일 샤드에 대한 제어권을 얻기가 더 쉬워져 분할된 블록체인이 공격에 취약해질 수 있습니다. 세그먼트가 손상되면 악의적인 거래가 더 넓은 네트워크로 퍼져 전체 시스템에 혼란을 야기할 수 있습니다.[3][6][7]
- 인프라 비용: 더 정교한 네트워크 메시가 필요한 경우가 많으며, 이는 실험 및 인프라 비용의 증가로 이어집니다.[9]
- 요구되는 전문 지식: 샤딩 세분화를 효과적으로 관리하기 위해 DBA는 특정 도메인 전문 지식과 사용 중인 데이터베이스 기술의 모범 사례에 대한 경험을 모두 갖추어야 합니다.[8]
- 네트워크 트래픽: 수많은 지리적 위치에 분산된 샤드는 과도한 네트워크 트래픽으로 인해 성능 저하가 발생하기 쉽습니다.[8]
이더리움 샤딩
비탈릭 부테린에 의해 처음에 이더리움 클래식으로 개발된 이더리움은 통합된 블록체인 시스템으로 운영됩니다. 증가하는 수의 탈중앙화 애플리케이션과 사용자를 수용할 수 있는 능력에도 불구하고, 모든 거래는 제한된 채굴자 그룹을 통과해야 합니다. 결과적으로 이러한 중앙 집중식 처리는 네트워크 혼잡을 초래할 수 있습니다.[2]
2018년, 비탈릭은 이더리움 블록체인의 샤딩 업데이트를 위한 개념 증명(PoC) 간행물에 다음과 같은 의견을 추가했습니다.[17]
"아직 완전히 해결되지 않은 과제는 인센티브를 부여하는 방법과 크로스 링크를 허용할 시기를 결정하는 것입니다."
이더리움 샤딩은 이더리움 네트워크가 처리할 수 있는 거래 수를 늘리기 위한 방법입니다. 이 개념은 전체 이더리움 네트워크를 '샤드'라고 알려진 여러 부분으로 나누는 것을 포함합니다. 각 샤드는 고유한 계정 잔액 및 스마트 컨트랙트 세트를 의미하는 자체 독립 상태를 포함합니다.[14]
2021년 그의 게시물 중 하나에서 비탈릭은 샤딩의 중요성을 강조했습니다. [15]
"샤딩은 이더리움 확장성의 미래이며, 생태계가 초당 수천 건의 거래를 지원하고 전 세계의 많은 사람들이 저렴한 비용으로 정기적으로 플랫폼을 사용할 수 있도록 돕는 핵심이 될 것입니다."
또한 2018년 12월 부테린은 다음과 같이 트윗했습니다. [16]
"샤딩이 적용된 지분 증명 블록체인은 미래에 '수천 배' 더 효율적일 것입니다."
댕크샤딩 (Danksharding)
댕크샤딩은 이더리움 네트워크가 처리할 수 있는 거래 수를 늘리기 위한 방법입니다. 이는 이더리움이 진정으로 확장 가능한 블록체인이 되는 방법입니다. 댕크샤딩은 롤업이 압축된 거래 데이터를 덤프할 수 있도록 이더리움에 방대한 공간을 제공할 것입니다.
이 개념은 전체 이더리움 네트워크를 '샤드'라고 알려진 여러 부분으로 나누는 것을 포함합니다. 각 샤드는 고유한 계정 잔액 및 스마트 컨트랙트 세트를 의미하는 자체 독립 상태를 포함합니다.
이더리움의 로드맵에는 댕크샤딩이라는 프로토콜 업그레이드가 포함되어 있습니다. 이 업그레이드는 사용자가 레이어 2에서의 거래를 가능한 한 저렴하게 이용할 수 있도록 하는 것을 목표로 하며, 이더리움을 초당 100,000건 이상의 거래로 확장해야 합니다. EIP-4844로도 알려진 프로토-댕크샤딩(Proto-Danksharding)은 그 과정의 중간 단계입니다.
프로토-댕크샤딩은 블록에 전송 및 첨부할 수 있는 데이터 블롭(data blobs)을 도입합니다. 이러한 블롭의 데이터는 EVM에서 접근할 수 없으며 정해진 기간(1~3개월) 후에 자동으로 삭제됩니다. 이는 롤업이 데이터를 훨씬 더 저렴하게 보낼 수 있고 그 절감액을 더 저렴한 거래의 형태로 최종 사용자에게 전달할 수 있음을 의미합니다.
롤업이 제출한 데이터 블롭은 롤업이 오작동하지 않는지 확인하기 위해 검증되어야 합니다. 여기에는 증명자가 블롭의 거래를 재실행하여 약속이 유효했는지 확인하는 과정이 포함됩니다. 이는 개념적으로 실행 클라이언트가 머클 증명을 사용하여 레이어 1에서 이더리움 거래의 유효성을 확인하는 방식과 동일합니다.[13]
질리카 샤딩 (Zilliqa Sharding)
질리카(Zilliqa)는 확장을 위해 샤딩을 사용하는 고성능, 고보안 블록체인 플랫폼입니다. 질리카의 샤딩은 네트워크 샤딩, 거래 샤딩, 계산 샤딩 등 여러 형태를 취합니다.
- 네트워크 샤딩: 이는 질리카 네트워크를 샤드라고 불리는 더 작은 노드 그룹으로 나눌 수 있게 하는 메커니즘입니다. 예를 들어, 1,000개의 노드로 구성된 네트워크를 상상해 보십시오. 그러면 네트워크를 각각 100개의 노드로 구성된 10개의 샤드로 나눌 수 있습니다. 이러한 샤드들은 거래를 병렬로 처리할 수 있습니다. 각 샤드가 초당 10개의 거래를 처리할 수 있다면, 모든 샤드가 함께 초당 100개의 거래를 처리할 수 있습니다.
- 거래 샤딩: 거래가 네트워크에 도달할 때마다 특정 샤드에 할당됩니다. 할당은 거래 송신 주소의 처음 몇 비트에 의해 결정됩니다. 그러나 이 할당 전략은 결제 거래에서만 작동합니다. 결제와 스마트 컨트랙트 거래를 모두 적절히 처리하기 위해, 각 카테고리에 대해 별도의 할당 전략을 가질 수 있도록 거래를 분류하는 다른 솔루션이 채택됩니다.
- 계산 샤딩: 질리카가 계산 샤딩에서 선택한 접근 방식은 모든 단일 노드가 현재 상태의 복사본을 갖지만, 거래 내역은 조각으로 나뉘어 모든 사람이 전체 복사본을 가질 필요가 없도록 하는 것입니다.
샤딩된 아키텍처로 인해 거래를 병렬로 처리할 수 있는 능력은 질리카의 처리량이 네트워크 규모에 따라 선형적으로 증가하도록 보장합니다.[10][11][12]




