샤딩은 원래 있던 기술인데 블록체인에 적용하기 어려운 이유가 무엇인가요?
이더리움이 샤딩과 플라즈마 기술에 대해서 언급을 많이 하는것을 봤습니다.
샤딩이 쉽사리 적용되기 어려운 이유는 무엇인가요?
솔리디티 라는 언어때문에 그런건가요? 아니면 블록체인의 시스템과 엮어서 만들기 어려워서 그런건가요?
안녕하세요?
샤딩의 잇점은 많은 분들이 알고계시지만 실제로 구현하는 것은 쉽지가 않은 기술입니다.
샤딩은 같은 테이블 구조를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법을 의미합니다.
하나의 물리적인 Shard에 쿼리를 진행하여 효율적이고
하나의 Shard에 높은 데이터 직접도를 실현합니다.
사용자가 많아질수록 확장성이 좋아집니다.
하지만 프로그래밍, 운영적인 복잡도는 더 높아지는 단점이 있습니다.
블록체인 메인넷에 모두 샤딩을 적용하지 않는 이유는 여러가지 이유가 있겠지만
1.위에서도 언급한것처럼 구현의 어려움이 있습니다. 훨씬 복잡해지는 프로그래밍을 구현해야 하고 이것이 DB처럼 정적인 상태가 아닌 P2P상에서 구현을 해야하기 때문에 더 어렵습니다.
또한 샤딩에 대한 크게 6가지 정도의 해결해야하는 문제가 있다고 보고 있는데 그것은 Single-shard takeover attacks,
State transition execution,Fraud detection,Cross shard communication,The data availability problem,
Superquadratic sharding 입니다. 문제 하나하나가 큰 주제입니다.
3.우리 메인넷에 꼭 필요한지 여부입니다. 샤딩을 적용하면 속도와 확장성을 잡을 수 있지만 프라이빗 블록체인에서는 다른 접근으로 풀 수 있는 문제이므로 꼭 샤딩을 적용을 할 필요는 없습니다. 또한 우리의 비즈니스 모델이 엄청난 트랜잭션을 처리하고 단기간내에 확장성 문제가 생길 것 같은지 검토해야 합니다. 이런 요구사항이 없는데 기술적 구현이 용이하지 않은 샤딩을 즉시 적용해야 할 필요는 없겠지요.
감사합니다.
샤딩을 블록체인에 적용하기 어려운 이유로 몇 가지를 들 수 있습니다.
일단 소프트 포크 정도로 블록체인을 업데이트하는 수준이 아닌 하드포크 정도의 메이저 업그레이드가 필요합니다. 큰 변화에 해당되는 것이죠. 이러한 샤딩은 POS로의 합의 알고리즘 변경인 캐스퍼와 함께 이루어지는 것이 좋기 때문에 함께 묶여서 샤스퍼라 불리며 다음 하드포크에 이러한 변화가 일어날 것으로 예상됩니다.
샤드들이 트랜젝션을 분산하여 처리할 경우 이 각 샤드들 간에 통신 프로토콜이 필요하게 됩니다. 즉, 트랜젝션이 분산되어 처리되지만 그 정보들이 서로 관련되어 있는 경우 샤드들 간에 정보를 주고 받으면서 처리해야 할 필요성이 있는 것입니다.
또한 샤드들이 트랜젝션을 나눠 처리한 후 검증하여 기록할 때 이것이 무결함을 검증할 수 있는 방법을 마련해야 합니다. 기존의 거래 처리 과정은 각각의 노드들이 같은 거래 장부를 소유하고 있었지만, 샤딩이 도입되게 되면 샤드들이 거래를 분산하여 처리하게 되므로 해킹 공격을 받게 될 경우 거래 정보가 위, 변조될 가능성이 존재합니다.
이런 이유에서 샤딩을 블록체인에 적용하기 위해서는 많은 준비와 연구, 개발 과정이 필요하게 됩니다.
답변이 도움이 되길 바랍니다.