
*50회를 마지막으로 종료합니다.
이정표개발진네트워크 샤딩네트워크 샤딩은 질리카 네트워크를 샤드(Shard)라는 작은 노드 그룹으로 나눌 수 있는 메커니즘입니다.
예를 들어 1000개의 노드로 구성된 네트워크를 100개의 노드로 구성된 10개의 샤드로 나눌 수 있습니다.
1샤드 = 10노드
각 샤드는 트랜잭션을 병렬로 처리합니다. 이러한 원리로 처리량은 샤드 수에 비례하여 증가합니다.
샤딩 구현의 어려움Sybil 저항 : 개방적인 블록체인이므로 악의적인 노드(malicious nodes)도 있을 수 있습니다. 악의적인 노드는 시스템을 파괴하여 의사결정 과정에 영향을 미칩니다. 이를 Sybil 공격이라 합니다.
샤드 생성 : 1000개의 노드가 있고, 이를 100개의 노드씩 10개의 샤드로 만듭니다. 이때, 어떻게 샤드를 만들어야 할까요? 어떤 노드가 어떤 샤드에 할당되어야 할까요?
샤드 크기 : 100개의 노드가 구성된 1개의 샤드가 아니라 10개의 노드로 구성된 작은 샤드를 만들 수 있을까요? 안됩니다. 샤드 크기가 작을수록 공격자들이 제어권을 가져가기 쉽습니다. 샤드는 질리카 프로토콜의 합의 등을 실행하기 때문에, 저희는 악의적인 노드로 구성될지 모르는 작은 샤드를 바라지 않습니다.
샤딩 문제 해결시빌 공격 억제 : 시빌 공격을 막는 방법은 몇 가지가 있습니다. 노드에게 많은 암호화폐를 담보로 입금하도록 하는 방법이 있고, 작업 증명(PoW)을 하도록 하는 방법이 있습니다. 질리카는 작업증명을 사용합니다. 질리카 네트워크에 들어가기 위해 새로운 노드들은 작업증명을 해야 합니다. 기존에 있던 노드들은 작업증명의 유효성을 검증하고 새로운 네트워크의 합류 권한을 갖습니다. 작업 증명은 네트워크에 들어오기 위해서는 반드시 필요하며, 유효한 노드만 네트워크에 들어올 수 있습니다. 이는 무분별한 노드의 확장을 막을 수 있습니다.
자동 샤드 생성 : 질리카가 PoW를 사용하는 것은 자동으로 샤드를 만들게 하는 것입니다. 질리카는 먼저 디렉토리 서비스 위원회(DS committee)라 불리는 특정 노드 집합을 선출합니다. 해당 선출은 PoW에 기반합니다. DS-epoch라 불리는 일정한 주기로 DS committee 가운데 멤버 하나가 퇴출되며 다른 새로운 멤버가 선출됩니다. (선입 선출 정책 사용)
따라서 DS committee 규모는 항상 고정되어 있습니다. 위원회에 참여하는 새로운 노드는 작업 증명을 가장 빨리 하는 노드입니다. DS 위원회가 선출되면 샤딩 작업을 시작합니다. 네트워크에 있는 모든 다른 노드들은 다른 작업 증명을 수행합니다. 해당 작업 증명은 DS 위원회에서 유효성을 검증 받습니다. 작업 증명의 제출한 노드들은 임의적으로 특정 샤드에 할당됩니다. 작업 증명으로 제출한 마지막 몇 비트로 해당 노드가 어느 샤드에 할당될지 결정합니다.
적정한 크기 선정 : 시스템 보안을 위해서는 적정한 샤드 크기를 선정하는 것이 중요합니다. 예를 들어 1000개 규모에 네트워크에서 75%가 정직한 노드이고, 25%가 악의적인 노드라고 가정합니다. 이 경우 다양한 크기로 샤드를 만들었을 때 악의적인 노드가 발생할 가능성이 얼마나 될까요? 예를 들어 샤드의 크기가 100노드인 경우, 1/3 이상이 악의적인 노드일 가능성은 4%입니다. 100노드 샤드 크기는 안전하다고 할 수 없습니다. 샤드가 커질수록 이러한 확률은 점점 떨어집니다.
샤드의 크기가 600노드 이상인 경우, 1/3 이상이 악의적인 노드일 가능성은 백만 분의 1로 떨어집니다. 이러한 이유로 질리카는 최소 600노드 이상을 샤드 크기로 고려하였습니다. 이에 대해서는 샤딩 논문이 있으므로 읽어보시기 바랍니다.
나카모토 합의PBFT 프로토콜(Practical Byzantine Fault Tolerance)PBFT의 장점PBFT의 한계Zilliqa vs Plasma