이더리움과 샤딩 (Ethereum And Sharding)

in #kr7 years ago (edited)

현재 이더리움의 네트워크 이슈가 원래 생각한 것보다 빠르게 발생하였습니다.

이더리움 재단에서도 이렇게 빨리 네트워크 이슈가 발생 할지는 생각도 못하였겠죠.

그만큼 인기가 많아졌다는 것으로 저는 생각하고 있습니다 ^^

그로 인해서 나왔던 것이 샤딩(Sharding), 라이덴(Raiden), POS(Casper, Proof Of Stake) 입니다.

그 중에서 샤딩에 대해서 적어볼까합니다.

Shard Wiki 를 보면 A database shard is a horizontal partition of data in a database or search engine. 이라고 나옵니다.

샤딩이라는 것은 원래 현재도 데이터베이스(디비)에서도 널리 사용되고 있는 것입니다.

데이터베이스의 한계 중 하나는 바로 용량입니다.

데이터베이스는 데이터가 쌓일수록 점점 커지게 됩니다.

블럭체인에서는 블록타임이 될 때마다 1 Block 씩 추가가 됩니다.

그러면 현재는?

3941526 Block 입니다.

그러면 1년 후에는??

엄청난 수의 블록이 쌓이게 될겁니다.

많은 사람들이 이렇게 물어봅니다.

Mist 가 좋아요? MEW(MyEtherWallet)이 좋아요?
-> 둘 다 똑같습니다.

답변은 둘 다 같은 겁니다.

하지만 하나의 차이점은 풀노드이냐 아니냐일 겁니다.

현재 저는 Mist를 사용하고 있고, 제하드의 50% 이상은 체인 정보입니다.(100기가 하드에서 50기가면...)

현재의 이더네트워크는 다음과 같습니다. (5000000 블럭이라고 간주를 해보겠습니다)

cu-eht.png

누구나 5000000 블록에 대한 정보를 다 가지고 있습니다.

현재의 약 1.5배 정도이니 약 70기가정도의 크기를 가질겁니다.

점점 블록 정보의 용량의 커져갈 것입니다.

그래서 나온 것이 샤딩 기술

누군가에게는 1000000번 블럭까지의 정보만, 그리고 또 다른 사람에게는 2000000번 블럭까지의 정보만 가진다면 어떻게 될까요?

각 노드들은 매우 가벼워 질겁니다.

shard.png

단지 샤딩 적용시에는 하나의 작업이 추가되어야 하긴 합니다.

중간에 Merge라고 적혀있는 하나의 작업입니다.

이것이 이더재단에서 말하는 plane-and-hotel problem 입니다.

A 라는 사람이 여행을 가기 위해서 비행기 티켓과 호텔의 예약을 했습니다.

티켓에 대한 정보는 999999 블럭에, 호텔에 대한 정보는 1000002 블럭에 있다면

샤딩 이전이라면 모든 노드에서는 같은 정보를 가지고 있기 때문에 어느 노드를 접속하더라도 괜찮습니다.

하지만 샤딩 이후에는 1000000번까지 있는 노드와 2000000번까지 있는 노드의 값을 합쳐주는 하나의 과정이 필요하게 된거죠.

이것은 샤딩을 하게 되면 무조건적으로 가질 수 밖에 없는 구조입니다.

데이터 자체가 쪼개어 지는 것이 샤딩의 목표이니까요.

샤딩을 적용하는 것도 매우 많은 기일이 소요가 될수도 있습니다.

한번 꼬여버리면 걷잡을 수 없는 일이 벌어지게 될테니 말이죠.

샤딩에 대해서 정말 간단하게 설명을 드린 것이라서 비탈릭은 조금 다른 개념을 넣을수도 있을 거 같긴합니다.

이더 위키 를 읽어보시는 것이 제일 정확하긴 합니다 ^^;;


잘못된 정보는 댓글로 적어주시면 수정하도록 하겠습니다


Donation

기부는 사랑입니다.

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

개발자에게 Starize 도 사랑입니다.

Sort:  

잘 보고 갑니다. 샤딩 적용된다고 해도 다른 문제가 생길 수도 있겠네요 ㅎㅎ

@jaiken 샤딩을 쉽게 적용할수 없는 이유 중 하나가 데이터 머징에 대한 이슈도 있습니다. 다양한 테스트를 통해서 정상 체크 후 적용을 해야 네트워크에 혼란도 없을 거구요 ^^

오 그런거군요 쉽게 풀어써주셔서 정말 감사합니다.

@meadowolf 샤딩에 다른것까지 추가를 할거 같긴 하지만 일단 간단하게 풀어만 보았습니다. ^^

쉬운 설명 감사합니다^^

@lavie 감사합니다. 제 나름대로 썼는데 잘 이해가 됐는지 모르겠네요.

bigcouch 에서 shard를 써봤고 지금도 couchDB에서 shard를 하고 있는데요... couchDB의 가이드에서는 직접적으로 너무 많은 shard는 오히려 시스템을 느리게 할 수 있다고 하는데요... 이 shard와 merge개념을 블록체인에 개발/실용화를 해야 한다는게 그리 쉽지 안을것입니다. 그래서 저는 개인적으로 이더리움의 shard를 그렇게 신용하고 있지 않습니다... kaipark님 의견은 어떠신가요?

@theunseenworld 블럭체인에서 Shard를 넣는 것은 조금은 생소해서 이더재단에서도 천천히 준비하는 것으로 알고 있습니다. 샤드만 독단적으로 가지 않고 POS + Raiden + Shard가 차례로 진행이 된다면 가능하지 않을까 생각됩니다. 샤드는 네트워크에서 해결되는 것은 노드의 과중을 줄이는 단계일테니까요. 아마 샤드의 단계는 거의 마지막이지 않을까 생각됩니다.