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