"네트워크 샤딩"의 두 판 사이의 차이
7번째 줄: | 7번째 줄: | ||
== 특징 == | == 특징 == | ||
− | [[네트워크 샤딩]](network sharding)은 임의로 [[네트워크]]가 무작위로 노드를 샘플링하여 블록 단위로 샤드를 형성한다. 즉, 네트워크가 무작위로 노드를 샘플링 하여 단위로 샤드를 형성한다는 것이다. 네트워크 샤딩의 핵심 아이디어는 간단하지만, 실용화 단계에서는 그렇지 않다. 근본적인 문제들을 이해하기 위해 [[샤딩]]을 실제로 구현하기 위해서 해결해야 할 일부 핵심 문제점들도 많다. | + | [[네트워크 샤딩]](network sharding)은 임의로 [[네트워크]]가 무작위로 노드를 샘플링하여 블록 단위로 샤드를 형성한다. 즉, 네트워크가 무작위로 노드를 샘플링 하여 단위로 샤드를 형성한다는 것이다. 네트워크 샤딩의 핵심 아이디어는 간단하지만, 실용화 단계에서는 그렇지 않다. 근본적인 문제들을 이해하기 위해 [[샤딩]]을 실제로 구현하기 위해서 해결해야 할 일부 핵심 문제점들도 많다. 또한 [[샤딩]]에 있어서 가장 우선적인 문제는 [[샤드]]의 생성인데 특정 샤드에서 많은 통제력을 가진 누군가로부터의 공격 가능성을 막기 위해 어떤 노드들이 어떤 샤드안에 존재하는지를 한정하기 위한 메커니즘 개발이 되어야한다. 적을 이기는 최선의 접근법은 최소한 대부분의 경우 임의성을 이용하는 것이다. 임의성을 이용해서 네트워크가 무작위로 표본 노드들이 하나의 샤드를 형성하도록 하는 것이 가능해져야 한다. 무작위 표본 추출은 악의적인 노드들이 하나의 샤드에 과도하게 몰리는 것을 방지한다. |
+ | |||
+ | 그러나, 임의성을 어디에서 가져와야하는지를 모른다. 공개 난수에서 가장 손쉽게 이용 가능한 재료는 블록체인 안에 있는데 예를 들면, 트랜잭션의 머클 트리 루트(Merkle tree root)이다. 블록 안에서 이용 가능한 난수는 공개적으로 확인이 가능하며 일정한 무작위 비트는 난수 추출기를 통해서 추출할 수 있다. 그런데 단순히 샤드에 노드를 할당하는 무작위 매커니즘만으로는 충분하지 않다. 누구나 네트워크가 샤드의 구성원들에 대해 동의하는지 확인해야 한다. 이것은 작업증명과 같은 합의 프로토콜을 통해서 달성할 수 있다. | ||
== 단점 == | == 단점 == | ||
41번째 줄: | 43번째 줄: | ||
* En Hui Ong, 〈[https://blog.zilliqa.com/%EC%A1%B0%EA%B8%88%EC%94%A9-%EC%95%8C%EC%95%84%EA%B0%80%EB%8A%94-%EC%A7%88%EB%A6%AC%EC%B9%B4-%EC%84%A4%EA%B3%84-%EC%9D%B4%EC%95%BC%EA%B8%B0-%ED%8C%8C%ED%8A%B8-1-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%83%A4%EB%94%A9-1dfee4003b7 조금씩 알아가는 질리카 설계 이야기: 파트 1(네트워크 샤딩)]〉, 《Medium》, 2018-04-06 | * En Hui Ong, 〈[https://blog.zilliqa.com/%EC%A1%B0%EA%B8%88%EC%94%A9-%EC%95%8C%EC%95%84%EA%B0%80%EB%8A%94-%EC%A7%88%EB%A6%AC%EC%B9%B4-%EC%84%A4%EA%B3%84-%EC%9D%B4%EC%95%BC%EA%B8%B0-%ED%8C%8C%ED%8A%B8-1-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%83%A4%EB%94%A9-1dfee4003b7 조금씩 알아가는 질리카 설계 이야기: 파트 1(네트워크 샤딩)]〉, 《Medium》, 2018-04-06 | ||
* LogSystem, 〈[https://brownbears.tistory.com/4 노드 생성, 동장 원리 및 Shard란?]〉, 《티스토리》, 2015-11-14 | * LogSystem, 〈[https://brownbears.tistory.com/4 노드 생성, 동장 원리 및 Shard란?]〉, 《티스토리》, 2015-11-14 | ||
+ | * phuzion7, 〈[https://www.dailycoinews.com/dailycoinews/article/read.do?articleNo=1642&lang=kr 블록체인 샤딩의 3가지 형태: BlockChain Sharding?]〉, 《DAILY COIN NEWS》, 2018-12-31 | ||
== 같이보기 == | == 같이보기 == |
2019년 8월 12일 (월) 16:43 기준 최신판
네트워크 샤딩(network sharding)은 블록체인 기반 암호화폐를 채굴하기 위한 네트워크를 샤드라는 작은 노드 그룹으로 나누어 관리하는 기술이다. 또한 질리카(Zilliqa) 네트워크를 샤드(Shard)라는 작은 노드 그룹으로 나눌 수 있는 메커니즘이다.
개요[편집]
샤딩이라는 아이디어는 데이터베이스 분야에서 성능, 확장성 및 I/O 대역폭을 개선하는데 사용되었다가 블록체인 분야에 새롭게 적용되었다. 네트워크 샤딩(network sharding)은 1000개의 노드로 구성된 네트워크를 100개의 노드로 구성된 10개의 샤드로 나눌 수 있다. 만일 각 샤드가 초당 10개의 트랜잭션을 처리할 수 있다면, 모든 10개의 샤드가 동시에 처리하여 초당 100개의 트랜잭션을 처리할 수 있다. 이러한 샤딩 구조로 트랜잭션을 병렬로 처리할 수 있으므로 질리카의 처리율은 네트워크의 크기에 따라 선형적으로 증가한다.
샤드(Shard)는 일종의 파티션과 같은 의미이며, 데이터를 저장할 때 나누어진 하나의 조각에 대한 단위이다.[1]질리카 네트워크를 샤드라는 작은 노드 그룹으로 나눌 수 있는 메커니즘이고 네트워크 샤딩은 질리카를 진정으로 확장 시킬 수 있는 비밀도구이기도 하다. 1000개의 노드로 구성된 네트워크를 가정해보면, 질리카는 네트워크를 자동으로 100개의 노드로 구성된 10개의 샤드로 나눈다. 그러면 각 샤드는 트랜잭션을 병렬로 처리할 수 있게 된다. 만일 각 샤드가 초당 10 트랜잭션을 처리할 수 있으면 모든 샤드를 통해 초당 100 트랜잭션을 처리할 수 있다.
특징[편집]
네트워크 샤딩(network sharding)은 임의로 네트워크가 무작위로 노드를 샘플링하여 블록 단위로 샤드를 형성한다. 즉, 네트워크가 무작위로 노드를 샘플링 하여 단위로 샤드를 형성한다는 것이다. 네트워크 샤딩의 핵심 아이디어는 간단하지만, 실용화 단계에서는 그렇지 않다. 근본적인 문제들을 이해하기 위해 샤딩을 실제로 구현하기 위해서 해결해야 할 일부 핵심 문제점들도 많다. 또한 샤딩에 있어서 가장 우선적인 문제는 샤드의 생성인데 특정 샤드에서 많은 통제력을 가진 누군가로부터의 공격 가능성을 막기 위해 어떤 노드들이 어떤 샤드안에 존재하는지를 한정하기 위한 메커니즘 개발이 되어야한다. 적을 이기는 최선의 접근법은 최소한 대부분의 경우 임의성을 이용하는 것이다. 임의성을 이용해서 네트워크가 무작위로 표본 노드들이 하나의 샤드를 형성하도록 하는 것이 가능해져야 한다. 무작위 표본 추출은 악의적인 노드들이 하나의 샤드에 과도하게 몰리는 것을 방지한다.
그러나, 임의성을 어디에서 가져와야하는지를 모른다. 공개 난수에서 가장 손쉽게 이용 가능한 재료는 블록체인 안에 있는데 예를 들면, 트랜잭션의 머클 트리 루트(Merkle tree root)이다. 블록 안에서 이용 가능한 난수는 공개적으로 확인이 가능하며 일정한 무작위 비트는 난수 추출기를 통해서 추출할 수 있다. 그런데 단순히 샤드에 노드를 할당하는 무작위 매커니즘만으로는 충분하지 않다. 누구나 네트워크가 샤드의 구성원들에 대해 동의하는지 확인해야 한다. 이것은 작업증명과 같은 합의 프로토콜을 통해서 달성할 수 있다.
단점[편집]
네트워크가 샤드의 구성원에 대한 동의를 구하지 않아 구성원들이 원하는 방향으로 가지 않는 경우, 구성원들의 불만을 해결하지 못한다.
문제점[편집]
중앙화의 문제와 보안성의 문제를 가지게 된다. 보안의 문제에는 1% attack의 문제가 생길 수 있으며 100개의 샤드의 시스템에서는 오직 1%의 hash rate로 샤드를 지배할 수 있다. 샤드 간의 커뮤니케이션이 너무 빈번하게 일어난다면, 커뮤니케이션으로 인한 시간지연의 문제가 생기게 된다.
- Sybil 저항 : 질리카는 퍼블릭 블록체인이므로 PC를 사용하는 모든 사람에게 개방된다. 반면, 질리카와 같은 퍼블릭 블록체인이 동작하려면 충분한 수의 노드가 있어야만 하는데, 퍼블릭 블록체인을 사용하기 때문에 네트워크를 악의적인 노드(malicious nodes)에까지 개방하게된다. 정의하자면, 악의적인 노드는 여러 노드에 걸쳐 시스템을 파괴하며 다수의 의사결정 과정에 영향을 미친다.
- 샤드 생성 : 잠시 어떤 방식으로든 Sybil 저항 문제가 해결되었다고 가정하에 1000개의 노드가 있다고 생각하며 각 100개의 노드를 갖는 10개의 샤드를 만들려고 한다. 이 때, 어떻게 샤드를 만들고 어떤 노드가 어떤 샤드에 할당하도록 결정해야할까. 확실히 노드와 노드 셋들은 질리카 팀원들에게 제어될 수가 없다. 이는 가설로, 질리카 팀이 악의적인 경우 모든 악성 노드들을 한 샤드에 클러스팅하여 질리카의 보안을 저해할 수 있기 때문이다.
- 샤드 크기 : 10개의 노드로 구성된 작은 샤드를 가질 수 있을까, 물론 아니다. 상황이 그렇게 간단하지 않을 수 있다. 실제로 샤드 크기가 작을수록 공격자들이 제어권을 가져가기 쉽다. 더욱이 샤드가 질리카 프로토콜의 다른 부분을 실행하기 때문에 확실히 트랜잭션의 수락 및 거절을 결정할 수 있는 작은 크기의 샤드를 원하지 않는다.
해결방안[편집]
- Sybil 공격 억제 : Sybil 공격을 비용이 많이 들거나 어렵게하기 위한 몇가지 방법이 있다. 예를 들어 노드에 많은 돈(또는 토큰)을 담보로 입금하도록 하거나 작업증명이라 하는 계산적으로 집중적인 작업을 수행하도록 요청한다. 질리카는 작업증명을 사용하기 때문에 질리카 네트워크에 합류하고자 하는 모든 새로운 노드들은 먼저 작업증명을 수행해야한다. 네트워크에 있는 기존의 노드들은 작업증명의 유효성을 검증하고 노드가 네트워크에 합류하는 권한을 부여한다. 즉, 작업증명은 네트워크에 입장 티켓 역할을 하며 유효한 티켓을 가진 노드들만이 네트워크에 합류할 수 있게 되는 것이다. 또한 작업증명은 실제 개체가 여러 노드로 확장하는 것을 어렵게 만든다.
- 자동 샤드 생성 : 질리카에서의 작업증명 사용은 자동으로 샤드를 만들게 하는 것이다. 질리카는 먼저 디렉토리 서비스 위원회(DS committee)라 불리는 특정 노드집합을 선출하며 해당 선출은 작업증명에 기반한다. DS-epoch라 불리는 일정한 주기로 디렉토리 서비스 위원회 중 한 멤버가 퇴출당하며 다른 새 멤버가 선출된다. 따라서 디렉토리 서비스 위원회의 규모는 항상 고정되어있다. 위원회에 참가하는 새 노드는 작업증명을 가장 빨리 해결하는 노드이다. 디렉토리 서비스 위원회가 선출되면 샤딩 작업을 시작한다. 이제 네트워크에 있는 모든 다른 노드들은 다른 작업증명을 수행한다. 해당 작업증명은 디렉토리 서비스 위원회에서 유효성을 검증받는다. 작업증명의 제풀과 임의성에 따라 각 노드는 특정 샤드에 할당되며 작업증명으로 제출한 마지막 몇 비트로 해당 노드가 어드 샤드에 할당될지 결정한다.
- 적합 크기 선정 : 적합한 샤드 크기를 선정하는 것은 시스템의 보안성에 중요하다. 예를 들어 1000개 규모의 네트워크에서 3/4은 정직한 노드이며 1/4개의 노드가 악의적인 노드라고 가정을 해보면 다양한 크기를 갖는 샤드를 만들고 그 안에 있는 악의적인 노드의 비율을 확인해본다. 작업증명을 사용하는 샤드 생성은 임의로 노드의 서브셋을 균일하게 샘플링하는 것과 같다. 증명 제출들이 해시 함수를 사용하여 생성되기 때문이다.
질리카의 네트워크 샤딩[편집]
질리카(Zilliqa)는 암호화폐의 일종이며, 샤딩이라는 노드 분산 기술로 기존 이더리움에 비해서 1000배 가량 빠른 초고속 거래를 강점으로 내세운다.[2]
질리카의 네트워크 샤딩이란 질리카는 이미 낮은 거래비용과 빠른 트랜잭션 속도로 많은 관심을 받고 있고 이더리움의 트랜잭션 속도의 1000배 이상 빠른 속도를 목표로 개발되고 있다. 질리카의 핵심기술은 네트워크 샤딩인데 질리카의 네트워크 샤딩은 블록체인 네트워크에서 블록을 생성하는 POW 노드(Node)들을 샤드(Shard)라는 작은 그룹으로 나누어 동시에 트랜잭션을 처리하는 것을 말한다. 질리카의 채굴노드가 1000개라고 가정했을 때, 이것을 100개당 1개의 샤드로 묶어, 10개의 샤드가 동시에 트랜잭션을 처리하는 것이다. 이 네트워크 샤딩은 질리카를 확장할 수 있는 도구로서, 활용하게 되면 초당 수천 건의 노드 그룹으로 나눌 수 있다.
각주[편집]
- ↑ LogSystem, 〈노드 생성, 동장 원리 및 Shard란?〉, 《티스토리》, 2015-11-14
- ↑ 〈질리카〉, 《나무위키》
참고자료[편집]
- ICO of KOREA, 〈질리카 & 해쉬그래프 & 라디엑스 & 솔라나 비교 / #1. 질리카(ZIL) 네트워크 샤딩〉, 《네이버블로그》, 2018-06-28
- sobly tv, 〈샤딩이란? 쉽게 이해해보자〉, 《Medium》, 2018-09-03
- 카페모카, 〈[알트코인추천 차세대 플랫폼, 질리카 코인네트워크 샤딩(Network Sharding)]〉, 《네이버블로그》, 2018-05-13
- En Hui Ong, 〈조금씩 알아가는 질리카 설계 이야기: 파트 1(네트워크 샤딩)〉, 《Medium》, 2018-04-06
- LogSystem, 〈노드 생성, 동장 원리 및 Shard란?〉, 《티스토리》, 2015-11-14
- phuzion7, 〈블록체인 샤딩의 3가지 형태: BlockChain Sharding?〉, 《DAILY COIN NEWS》, 2018-12-31
같이보기[편집]