블록데이터의 분리관리, Sharding

in #kr6 years ago

Ethereum 2.0 Serenity로 향하면서 가장 큰 문제는 데이터의 Scalability 와 PoS로의 안전한 안착입니다

PoS 로의 전환은 Casper를 통해서 진행이 될 예정이고

데이터의 확장성은 사이드체인도 한 역할을 할 예정이지만 샤딩이라는 것으로도 해결을 할 예정입니다

block_data.png

현재 etherescan에서 보면 블록데이터가 Geth는 220기가, Parity의 경우 160기가에 이르르고 있습니다

점점 트랜잭션이 쌓일수록 모든 블록에 대한 데이터 크기도 증가를 할 것입니다

마이너에게도 블록데이터를 유지하는 사람들에게도 트랜잭션데이터는 점점 부담이 되게 될 겁니다

그렇다면 계속 해서 쌓이는 데이터들을 어떻게 하면 가볍게 만들 수 있을까요

바로 샤딩이라는 것으로 해결이 가능한데

샤딩은 현재 데이터베이스에서 이미 존재하는 개념입니다

shard_wiki.png

큰 데이터가 있다면 그것을 잘게 쪼개어서 분리보관을 하는 개념입니다

만약 1000개의 데이터가 있다고 한다면 250개씩 4개의 분리보관을 한다면

각각의 노드에는 부담은 적지만 데이터는 모두 관리가 가능해지는 겁니다

shard_nodes.png

일단적인 데이터베이스에서는 관리는 하는 주체가 하나인 중앙서버에서 관리를 하게 되지만

이더리움의 경우에는 하나가 아닌 다수의 노드에서 관리를 하게 됩니다.

그로 인해서 각 데이터의 무결성을 관리하기에는 매우 어려움이 따릅니다

쪼개어진 데이터가 완벽한것인지, 각 샤딩노드에서 주는 데이터가 변조가 되지 않았다는 것을 보장해주어야 하기 때문입니다

바로 그것을 Sharding Manager Contract(SMC)라는 것이 존재하여서 해결을 해줍니다

샤딩의 안에는 Collator 라고하는 샤딩의 데이터를 전달 역할을 수행하는 것이 있습니다

shard_nodes_collator.png

악의적인 행동이나 잘못된 데이터를 주게된다면 Collator가 될 때 걸어두었던 디파짓은 사라지게 되는 겁니다

그렇게 되면 SMC 밑에서 데이터는 전달이 되면서 악의적 행동을 최소화 하게 되는 것입니다

아직까지 블록체인에서 샤딩이 적용 된 곳은 없는 것으로 나오고 있습니다

데이터를 분할 시키고 관리하는 곳이 한 곳이 아닌 많은 Validator 들이 참여를 해서 더욱 더 어려운 것일 것라고 생각이 되네요.

샤딩이 성공적으로 적용이 될 수 있을지

아니면 새로운 이슈로 인해서 다시 또 새로운 방법이 강구가 될지

조금 더 지켜본다면 알게 될거 같습니다

다음 컨텐츠는????

  • POS?? POW??
  • ERC Token ???
  • Whisper ???
  • IPFS ???

Donation

기부는 사랑입니다.

  • Ƀ BTC : 16MdVNJgvGYbVuaC6KrjGNy2RCrNsaPaZz
  • Ξ ETH : 0x5debb97a6Cc1Fdf686a3C6aA804a623a21deD73c