[블록체인] 샤딩에 대해 함께 알아보시죠

in #kr6 years ago

KakaoTalk_20180426_222300664.png

안녕하세요. 블록체인을 공부하는 대학원생 입니다.
지난 주에는 제가 마카오 여행을 다녀오느라 스팀잇에 글 쓰는 것이 조금은
소홀했던 것 같습니다.

조만간 마카오 여행기를 들고 다시 나타나겠습니다.

오늘은 샤딩이라는 것이 무엇인지 함께 알아보고자 글을 씁니다.
기술용어여서 제가 이해하는 것이 맞는지 확인이 필요한 부분이지만
이해한 부분을 글로 옮길테니 혹시 오해의 소지가 있는 부분에
대해서는 피드백 부탁드릴께욤


이더리움 네트워크 뿐만 아니라 기존의 블록체인 네트워크들이
해결해야 할 큰 이슈 중 하나는 역시 네트워크의 확장성 문제라고
볼 수 있습니다.

쉽게 이야기해서 우리가 사용하는 중앙화 방식의 웹, 앱 서비스 같이
버버벅 거리지 않고 실행이 되고, 빨리빨리 딱딱 서비스가 이뤄져야 하는데

탈중앙화방식의 블록체인 생태계에서는 이런 부분에 있어서
문제가 존재하고 있죠

이건 다 블록체인이 가지는 장점 때문에 그런 것이니 앞으로 분명
더 좋은 기술이 나와서 해결될 부분이라고 생각하고 그렇게
되어가고 있습니다.

그런 확장성의 문제를 해결하기 위한 하나의 방법이 바로 "샤딩"
입니다

잠시 이 크립토키티를 통해 확장성을 확보하는 것이 왜 필요하고
샤딩이 왜 필요한지 살펴보도록 하겠습니다

이 귀여운 고양이들이 2017년 10월부터 알파베타버전을 거쳐 정식 서비스 된
크립토키티들의 이미지 입니다.

크립토키티는 ERC20 방식의 토큰 발행 방식이 아닌, ERC721 방식을 통해
디지털 자산을 이더리움 계정에 귀속시키고 이것의 소유권을 주장 할 수
있는 방식을 통해 만들어진 이더리움 고양이 키우기 게임 입니다.

이 게임이 선풍적인 인기를 끌면서 희귀한 고양이 한마리가 1억원 넘게
거래가 되었다고 하니... 정말 제가 생각하는 것 이상으로
제가 일하려고 하는 이 세계가 정말 뭔가 엄청난 제가 알지 못하는 무언가
초초초 강력한 시장이 아닐까 생각을 해봤습니다.

크립토키티를 통해 이더리움의 가능성과 한계를 볼 수 있습니다.

이더리움 위에 게임을 만들고 이것이 성공하면서 정말 블록체인
생태계가 ICO하고 이렇게 될꺼다 하는 미래에 대한 선투자 개념의
사업모델이 아닌, 실제로 지속가능한 비지니스를 통해 얼마든지
블록체인 생태계에서 수익을 낼 수 있다는 가능성을 이 크립토키티
를 통해 확인 할 수 있습니다.

하지만 크립토키트를 통해

이더리움 확장성 문제에 대해 더 생각할 수 밖에 없습니다.

2017년 12월 정도에는 크립토키티의 상호교환으로 인해 이더리움
네트워크에 장애가 올만큼 큰 트래픽을 불러일으켰고,
이더리움 전송 자체가 불가능한 상황도 있었다고 합니다.

또한, 지금도 이더리움 네트워크 트래픽의 20%는 크립토키티가
차지하고 있을 만큼 크게 트래픽을 유발하고 있는 상황이라고
하네요.

이것은, 크립토키티 같은 서비스가 몇 개만 더 나온다면
이더리움 네트워크의 마비가 언제고 다시 올 수 있다는 것을
의미하는 것이며, 이것이 이더리움 뿐만 아니라 블록체인 생태계에
주는 메세지는 명확합니다.

바로 확장성을 높여라!

꼭 크립토키티 때문이 아니더라도 이미 확장성 문제는 큰 이슈이고
그것을 해결하기 위한 많은 아이디어들이 나오고 있습니다.


샤딩도 이런 확장성 이슈를 해결하기 위한 하나의 기술 솔루션인
것이죠

그럼 샤딩에 대해 제가 이해한 걸 함께 공유하도록 하겠습니다.

샤딩은 기본적으로 데이터베이스 사이언스 용어라고 합니다.

대량의 데이터를 처리하기 위해 데이터베이스 테이블을 수평 분할하여
물리적으로 서로 다른 곳에 분산 저장 및 조회하는 것.
수평 분할된 1개의 테이블을 샤드(shard)라고 한다.
샤딩은 한 곳에 저장되어 있던 데이터를 여러 샤드에 중복 저장하거나,
하나에만 저장할 수도 있다. (IT용어사전, 한국정보통신기술협회)

라고 정의하고 있습니다. 사실 저는 이게 무슨 말인지 알아듣지 못할
전공 출신이라 조금 더 찾아봤는데요,

제가 이것저것 다 찾아보고 내린 결론은

합의방식에서 내역 검증에 참여하는 모든 노드에 모든 전송내역이
전달되는데 이것을 구역별로 나눠서 병렬방식으로 처리한 뒤
다시 하나로 합쳐 검증 이상 없음을 확인하는 방식인 겁니다.

채굴에 있어서도 CPU에서 GPU 방식으로 넘어가면서
그래픽 카드 가격 폭등을 유발 한 것도 병렬방식의 채굴을 통해
효율성을 끌어올린 것이잖아요?

그런 의미로 합의알고리즘 하에서 블록검증을 구역별로 나눠서
효율적으로 검증을 마치고 그것을 통해 이더리움 네트워크의
확장성을 꾀하는 것이죠!

이걸 예를 들어서 설명하고 싶은데 사실 제가 이해한게
정확한 것인지에 대해 누가 알려줄 사람이 없어서
오개념일 수 있으니 그냥 그렇구나 정도로만 생각해주시면
될 것 같은데

조선왕조실록의 예를 들어보겠습니다.

실제 조선왕조실록은 전국 5군데에 나눠서 전권을 다 보관했었습니다.
그러다 4군데는 불타고 소실되어 없어졌지만 1군데가 살아남아
우리가 오늘날 조선왕조실록을 문화재로 접할 수 있는 겁니다.

여기서 조선왕조실록을 5군데에 나눠 보관한건 블록체인 상에서는
분산원장에 해당하는 것이죠

사실 블록체인 개념과는 완전 다르지만 쉽게 이해를 돕고자 넘어가요~~

4군데는 소실되었지만 살아남은 1군데의 조선왕조실록이
진짜인지 검증하는 문제에 대해서 생각을 해보게 되면,

전국에 조선왕조실록 검증센터 10군데가 있다고 가정을 하고
조선왕조실록을 전부 복사해서 10군데에 나눠주고 맞는지 검사해봐라!
하고 기다렸다가 5군데 이상에서 진짜가 맞다! 하면 이게 진짜 조선왕조실록
이 되는게 지금의 합의검증 방식입니다.

정확하고 확실하지만 검증까지 느리다는 단점이 있죠

이걸 샤딩의 개념을 도입하면
10군데의 검증기관에 조선왕조실록을 전부 다 보내는게 아니라 1,2번
검증센터엔 태종부터 세종까지, 3,4번 검증센터엔 세조부터 성종까지

이런식으로 나눠서 검증을 하게하고, 그 결과를
문화재청에서 취합해서 이상이 없는걸
확인하는 방식이 샤딩을 통한 합의검증 방식이라고 이해하시면
이해하기 편하실 것 같습니다.

물론, 이런 관념적 이해를 통한 이해에는 기술적으로 부족한 부분이
있겠지만 큰 그림을 바탕으로 세부적으로 좀 더 깊게 이해하시면
될 것 같습니다.

저는 샤딩에 대한 자료를 찾아보다가 이렇게 이해하는게 가장
맞겠구나 생각이 들더라구요

이상으로 오늘 함께 공부하고자 했던 샤딩의 개념에 대해
정리를 마무리 할께요

위에서도 언급했지만, 부족한 부분이 있다면 언제든 답글을 통해
피드백 부탁드립니당

Sort:  

자세한 설명 감사드립니다

찾아주셔서 감사해요 ^^

비유를 통해서 알기쉽게 설명해주셨네요 ㅎㅎ

감사합니당 :)

짱짱맨 호출에 출동했습니다!!

언제나 이렇게 찾아주셔서 감사합니다 ^-^