아하 로고
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
탈퇴한 사용자
탈퇴한 사용자19.03.03

샤딩이란 기술이 블록체인에 적용하기 어려운 기술인가요?

질리카란 암호화폐가 블록체인 중에서 최초로 샤딩을 구현했다는 기사를 봤는데요

암호화폐가 세상에 나온지 꽤 됐는데 샤딩이란 기술은 원래 있었던 기술로 알고 있거든요

이 샤딩이란 기술이 블록체인과 결합하는게 기술적으로 어려운건가요?

또한 이더리움 재단 관계가자 이더리움 샤딩은 2020년은 되어야 가능할 것 같다는 인터뷰도 봤는데

이더리움은 아직 샤딩 적용이 안된건가요?

샤딩이란 기술에 대해서 전체적으로 궁금한데요

샤딩이 무엇인지 / 샤딩이 적용된 암호화폐는 어떤것이 있는지 / 또 샤딩의 종류가 3가지 정도가 있다는데 어떤 종류인지

이렇게 궁금하긴 한데....

이 중에 알고 계신 것만이라도 설명 부탁드립니다!

55글자 더 채워주세요.
답변의 개수1개의 답변이 있어요!
  • 후덕한오랑우탄253
    후덕한오랑우탄25319.03.03

    기본적으로 샤딩은 데이터베이스에서 나온 개념(용어)입니다. 그러나 이러한 기술을 기술이 변함에 따라 블록체인에 접목을 시킨것이구요.

    샤딩이란 전체 네트워크를 파편(=Shard)으로 분할해 여러 개의 네트워크가 알고리즘을 나눠서 푸는 방식을 뜻합니다..

    먼저 샤딩을 사용한 솔라나(Solana)는 샤딩은 네트워크가 과부하 되는 문제가 있으며 노드가 많아지면 개별 노드에 대한 해킹 가능성이 증가하기 때문에 보안에 관해서 샤딩은 끊임없이 지적받아왔습니다. 하지만 그 뒤에 나온 질리카는 이부분을 보완하고 보안성을 가졌다고합니다.

    이부분에 대해서 질리카는 PBFT(Practical Byzantine Fault Tolerance)기술을 사용하고있는데요 그는 아래와 같다고합니다.

    1. 트랜잭션이 생성되고 트랜잭션을 검증할 샤드에 전송된다
    2. 트랜잭션이 샤딩을 통해 마이크로블록, Microblock 형태로 분할되며 각 마이크로블록은 여러 노드로 전송된다
    3. 각 샤드는 받은 마이크로블록을 검증해 검증이 완료된 블록을 DS 위원회, DS Committee로 최종 검증을 위해 보낸다.
    4. DS 위원회는 마이크로블록을 종합해 하나의 블록으로 합쳐지며 마지막으로 블록의 최종 검증을 한다

    아래는 블록체인에서의 샤딩(sharding)을 아주 자세히 적어 논것이 있어 질문자님에게 가장 적합한 답변이 될 것 같아 내용을 적어봅니다.

    출처 : https://steemit.com/coinkorea/@qudghk123/sharding

    1. 기존 데이터베이스에서의 샤딩

    20181125sharding1.png

    샤드는 기존 데이터베이스에서 가지고 있던 개념입니다. 샤드는 데이터베이스 데이터의 ‘수평 분할’이라고 말할 수 있으며, 개개의 분할된 데이터 묶음(파티션)을 샤드, 또는 데이터베이스 샤드라고 부릅니다. 이 개념이 등장하게 된 이유는 어떠한 DB에서의 과도한 데이터 저장으로 일어나는 문제 때문입니다. 만약 DB가 방대한 양의 데이터를 저장하다 보면, 어느 순간 단일 노드의 하드웨어 한도를 초과할 수도 있고(DB용량 한도를 넘어간거죠), DB에서 어떠한 데이터를 찾으려고 하는 검색 요청을 할 시 데이터가 느리게 찾아지는 등의 문제점이 생깁니다. 이것을 해결하고자, 데이터를 샤드라는 조각으로 분할하는 기능을 이용해 더욱 큰 용량의 데이터 저장이 가능해졌고, 빠른 검색이 가능해졌죠.

    2. 이더리움 샤딩 등장 배경

    2017년 말, 크립토키티의 인기가 이더리움 네트워크를 마비시키기에 이릅니다. 많아야 초당 20TPS 정도를 처리할 수 있었던 이더리움은 이 엄청난 트랜잭션을 감당할 수 없었습니다. 이 글을 쓰는 지금 https://ethgasstation.info/ 따르면 일반적인 거래 처리에 5gwei가 든다면, 저 당시에는 40gwei, 극단적으로는 100gwei 이상까지 이더리움 트랜잭션을 일으키기 위해 gas price가 상승했습니다. 이것만이 이유는 아니지만, 비싼 수수료는 이더리움의 킬러 앱이 등장하는 것을 저해하는데 영향을 끼쳤고 사람들은 이더리움의 한계점을 느끼게 됩니다. 이 당시 이더리움의 확장성을 해결하기 위해 여러 방법들이 시도되고 있었고, 많은 확장성 솔루션 프로젝트들이 관심을 받기 시작했으며 그 중 하나가 샤딩입니다.(블록체인에서의 샤딩 적용 이야기가 나온 건 2017년 전입니다.)

    3. 이더리움에서의 샤딩이란?

    샤딩은 플라즈마, 라이덴 네트워크 등과 함께 이더리움의 확장성 문제를 해결하려는 솔루션입니다. 다만 플라즈마와 라이덴 네트워크 솔루션은 오프체인 솔루션인 반면 샤딩은 온체인 솔루션입니다. 이 말은 독자적으로 서비스를 진행할 수 없고 메인 네트워크를 하드포킹하여 샤딩 솔루션을 넣어야 한다는 것입니다.

    샤딩은 전체 블록체인 네트워크를 일정 부분씩 분할하여 트랜잭션을 각각 검증하고 저장합니다. 예를 들어, 블록체인을 100개의 샤드로 분할하면, 100개의 샤드에서 각각 트랜잭션을 검증하고 저장하기 때문에 블록체인에서의 거래 처리 속도가 굉장히 빨라지게 됩니다.

    4. 샤딩에서의 역할, 용어정리

    들어가기에 앞서, 새로 나타난 블록체인 네트워크 참여자들에 대한 용어정리가 필요합니다.

    Proposer : 영어 그대로 제안자라는 뜻입니다. 샤드에서의 트랜잭션들을 모아 proposal(제안)을 만들고 이를 Collator에게 전달합니다.

    Collator : 역시 영어 그대로 모아주는 사람, 혹은 교정자입니다. 이들은 Proposer가 전달해 준 Proposal을 검증하게 됩니다. 하나의 샤드에는 여러 Collator가 배정되는데, 이들은 검증 전 무작위로 선정되어 배치됩니다.

    Executor : 영어 그대로 집행자입니다. Collation(샤드에서의 Block 개념)의 헤더를 메인체인의 Sharding Manager Contract에 전달하는 역할을 담당합니다.(추후에 추가될 개념이고, 초기에는 Collator가 직접 Collation header를 Sharding Manager Contract에 전달한다고 합니다.)

    여기서 Sharding Manager Contract(SMC)는 샤딩을 이루는 데 가장 중요한 역할을 담당하고 있는 컨트랙트로, 이들이 메인체인과 샤드를 연결하는 다리 역할을 합니다. SMC가 하는 역할을 자세히 살펴봅시다.

    1. Collator가 되려면 일정량의 예치금을 내야 하는데, 이 예치금은 Collator가 악의적인 행동을 하는 것을 방지하게 합니다.(악의적은 행동을 하면 예치금이 사라지기 때문입니다.) 여기서 이 예치금을 받고 관리하는 곳이 바로 SMC입니다.

    2. 앞에서 Collator를 무작위로 샤드에 배치한다고 하였는데, 이것을 하는 곳이 SMC입니다. 무작위로 배치하는 이유는 Collator의 악의적인 행동을 방지하기 위해서입니다.

    3. Executor가 제출한 Collation 헤더를 검증하는 역할을 합니다. SMC가 검증하고 인정해야만 Collation이 유효해집니다.

    4. 샤드 간 트랜잭션을 전송하기 위해서는 receipt라는 것이 필요한데, 이것을 관리하는 것도 SMC입니다.

    5. 추후에 설명하겠지만, 블록을 생성하기 위해서는 Collator들의 투표가 필요한데, 이 투표를 SMC위에서 진행하게 됩니다.

      20181125sharding2.png

      5. 샤드 내의 트랜잭션 처리 Flow

    이제 샤딩으로 어떻게 트랜잭션을 처리하고 검증하는지 알아봅시다.

    1. Proposer와 Collator가 SMC를 통해 자산을 예치하고 샤드 네트워크에 참여합니다.

    2. Collator가 SMC를 통해 각 샤드에 무작위적으로 배치됩니다. 배치되고 실제 Collator의 역할을 수행하기까지 일정 시간이 준비기간으로 주어지는데(lookahead period), 이 때 각 Collator들은 배치된 샤드의 예전 기록을 다운받게 됩니다.

    3. Collator의 역할이 수행되고, 이들은 Proposer들이 보내는 Proposal을 받게 됩니다.

    4. Collator들은 Proposal 내에 있는 트랜잭션들이 유효한 지를 검증하는 투표를 진행합니다. 이 투표에서 트랜잭션이 유효하다는 것에 대한 찬성표가 2/3이상이 나올 경우 이 proposal은 유효한 것으로 간주됩니다.

    5. Collator들이 맡은 기간이 종료되면, 이 때 새롭게 생성된 collation header를 SMC로 보냅니다.

    6. 이 collation header를 SMC에서 검증하고, 유효한 데이터라는 검증이 완료되면 메인체인에 이것이 기록됩니다.

    6. 다른 샤드간의 트랜잭션 처리 Flow

    샤드들이 나뉘어져 있으면 샤드 간의 트랜잭션도 일어날 텐데, 이것에 대한 처리 Flow도 알아봅시다. 샤드1의 계좌A에서 샤드2의 계좌B로 보내는 Flow입니다.

    1. 샤드1에 있는 계좌A의 잔고에서 100이더를 차감하고 receipt를 만듭니다.

    2. 이 트랜잭션이 Collation에 포함되고 Collator가 이를 SMC로 보내 검증합니다.

    3. 검증이 완료되고, 이것이 메인체인에 포함되면 SMC가 이 트랜잭션을 샤드2로 전달합니다.

    4. 샤드2는 이 receipt를 전달받고 receipt가 현재 소비되지 않았는지 확인합니다.

    5. 소비되지 않았다면 샤드2에 존재하는 계좌B의 잔고를 100이더만큼 증가시키고 receipt의 상태를 spend로 변경시킵니다.

    6. receipt의 spend 데이터가 위와 동일한 과정을 거쳐 샤드1로 전달되고, 샤드1은 receipt를 삭제하는 것으로 거래가 완료됩니다.


    7. 샤딩의 장단점

    샤딩은 대용량 정보를 처리하는 데 있어 분산화가 되어있어 노드별로 용량 부담이 저하됩니다. 또한 트랜잭션을 나눠서 처리하므로 네트워크에 과부하가 걸릴 가능성이 낮습니다. 그리고 샤딩은 일반적인 블록체인 노드보다 체계적인 정보 처리가 가능하므로 접근성이 향상됩니다. 위의 장점들을 통해 결과적으로 속도가 크게 향상된 블록체인을 만날 수 있습니다.

    그러나 샤딩은 단점도 존재합니다. 일단, 샤딩은 무한정으로 분산하여 데이터를 처리할 수 없습니다. 너무나 크게 분산하여 데이터를 처리하게 되면 아래에 서술할 정보 손실 문제나 네트워크의 악의적 공격 문제가 쉽게 발생하게 됩니다. 정보 손실 문제란, 현재까지는 블록체인에서 풀 노드들이 모두 동일한 데이터를 가지고 있음으로 인해 특정 정보가 사라지는 문제를 생각하지 않아도 됐지만 샤딩은 모든 노드가 샤드된 정보를 다 들고 있을 수 없으므로 특정 노드의 데이터를 모두가 가지고 있지 않게 되었다면 정보가 손실되고, 이에 대한 블록체인의 무결성 문제가 생길 수 있습니다. 이를 해결하기 위한 방안히 필요하죠.

    마치며

    아직까지는 아이디어 단계에 머물러있는 샤딩인데, 이는 반대로 얘기하면 블록체인 상태에서의 샤딩을 이용할 때 문제점이 많다는 것이고, 이에 대한 해결책들이 아직 나오지 않았다는 것을 얘기합니다. 블록체인이 대중적으로 사용되기 위한 조건 중 하나인 확장성을 해결하기 위해 많은 시도가 이뤄지길 바랍니다. 감사합니다.