샤딩(Sharding)이란 무엇인가?

고급6분 소요2022-11-29

현재 블록체인 내에서 독립적, 개별적으로 존재하는 노드들은 블록체인 네트워크 안에서 발생하는 엄청난 양의 트랜잭션 데이터를 실시간으로 동기화하여 저장, 유지, 관리해야 합니다. 모든 노드가 같은 내용의 데이터를 중복해서 저장하기 때문에 높은 보안성을 기대할 수 있지만, 모든 노드가 다량의 데이터를 보관해야 하기 때문에 컴퓨터에 상당한 부하를 가져올 수밖에 없습니다. 그렇다 보니 확장성의 문제가 일어날 수 있는 것입니다.


2017년 말, 디지털자산 열풍으로 이더리움 네트워크가 마비되는 상황에 이른 적이 있었습니다. 이더리움의 경우 초당 20TPS를 처리할 수 있는데, 당시 많은 사람들이 토큰을 가져가기 위해 지나치게 높은 가스비를 제시하면서 이더리움 네트워크가 과부하되는 문제가 발생했습니다. 이후 이더리움은 확장성을 개선하기 위해 다양한 해결책을 모색 중에 있으며, 샤딩은 그중 많이 알려진 확장성 솔루션 중 하나입니다. 



샤딩의 개념

샤딩(Sharding)이란 원래 데이터 베이스(DB) 용어로써 대규모 데이터 베이스를 빠르고 쉽게 관리할 수 있도록 작게 나누는 것을 의미합니다. 블록체인에서의 블록체인이라는 탈중앙화 데이터 베이스 위에서 데이터를 여러 개의 샤드(Shard)로 나누어 관리함으로써 트랜잭션 처리 속도와 확장성 문제를 해결하는 것을 뜻합니다.

<자료: Moralis Academy 참고>


블록체인 샤딩을 통하면 모든 개별 노드가 블록체인의 모든 것을 처리할 필요가 없이 블록체인 네트워크의 데이터를 여러 샤드 단위로 분할하여 처리할 수 있습니다. 이를 통해 지연시간과 속도를 개선하여 확장성 문제 해결을 할 수 있습니다.

<자료: vitalik.ca>


샤딩은 블록체인 네트워크의 노드들을 여러 그룹으로 나누는 것으로부터 시작됩니다. 노드들로 구성된 각 그룹은 각기 담당할 샤드를 할당받고 자신의 역할 및 목적에 맞추어 샤드별로 주어진 데이터만을 처리하게 됩니다. 예를 들어, 하나의 샤드는 데이터를 저장하는 데만 사용하고, 다른 샤드는 거버넌스에만 사용하는 등의 데이터 분장을 하는 식입니다.



샤딩의 한계점

모든 솔루션에는 제 나름의 한계와 문제점이 있습니다. 샤딩을 통해 블록체인은 확장성 문제를 개선할 수 있지만, 몇 가지 보안 문제가 발생할 수도 있습니다. 각 샤드는 분리되어 있어 자체 데이터만 처리하므로 데이터가 손실되거나 해커가 특정 샤드를 공격하여 전체 블록체인 네트워크에 영향을 끼칠 수도 있습니다. 


아직 블록체인 네트워크에서 사용되는 샤딩은 초기 테스트 단계에 있으므로 아직은 모든 잠재적인 문제와 과제는 아직 해결되지는 않았습니다. 하지만 블록체인 업계에서는 이런 샤딩의 단점을 극복하기 위한 다양한 개선책들을 모색하고 있습니다.