진화를 꿈꾸는 이더리움, 샤딩(Sharding)에 대해 알아보자
현재 이더리움의 거래 처리 속도는 7~15 TPS(Transaction per second), 1초에 7개에서 15개의 거래를 처리 할 수 있습니다. 우리가 일상 생활에 사용하고 있는 신용카드나 체크카드의 경우 20,000~30,000 TPS의 속도를 가지고 있습니다. 이더리움이 앞으로 더 상용화가 되기위해서는 이 느린 확장성(Scalability) 문제를 해결해야만 합니다.
이러한 문제를 이더리움은 라이덴 네트워크(Raiden Network), 플라즈마(Plasma), 샤딩(Sharding) 기술을 통해 해결하려합니다. 이 세가지 기술중 이번 글에서는 현재 가장 관심을 받고 있는 샤딩에 대해 알아보려합니다.
이 글은 암호화폐와 블록체인 기술에 대한 기본적인 이해가 되있다고 가정하여 작성되었습니다. 만약 기본 지식이 전혀 없으신 분이라면 여기 링크에 가셔서 자신이 부족한 부분에 대해 공부를 하고 오시면 도움될 것같습니다. 물론 구글에 검색을 통해 공부를 하셔도 됩니다.
현재 이더리움 상황
[출저: https://etherscan.io/chart/tx]
이더리움은 플랫폼으로써 현재 암호화폐 시장에서 가장 상용화되었으며, 엄청난 dApp들을 보유하고 있습니다. 여태껏 일어난 그리고 현재 진행되고 있는 ICO의 참여에 필요한 암호화폐로 사람들의 수요가 분명하게 있습니다.
2015년에는 하루에 고작 1329개의 거래가 일어났지만, 2018년 1월에는 약 134만개의 거래가 처리되었고, 지금은 하루에 대략 77만개의 거래가 이뤄지고 있습니다. 이런 기하 급수적인 거래량 증가는 이더리움 블록체인에서 거래 지연 문제를 발생시켰습니다.
[출저: https://blocktivity.info/]
지금 이더리움 블록체인은 거래를 제때 처리할 수 없어 항상 대기열을 가지고 있는 모습을 확인할 수 있습니다. 한때, 인기있는 ICO가 진행될때 순간적으로 폭발적인 거래가 발생하여 몇시간씩 기다려야 거래가 승인이 되는 사례도 있었습니다.
[출저: https://etherscan.io/chart/blocksize]
현재 이더리움은 5,751,094개의 블록이 연결되어 있으며, 블록 사이즈는 계속해서 커져만 가는 모습을 볼 수있습니다. 물론 블록 사이즈가 커진다면 더 많은 데이터를 한번에 전송할 수 있기 때문에 좀 더 빠른 거래를 할 수 있지만, 블록의 데이터를 계속해서 저장해야하기 때문에, 보관해야할 용량은 점점 커져만 가게됩니다. 블록이 계속해서 쌓이다 보니 그 데이터를 저장만 하는데도 수십 기가바이트가 넘는 용량을 감당해야합니다.
정리
지금 이더리움 블록체인 프로토콜에서는 모든 노드가 블록체인 전체의 데이터를 보관하고 있으며, 블록에 대한 검증도 모두 다 함께 진행하게 됩니다. 이는 매우 높은 보안성을 가져올 수 있지만, 위에서 보시는바와 같이 확장성문제를 일으키게 됩니다.
만약 모든 노드가 블록체인 전체를 유지하는 것이 아닌, 구역별로 나눠서 관리한다면 좀 더 효율적으로 운영할 수 있을까? 하는 질문의 답이 바로 샤딩(Sharding) 기술이라고 이더리움 개발팀은 생각한 것이죠.
샤딩(Sharding)은 무엇인가?
샤드(Shard)는 조각/파편의 의미를 가지고 있습니다. 샤딩은 블록체인이 나오기 이전에도 있었던 기술로, 거대한 데이터베이스를 효과적인 관리를 위해 데이터를 분할하여 관리하는 방식입니다. 데이터 관리를 나눠서 한다면 어떤 효과를 볼 수 있는지 그림을 통한 비유를 통해 쉽게 이해해 봅시다. 비탈릭은 DevCon에서 샤딩기술을 섬에 비유하였습니다.
만약 이더리움을 여러개의 섬으로 분할 되었다고 생각해봅시다. 각 섬에는 고유한 기능이 있으며 그 섬에 속한 모든 사람이 서로 상호 작용 할 수 있으며 모든 기능을 자유롭게 누릴수 있습니다. 물론 다른 섬과 교류를 할 수도 있습니다.
이해를 돕기위해 그림에서는 다섯개의 섬으로 분리했지만 실제로 이더리움에서는 수백개가 넘는 섬으로 분리될 계획이라고 합니다. 그렇다면 현재 이더리움의 속도보다 수백배 빨라지게 되겠죠.
이러한 기술이 샤딩기술이며 정확히 언제가 될지는 모르겟지만 곧 있으면 이더리움 블록체인에 적용될 수 있다고 합니다.
이더리움 CEO 비탈릭 트윗, 2018년 4월 30일
: Sharding is coming.
샤딩 기술 문제점?
거대한 섬을 분리시키는 과정이기 때문에 당연히 복잡하고, 여러가지 문제점이 발생할수밖에 없습니다. 그렇기 때문에 1년이 넘게 샤딩 기술이 이더리움 블록체인에 아직 도입되지 않았죠. 정말 많은 토론이 이뤄지고 다양한 해결책들이 나오고 있으며, 이번 글에서는 그 중 가장 대표적인 문제점 하나인 Single-Shard Takeover Attack에 대해 설명해 드리겠습니다.
Single-Shard Takeover Attack
여러개로 분리된 이더리움 섬중 해커가 하나의 섬에만 공격을 가하는 것을 말합니다. 다시말해, 하나의 Shard에 있는 노드의 과반수를 공격하여 악의적인 Shard를 생성할 수 있는 공격을 뜻하죠.
이더리움 개발팀은 이러한 문제를 Shard에 랜덤으로 노드를 배치하여 해결합니다. 즉, 각각의 Shard에는 수많은 노드가 있을 것이며, 그 중 블록을 검증한 노드는 재배치를 받게 됩니다. 검증자들이 어떤 Shard로 갈 것인지 미리 알지 못하게 함으로써 공격을 막는 것이죠.
그런데, 이런 해결책에서 또 다른 문제를 또 야기합니다. 노드들은 이미 기존의 블록체인(Shard) 데이터와 싱크되어 있습니다. 그런데, 몇개의 블록들이 생성되고 난 후, 다시 새로운 블록체인의 데이터와 싱크를 해야하는 문제가 발생합니다. 검증 노드를 랜덤으로 섞음으로써 노드들이 다시 새로운 Shard 데이터들을 다운로드 받아야 하는 번거러움이 생겨버렸죠.
이는 샤딩 기술이 해결해야할 문제이며 언급되는 여러가지 문제점중 하나일 뿐입니다. 하지만 이러한 문제를 해결하고 이더리움에 적용시킬 경우 발생하는 긍정적인 효과는 상상 그 이상이 될 것입니다. 만약 이더리움이 이를 헤내지 못한다면 EOS, NEO, ADA 등등 후발 주자들에게 자리를 내어주어야 하는 상황이 올 수도 있습니다. 그렇기 때문에 사실상 이더리움은 이를 해결을 꼭 해야만 상황인것이죠. 비탈릭과 이더리움 개발팀이 과연 성공적으로 샤딩 기술을 적용시킬지 굉장히 기대가 됩니다.
추가, 샤딩 기술 더 알아보기
이 글은 샤딩에 대한 세세한 정보를 전달하기 보다는 전체적인 Overview를 소개하기 위한 글입니다. 사실 이더리움 개발자가 아니라면 기술적인 부분까지는 평범한 일반사람이 굳이 알필요가 없는 내용이기도 하죠.
샤딩이 정확히 어떤 구조를 가지고 있고 어떤 방식으로 운영이 되는지는 아래 참조링크를 걸어두겠습니다. 또한 생각보다 많이 복잡하기 때문에 여기 하나의 포스트에 모든 내용을 담기에는 무리가 있어보입니다. 나중에 시간이 될 때 이부분만 따로 포스팅 해보겠습니다.
Ethereum Wiki Sharding 설명
Ethereum Wiki Sharding FAQ
![follow me!](https://steemitimages.com/DQmQDw7Ck65zGrUv2hHZpRmLUoRw2aEHnRafZUjjP3KHF68/image.png)
좋은글 잘읽었어요~^^ 이더리움이 발전되려면 많은 난돤을 극복해야되네요~~
사실 이더리움만 아니라 다른 암호화폐들도 마찬가지죠 ㅎㅎ
아 글 너무 어렵네요ㅠ 블록체인 너무 어려워요.
잘은 모르겠지만 좋은 전망이 있다는 뜻으로 봤어요.
이더리움에...
최대한 쉽게 설명하려 했는데 글솜씨가 부족했나 봅니다 ㅠㅠ
그래도 이더리움에 긍정적이라는 것은 정확합니다ㅎ
일반인들도 쉽게 잘 이해할 수 있을 것 같네요!
그렇길 바래봅니다ㅎㅎ!