샤딩은 단순히 블록체인 속도만 빨라지는 기술인가요?
샤딩은 블록체인 트릴레마의 난제 중 하나인 '확장성'문제 해결을 위해서 만들어진 기술로 알고 있습니다. 샤딩의 기술이 블록체인에 적용되는것이 쉽지않다고 들었는데 단순히 확장성 문제 즉 속도만 향상시키는 기술인가요?
샤딩이란 네트워크를 구성하는 노드들을 나누어 샤드로 묶은 다음 수많은 트랜젝션들을 병렬적으로 나누어 처리하도록 함으로써 거래 처리 속도를 획기적으로 높이는 방식입니다.
따라서 질문자께서 말씀하신 것처럼 샤딩 기술 적용의 주 목적은 블록체인의 거래 처리 속도를 높여 확장성 문제를 해결하기 위한 것이라고 할 수 있습니다.
끝으로 샤딩 기술이 적용되면 여러 샤드들이 동시에 병렬적으로 EVM을 통해 연산을 처리할 수 있으므로 EVM 연산 능력의 효율성을 극대화할 수 있고
노드들의 모임인 샤드들이 동시에 병렬적으로 트랜젝션을 처리하게 되므로 블록의 생성이 특정한 한 노드에 집중되지 않고 분산되는 효과가 있다는 점도 샤딩 기술의 의의가 아닌가 생각합니다.
답변이 도움이 되길 바랍니다.
샤딩이란 원래 데이터베이스에서 시작된 개념인데요...
단일의 데이터를 다수의 데이터 베이스로 쪼개어 나누는 것을 말합니다. 특히, 단일의 데이터 베이스에서 저장하기 너무 클 때 사용합니다. 이렇게 데이터를 구간 별로 쪼개어 나눔으로써 노드에 무겁게 가지고 있던 데이터를 빠르게 검증할 수 있어 빠른 트랜잭션 속도를 가질 수 있게 됩니다. 또한, 샤드란 샤딩을 통해 나누어진 블록들의 구간 (혹은 Epoch)을 ‘샤드’라고 부릅니다.
현재 진행중인 샤딩 프로젝트는
이더리움 Beacon Chain, 이더리움 Shasper (Casper + Sharding), 질리카, 쿼크 샤딩등이 있습니다.
샤딩의 종류는 아래와 같이 3가지가 있습니다.
네트워크 샤딩
트랜잭션 샤딩
스테이트 샤딩
네트워크 샤딩이란 임의로 네트워크가 무작위로 노드를 샘플링하여 블록 단위로 샤드를 형성합니다. 하지만, 네트워크가 샤드의 구성원에 대한 동의를 구하지 않아 구성원들이 원하는 방향으로 가지 않는 경우, 구성원들의 불만을 해결하지 못한다는 단점을 가지고 있습니다.
트랜잭션 샤딩이란 트랜잭션 해시의 마지막 몇 비트를 기반으로 샤드를 결정하고 트랜잭션의 유효성을 확인합니다. 하지만, 사용자가 악의적인 경우, 동일한 두 입력이지만 출력이 다른 트랜잭션을 생성할 수 있습니다. 또한 이중 지출을 방지하기 위해 유효기간이 진행되는 동안에 샤딩이 된 조각의 노드들은 서로 간에 통신이 필요합니다. (통신은 그만큼의 시간과 비용이 따르게 됩니다.)
스테이트 샤딩이란 account-based model입니다. 상태가 지정된 블록체인에서이 특정 샤드는 상태의 일부만을 유지합니다. 하지만, 교차분할 트랜잭션을 수행하지 못하도록 제한이 되어있습니다. 또한 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 이상 오프라인 샤드에 대한 트랜잭션의 요효성을 검사하지 못하게 됩니다. 오프라인 샤드를 유지하기 위해 백업 노드를 갖게된다면 중앙집중식이 되어 보안성에 위협이 됩니다. 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때까지 전체 시스템을 사용할 수 없게 될 수도 있습니다.
더 자세한 내용은 아래를 참조해 주세요.