[출처] 개인적인 프로젝트조사 3. 니어프로토콜|작성자 BQ
사실 쓴지는 한참 된 글이지만, (업비트 원상전에 올리지!)
가격적인 측면을 떠나서 니어프로토콜의 기술에 관한 글 정도로만 봐주시면 좋을 것 같습니다 :)
프로젝트: Near Protocol 1편 (2편= Octopus Network, 3편= Ref Finance)
니어 프로토콜, 샤딩 기술의 선구자가 될 수 있을까? 새로운 Substrate 앱들의 천국이 될 수 있을까?
관심가지게 된 이유:
-
Near 생태계에 대한 이해도가 너무 없어서 공부 겸
-
투자사 무척 빵빵
-
사실 이미 어느정도 준메이저 체인으로 자리 잡혔기에 니어 프로토콜의 Octopus Network에 관심과 잠재성이 훨씬 더 많이 보이는데.. 이걸 알기 위해선 니어에 대한 기본 이해가 필수적이기에
-
웹 3.0 시대에 있어서 폴카닷과 함께 가장 많은 관심을 받고 있는 프로젝트인 것 같아서
-
2021년 11월 15일에 나이트쉐이드 샤딩을 소개해서 관심 업 (무척 중요)
< https://near.org/blog/near-launches-nightshade-sharding-paving-the-way-for-mass-adoption/>
- 2021년 10월 25일 니어 생태계 조성을 위한 $800m 투자금 유치 (어마무시하다 정말)로 관심 또 업
< https://near.org/blog/near-announces-800-million-in-funding-initiatives-to-support-ecosystem-growth/ >
아마 제가 과거에 작성했던 글을 보신분이라면 아시겠지만, 팬텀 (Fantom)의 경우 약 $370m 인센티브 프로그램을 실시하면서 어마무시한 성장을 한걸 기억하실분들은 하실 것이다.
과거 글 링크: https://blog.naver.com/5trillioncrypto/222501921355
뭐 가격적으로만 봐도 생태계가 얼마나 커졌을지 짐작하실 것이라고 생각한다. 근데 니어의 경우 이를 뛰어넘는 $800m의 지원금이다. 어느정도인지 상상이 되는가..?
짧은 관심 가진 이유 결론:
든든한 백커 +$800m 생태계 조성 투자, + 나이트쉐이드 샤딩 발표와 개발의 본격화라니, 개인적으로 관심을 가질 수 밖에 없는 상태에 있는 것 같다.
Near Protocol 기초조사:
트위터: https://twitter.com/NEARProtocol
홈페이지/앱: https://near.org/
토큰: NEAR
시가총액: $5.46b
완전 희석된 시가: $9.716b
현재 공급양: 56%
가격: $9.7
ICO/IDO 가격: 프라이빗 0.3~0.4$
백커:
< https://near.org/ko/backers/ > (니어 프로토콜 백커)
(가슴이 웅장해진다)
니어 프로토콜에 대해서…
니어 프로토콜은 무엇인가? 니어 프로토콜의 성장 가능성?
솔직히 니어 프로토콜보다 니어프로토콜안의 Octopus Network에 관심이 더 갔었고, 그 조사 과정에서 니어 프로토콜에 대해서도 공부하게 되었지만, 얼떨결에 니어프로토콜도 무척이나 기대가 되는 프로젝트 리스트에 추가가 되어버렸다.
자 그럼 니어프로토콜이 무엇인지 무엇을 추구하고 있는지에 대해서 하나씩 이야기해보자.
니어 프로토콜의 비전과 목표에 대한 목표는 저번달에 고로치님이 작성해주신 글에 가장 이해가 쉽게 요약을 해주신 것 같다.
https://m.blog.naver.com/PostView.naver?blogId=ryogan&logNo=222119987732&referrerCode=0&searchKeyword=near (고로치님 NEAR 프로토콜 글)
조금 더 나아가서, 니어프로토콜의 백서의 문단을 따와서 니어프로토콜의 목적과 비전을 정리해보자면
“It is a complex technology with a simple goal — allow developers and entrepreneurs to easily and sustainably build applications which secure high value assets like money and identity while making them performant and usable enough for consumers to access.”
< https://near.org/papers/the-official-near-white-paper/ >
니어 프로토콜은 복잡한 기술이지만 목표는 단순하다
니어 프로토콜은 복잡한 기술이지만 목표는 단순하다
-
개발자들과 기업가들이 쉽게 만들고, 유지 가능한 어플리케이션을 만들기
-
돈/ 개인정보와 같은 높은 보안을 위한 서비스 제공
-
높은 수준의 어플리케이션 + 사용자들이 가장 사용 가능한 비용/ 환경 제공
이다.
즉 쉽고 저렴하게 제작, 및 유지가 가능한 어플리케이션을 개발자들이 무척이나 간편하고 빠른 시간내에 개발하고 배포하는, 일종의 무척이나 개발자 Friendly 한 플랫폼이 추구 방향이라고 보시면 된다.
폴카닷이 Substrate 앱들을 파라체인을 통해서 쉽게 연결하고 확장시켜주듯이, 니어 역시 전체적인 그림은 비슷한 목적을 가지고 있지만, 그 안에서 추구하는 방향이 조금씩 달라진다. (이 부분은 뒤에서 더 다뤄보겠다)
자 이제 니어프로토콜의 기술에 대한 전반적인 이야기를 해보자
일단 니어프로토콜은 미래의 이더리움 2.0 혹은 폴카닷과 똑같이 POS 방식을 채택한 하나의 블록체인이다. “Base Layer” 블록체인이라고 보면되고, 폴카닷과 이더리움 2.0과 똑같이 샤딩 (Sharding) 기술을 접목하고 있다. 샤딩 기술에 대해서는 개인적으로 매번 챙겨보는 코인트레이너님의 영상을 참고하시기를 추천드린다.
이더리움 벨리데이터 및 샤딩 (초급자) 초보자도 이해할 수 있는 벨리데이터와 샤딩
https://www.youtube.com/watch?v=ecPE-9WZUvc
이더리움 비컨체인, 벨리데이터, 샤딩. 비컨체인과 샤딩은 어떻게 움직이나요?
< https://www.youtube.com/watch?v=BUBH7Fc-q7g >
하지만 니어는 폴카닷과 이더리움과의 샤딩과는 조금 다른 구조를 보여주고 있다. 비콘 (이더리움)/ 렐리체인(폴카닥)의 구조와는 다른 이 샤딩의 이름은 NightShade 샤딩이다.
< https://youtu.be/McyeYF-FgVI > (니어프로토콜 아시아 책임자 니어 소개 영상)
정말 간단하게 이해하자면, 기존의 비콘체인이나 파라체인의 샤딩은 기존의 블록체인 중 일정 부분을 나눠서 처리하는 방식이라 생각한다면, 니어 프로토콜 같은 경우 블록들을 각각 다른 노드에게 맡기는 것이 아닌 하나의 블록을 여러 개의 “Chunk”로 나눠 각각 검증을 하는 과정을 채택했다는 것이다.
이더리움과 폴카닷의 경우를 가져와서 보겠다. 쉽게 생각해서 이더리움 체인을 10분할 해서 각각 다른 데이터를 처리하고, 폴카닷의 체인을 10분할해서 각각 다른 데이터를 처리하게 하여 데이터 처리 속도 (TPS)를 높이는게 샤딩의 역할이라고 할 수 있다.
하지만 이 과정에서 당연히 생기는 문제가 Security, 즉 보안 문제일 것 이다.
< https://near.org/papers/nightshade/ >
그림이 쉽게 설명해주듯이 샤딩이 없는 체인이라면 기존의 체인을 남용 혹은 해킹하기 위해서 대체적으로 전체 노드의 과반 수 이상을 조정하고 있어야한다. 하지만 샤딩으로 기존 체인을 10개의 독립적인 데이터 처리 센터(?)로 나누었을 시 당연히 해킹의 난이도도 몇 배로 줄어들게 될 것이다. 아무런 장치가 없다면 체인 자체의 보안을 담보로 처리 속도를 높이는 것이기 때문에 무척이나 위험도가 높아진다고 할 수 있다.
그래서 이더리움과 폴카닷이 소개한 개념이 비콘체인 (Beacon Chain) 그리고 릴레이 체인 (Relay Chain)이다.
비콘 체인과 릴레이 체인은 각각의 이더리움의 샤드 혹은 폴카닷의 파라체인을 담당하는 Validator들을 최대한 랜덤하게, 그리고 공평하게 꾸준히 바꿔주고, 이 시스템을 유지하고 문제가 생길 시 비양심적인 Validator를 처벌하는 역할을 가지고 있다. 추가로 Fisherman 등 다양한 방법들이 소개되고 있지만 하나 씩 천천히 다뤄보도록 하자.
샤딩 기술 + 비콘체인 or 릴레이 체인
이게 우리가 보통 아는 이더리움과 폴카닷이 샤딩을 통해 보안성, 탈중앙화성 둘다 유지한 채 처리속도를 어마무시하게 올리는 방법이다.
자 하지만 여기서 우리는 하나의 문제점에 부딪히게 된다.
이 문제점은 폴카닷의 파라체인이 약 2~3주에 하나씩 풀리고, 최대 100개로 제한되는 점과 매우 긴밀하게 연결되어 있는데, 그것이 무엇이냐 하면,
결국 비콘체인 or 릴레이체인도 하나의 독립적인 체인이고, 만약 이 체인들이 모든 샤딩된 체인들과 관련되 작업들 (ex. Validator를 랜덤하게 배정, 스냅샷, 오류 수정 등등)을 모두 기록하고 계산을 해야하기에, 연산 제한이 결국 걸릴 수 밖에 없고,
이는 결국 이더리움의 샤딩된 체인들 혹은 폴카닷의 파라체인의 갯수가 제한될 수 밖에 없다는 것이다. (이더리움 2.0의 경우 64개 정도의 샤드를 지원할 예정이다)
(+ 제한된 샤딩된 체인의 갯수는 당연히 어마무시한 예치금 경쟁으로 이어진다. 이는 폴카닥 파라체인 경매 예치금이 수백억원을 돌파하는 사태만 봐도 충분히 느끼실 수 있을 것이라고 생각한다)
결론적으로, 니어프로토콜은 현재 샤딩 기술에 보안(Security) (물론 보안 방법들이 무수히 많이 나오고 있지만 아직은 제한점이 꽤나 있다), 그리고 확장성의 제한에 문제가 있다고 보고 있으며, 수십가지 앱들 그리고 블록체인을 활용하는 인구와 기업들이 점점 늘어날수록 이러한 샤드(Shard)나 파라체인(Parachain)이 어마무시한 가격과 제한된 갯수라는 한계점은 극복을 해야되는 과제로 인식하고 있다. 즉 무제한 (Unlimited)한 확장성을 추구해야한다고 이야기한다.
그래서 니어프로토콜은 기존의 샤딩과는 다른 “Shard Chunks” 을 채택하는데 이것에 대해 아는 만큼 최대한 설명해보겠다.
(이 부분에서는 제 수준에서는 내용이 무척이나 난해해 최대한 아는 만큼만 설명하겠습니다. 카데나 (KDA) 이후로 이렇게 이해하기 쉽게 설명해준 자료들이 거의 없는 코인은 오랜만입니다…☹)
(기술적인 부분에 관심이 없으신 분이라면 이 부분을 스킵을 하셔도 무관합니다)
시작하기에 앞서 폴카닷, 이더리움 혹은 코스모스와 비교/ 관련된 이야기들이 종종 나올텐데, 이 체인들끼리 일종의 경쟁관계(?)로 인식하게 되실 분들이 많을 것 같다.
제가 조사한 바로는 폴카닷, 이더리움, 코스모스, 그리고 니어는 사실상 경쟁 관계라기보다는 협력 관계로 인식하는게 낫다고 생각한다. 이 4가지 체인 개발자, CEO들 끼리의 연결고리가 무척이나 많다.
니어의 생태계와 NightShade Sharding (나이트쉐이드 샤딩)
자 일단 니어의 블록체인은 일단 블록 생성자 (Block Producer), 청크 생성자 (Chunk Producer), 그리고 피셔맨 (Fisherman) 등으로 이뤄져있다. 재밌는 점은, 니어 블록체인은 샤딩 기술을 이용하지만
1. 하나의 블록체인에서 모든 것이 운영되며
2. 시스템안에서 역할과 무관하게 그 누구도 블록체인 전체를 검증하지 않는다.
(어 우리가 아는 것과는 전혀 다른 개념이잖아?!)
하나씩 살펴보자
나이트쉐이드 샤딩에서는 일단 초기에 블록생성자 (Block Producer) 그리고 검증자 (Validators)가 있다.
w 숫자만큼의 블록생성자가 있다면 wv만큼의 검증자가 존재하게 된다. (니어홈페이지에 따르면 ~v=100 정도로 잡고 있다)
블록 생성자와 검증자는 똑같이 토큰을 일정 기간동안 스테이킹하고 있는 개인 혹은 단체이며 이제 니어 프로토콜은 n 갯수만큼의 샤드를 가지게 된다. (물론 샤드체인이 아닌 메인 블록안의 일정 부분 (Chunk) 의 숫자이다.
이제 블록생성자와 검증자는 블록안에서 모든 내용이 아닌 할당된 갯수만큼 (n)에 대한, 샤드에서 일어나는 일들의 검증과 기록 과정에만 참여하게 된다. (물론 고정이 아니라 이번 블록은 샤드1-n 담당, 다음 블록은 샤드 n~2n 담당 식으로)
(그림참고)
내가 블록생성자인가, 검증자인가를 결정하는건 내가 스테이킹한 양에 따라 다르며, 토큰 스테이킹 양이 높은 순서대로 블록생성자 -> 검증자 순으로 역할이 배정되게 된다. 이는 일정 기간 (Epoch)동안의 역할이며 당연히 일정 기간이 지날 때 마다 스테이킹 순위가 변동되면 역할 역시 변동되게 된다.
각 블록생성자는 sw (s * 블록생성자의 숫자)만큼의 샤드에서 역할을 수행하게 된다.
예시로 s=0.4, w(블록생성자의 숫자)=100 라고 생각하고, 1000개의 샤드 (n)가 존재한다고 생각하면,
100명의 블록 생성자들은 각각 40개의 샤드에 관여하게되며, 총 100*40=4000개의 총 활동량(?)이 측정되고, 총 샤드가 1000개이기에 각각의 샤드는 4명의 매번 다른 블록생성자가 참여하게 되는 것이다.
자 이제 각각의 블록생성자는 자신들의 작업시간(?)시간 직전에 일단 인수인계(?)를 받으며 과거 블록생성자들이 했던 일들을 확인하고,
작업시작 신호와 함께 작업기간동안 일어난 새로운 일들을 계산해주기 시작한다.
자 각각의 샤드에, 예시에서는 4명의 블록생성자가 참여한다. 쉽게 이해하면 각 샤드마다 담당 관리자들이 몇 명있고, 담당관리자가 주기마다 계속 바뀌며, 이 사람들이 그 안에서 계산을 해주는 사람들이라고 보면 된다.
이제 이 4명 중에 또 한명이 선정된다. 이 사람은 이제 계산을 해주는 것 뿐만 아니라 이것들을 기록하고 위 그림에서 나온 Chunk를 만들어주는 역할을 담당하게 된다. 이런 사람들은 이제 Chunk Producer (청크생성자)로 이름 짓게 된다. (청크생성자는 블록생성자이기도 하므로, 샤드참여+청크생성 두 가지 역할을 다 하게 된다) 이 Chunk는 샤드체인의 정보들을 모아서 블록자체의 생성에 기여하는 일이다.
블록생성자 중 한명이 청크생성자 역할까지 하게 된다는 것은 이해가 되셧으리라 믿는다, 이제 이 청크생성자는 활성화 기간동안 블록생성자들이 순서대로 돌아가면서 맡게된다.
블록 1 블록 2
Ex) 첫 번째 청크 생성자가 청크를 만들고 블록 1을 만드는데 기여했다면, 이제 다음 블록에서는 블록생성자 역할만 하고 두 번째 블록생성자가 블록생성자+청크생성자 일을 하게된다.
자 이제 각 블록마다 하나의 청크 (Chunk)가 만들어졌다. 이때 청크생성을 담당하고 있던 사람은 블록생성자들에게 만들어진 청크를 조각으로 나누어 한 조각씩 보내주게 된다. (Erasure Coded Version)
자 여기서 하나 주의할 점은 Erasure Coded Version이다. 이것에 대한 기술까지 다룰 순 없으니 개념만 이해하자면,
만약 기존의 청크의 사이즈가 1이었다면, Erasure Coded Version의 사이즈는 2 혹은 3 혹은 4까지도 확장이 가능하다. 쉽게 말해 내가 10의 데이터가 있다면 이걸 1씩 10명에게 나눠주는 것이 아니라, 이 데이터를 30 혹은 40 수준으로 늘려서 1씩 나눠주게 되는 방식이다.
(Erasure Coding에 관한건 네이버나 구글에 검색하면 자료가 꽤나 관심이 있으신분은 찾아보시길 바랍니다)
쉽게 말해, Erasure Coded Version은 10이라는 데이터를 30으로 사이즈를 늘리고, 30을 30명에게 배포하였다면, 30을 다 받아야 원본이 복구가능한게 아니라 30중에서 20개의 올바른 데이터만 돌려받게되어도 원본이 복구가능하다는 것이다.
이게 왜 중요하냐 한다면, 30개의 데이터를 30명에게 보내도 이중 2/3 만 정직하게 데이터를 검증하고 돌려주기만해도 데이터 자체가 다 복구가 가능하고, 그 뜻은 30명의 검증자 중에 20명만 정직해도 데이터 검증과 복구에 문제가 전혀 없다는 것이다.
이 조각들은 추가로 청크생성자의 시그니쳐가 들어가있다, 즉 샤드의 블록생성자 중 누가 현재 Chunk 생성을 담당하고 있고, 누가 이걸 만들었는지 확인가능한 조각들이라고 보면 된다.
자 이제 청크생성자를 제외한 다른 블록생성자들이 이를 받게 되고, 이 사람들은 내가 이때까지 처리한 샤드의 내역과 내가 받게된 이 부분이 일치하는지 대조를 하고, 맞을 시 이를 다시 청크생성자에게 보내게 됩니다. (틀릴 시 보내지 않는다) (데이터의 한 부분일 뿐이지만, Merkle Tree에 따라 검증이 가능하다)
이제 만약 조각들이 (부분 마다 2/3이상이) 다시 청크생성자한테 돌아오게 된다면 (검증이 되었다는 이야기) 재조립이 가능하게 되고, 재조립까지 성공적으로 하게 된다면 이를 메인블록에 생성하기 시작한다.
- 이 Erasure Coded Version의 데이터 분산이 도데체 왜 필요할까? 왜 이러한 과정을 거쳐야할까에 의문이 당연히 생길 것이다. (폴카닷도 똑같이 Erasure Coded Version을 노드들에게 돌리는 작업이 과정에 추가되어 있다)
Erasure Coded Version을 이런식으로 나눠주는 것은 샤드 (폴카닷에서는 파라체인)의 Validator들의 대다수가 비양심적 행동을 할 때를 대비한 것이다. 만약 이들이 어떻게 공모를 해서 거짓된 블록을 서로 만들기로 동의를 하고 이에 서명을 한 후에 블록 헤드를 보내고, 세부 내용을 공개 안할 시 이를 입증할 방법이 없기 때문에 미래에라도 악의적인 블록이나 Chunk를 확인하기 위해서 필수적이다. (Solving Data Availability Problem)
데이터 입증의 문제를 풀고, 검증자들끼리 모든 데이터를 공유하는 과부화 현상을 방지하는 어찌보면 샤딩의 중요한 기술 (수 십가지가 있는 것 같지만) 중 하나라고 할 수 있다.
뭐 여기에도 당연히 문제점은 존재하고, 그에 대한 해결방안들도 여러가지 제안되기도하고 하지만 사실 이 정도만 다뤄도 가장 기본적인 니어프로토콜의 샤딩을 이해하고 다음 부분으로 넘어가는데 문제는 없을 듯 싶다.
(어느정도 관심이 있으시다면 니어프로토콜의 Doomslug 부터 시작하시길 추천드립니다)
어떠한 Consensus 를 사용하는지, Fisherman을 어떻게 활용하는지, 문제가 생겼을 때 어떻게 대응하는지 (ex. 하드포크), 문제를 입증하는데 시간이 걸리면 블록 생성은 어떻게 진행해야하는지 등 다양한 내용들이 추가로 있지만… 이걸 다 다룰 수도 없고, 나 역시 빠뜨리고 있는 부분들이 분명히 수 없이 존재할 것이기에 이후 추가적인 이해와 궁금증 해결은 개인적인 공부를 통해서 해결하시기를 추천드린다.
자 그럼 이제 기존의 이더리움의 비콘체인, 폴카닷의 릴레이체인, 그리고 니어의 청크 샤딩 (Chunk Sharding)의 가장 큰 차이점에 대해 이야기해보자.
이더리움/ 폴카닷
니어 프로토콜의 샤딩 방식
Press enter or click to view image in full size
니어 프로토콜의 샤딩의 가장 큰 장점 중 하나는 보안성이다.
앞서 말했듯이 당연히 샤딩 기술을 이용하면 샤드당 담당하는 검증자의 숫자가 줄어듬으로 필연적으로 보안에 있어서는 단점으로 밖에 작용할 수 밖에 없다.
이를 방지하기 위해 폴카닥이나 이더리움의 경우 샤딩별로 랜덤 검증자 선택, 주기적으로 변경, 피셔맨(Fisherman) 정책 등 다양한 기술 혹은 꼼수(?)를 접목해 이를 해결하고자 한다. 하지만 당연한 말이지만 완벽한 것은 없다. 그 중 가장 큰 문제점은 샤드 체인이 따로 있을 경우 일단 맡고 있는 시간동안은 이 검증자들이 누구인지 알 수 있게 된다는 점이다 (서명을 해야하니…)
정말 너무 간략하게 요약하는거지만, 쉬운 예로 20분의 기간동안 어떤 샤드에 5명의 검증자가 있다면 이를 빠르게 확인하고, 담당 시간이 끝나기 전에 5명의 검증자들에게 연락해서
“5명의 검증자들 너네! 너네가 스테이킹하고 있는 DOT의 양의 2배를 각각 너희들에게 줄께, 나를 위해 가짜 연산과 결과물을 체인으로 보내줘”
와 같은 상황이 발생가능하다는거다. 물론 이를 방지하기 위해서 다양한 보안점들을 추가하지만 결국 크래커 vs 해커의 구조처럼 끊임 없는 싸움이 시작될 것이다.
Press enter or click to view image in full size
하지만 니어 프로토콜에서 말하는건 자신들은 하나의 체인에서 모든일이 일어나고,
검증자들은 배정받은 샤드 (Chunk)를 직접적으로 공개를 하고 서명을 하는게 아니라 단일 체인이기에 샤드에 서명을 하는게 아닌 블록자체에 서명을 하게 된다 설명한다.
이렇게 된다면 사실 밖에서는 어떤 검증자가 어떤 샤드 (Chunk)를 담당하고 있는지 모르니, 위와 같이 뇌물(?)이나 설득으로 샤드 자체를 해킹하기 위해서는 결국 자신이 먼저 앞에 나서서
“저기 혹시 Chunk 1 담당하시는 검증자분들 잠시 모여서 저랑 이야기하시죠?”
라는 이야기를 해야된다는 것이다. 그 자체로 사실 내가 악의적인 목표를 가지고 있다는 가능성이 있다는 것을 체인자체에 공개를 해버려야하고 이는 보안에 있어서 무척이나 효울적이라는 이야기다.
뭐 여기에도 당연히 구멍이 있고 이거와 관련된 이야기를 폴카닷/ 코스모스/ 니어가 주기적으로 같이 모여 이야기하며 발전시켜나가는데 이러한 내용들은 따로 찾아보시길 바란다.
두 번째로 니어프로토콜의 장점 (사실상 가장 중요)는 확장성 (Scalability)이다.
샤딩은 과거에는 “노드만 늘어나면 무한한 확장이 가능한 기적과 같은 시스템”으로 한창 광고가 되었었다. 하지만 현실에 그런 샤딩 블록체인은 존재하지 않는다. 이건 폴카닥의 파라체인이 100개의 샤드를 최대선으로 보고 있고, 이더리움 2.0 비콘체인 역시 최대 약 64개 정도의 샤드 정도만을 예정하고 있다.
글의 초기부분에서도 설명했지만, 이는 메인체인 (비콘체인, 릴레이체인 등등)을 가지고 있는 샤딩 블록체인에서 벗어날 수 없는 하나의 한계점이다. 왜 그럴까? 한다면, 아무리 메인 체인 밑에 수십 가지의 샤드 체인들을 제작해도 결국은 메인체인 위에서 모든 검증자들이 이 샤드 체인들에 관한 내용, 검증, 그리고 노드들의 배치등 다양한 부분을 연산하고 계산을 해야만한다.
문제는 샤드의 갯수가 수 백개만 되어도 메인체인 자체가 이러한 정보를 다 처리할 능력이 없고 결국 우리가 생각하는 5분 기다리고 가스비 10만원씩 나오는 체인으로 돌아가버리게 되는 것이다. 그렇기에 이더리움 2.0은 64개 폴카닷은 100개로 네트워크 과부화를 방지하기 위해 샤드의 갯수에 제한을 두고 있다.
우리가 알던 이상적인 샤딩은 “노드의 갯수가 늘어날수록 무한한 확장이 가능한 블록체인” 이었는데 이와는 좀 다른 현실적인 방안들이라고 볼 수 있다.
하지만 니어프로토콜의 NightShade 같은 경우 이러한 비콘체인, 혹은 릴레이 체인이 존재하지 않는다.
블록 자체를 청크 (Chunk)로 나누어서 1,2,3 번, 너는 2,3,6번, 우리는 1,3,7번 등으로 나누어서 처리를 담당하게 되고 서로 검증하며 모든 샤드들을 하나의 블록체인에서 만들어가게 된다.
Press enter or click to view image in full size
쉽게 말해 노드가 늘어날수록 처리할 수 있는 Chunk의 갯수가 늘어나고 노드의 갯수가 무제한으로 확장되게 된다면 샤드의 갯수도 무제한에 가깝게 만들 수 있게 된다는 것이다.
뭐 이 과정에서 당연히 떠오르는 문제들이 보안점, 검증의 유효성 등 다양한 부분들이 있지만 이를 Fisherman, Erasure Coded Version (설명한), Bitmask, 등 다양한 부분으로 이를 보안하고 이를 실현시킬려고 하는 것이 니어프로토콜이다.
이더리움 2.0과 폴카닷의 초기 샤드 디자인에 감명을 받아 만들어졌지만 이보다는 대단한 새로운 단일 ‘샤딩 블록체인’을 추구한다고 보면 될 것이다. (이번달에 출시된 Phase 1 나이트쉐어 샤딩부터 꾸준히 지켜보면 말만 유토피아적인걸 추구하는건지 아니면 뭔가 보여줄지 윤곽이 들어나지 않을까 싶다)
자 니어프로토콜의 마지막 장점은 아니지만 이 글에서 소개하게 될 니어프로토콜의 마지막 장점은 크로스 샤드 소통 (Cross Shard Communication)에서의 이점이다.
기존의 비콘체인 혹은 릴레이체인들 같은 경우 샤드 혹은 파라체인들이 어찌보면 하나의 독립적인 체인들로 존재하고 그렇기에 브릿지, 혹은 샤드끼리의 소통에 있어서 다양한 한계점들이 존재한다.
특히나 폴카닷의 경우 혹시나 지금의 보안 시스템이 뚫혀서 파라체인 하나에서 ‘틀린’ 블록을 만들어 다른 파라체인으로 전송하고 하는 등의 행위를 어떻게 하게 되고, 이게 폴카닷의 릴레이체인에서 발각될 시, 파라체인과 릴레이체인을 모두 롤백 혹은 하드포크해야되는 해결책이 나오는데 이는 혹시라도 발생하게 된다면 그야말로 ‘틀린’블록이 지나다닌 샤드체인들을 하나 하나 다 롤백하고 수정하거나 하드포크하며, 릴레이체인에서도 같은 방식으로 진행해야하는 무서운 결과를 불러일으킬 수도 있다.
하지만 니어 프로토콜 같은 경우 하나의 블록체인에서 모든 일들이 관리가 되기 때문에, 일단 첫 번째로, 크로스 샤딩 (폴카닥의 파라체인들 같은 경우 독립적인 STF (State Transition Function)를 가지고 있기에 Web Assembly 라는 기능을 이용해서 이를 가능하게 한다) 자체가 비교적으로 훨씬 수월하고 쉽게 일어지며
두 번째로, 크로 샤드 커뮤니케이션에서 위와 같은 일들이 혹시나 만약에라도 일어나게된다면 하나의 블록체인만 포크 혹은 롤업을 하면 되기에 문제 해결 역시 훨씬 빠르게 가능하다.
(니어 프로토콜의 크로스 샤딩 기술은 쿼크체인의 기술과 비슷한 형태로 진행된다. 이 기술에 대해 궁금하신 분은 쿼크체인의 샤딩에 대해 알아보자)
뭐 이렇게 이번 글에서는 니어프로토콜의 나이트쉐이드 출시 소식과 함께 니어 프로토콜이 어떤 방향을 향해 나가가고 있는지, 니어프로토콜이 진행하고 있는 샤딩 기술이 왜 주목을 하고 있어야하는 부분인지에 대해 어느정도 이야기해보았다. 글이 너무 길어지는 것 같으니 이쯤하고 짧은 결론을 내리자면…
짧은 결론:
1.샤딩의 기술에 대한 이야기가 많지만 이 부분은 아직 여전히 많은 개발과 보완이 필요한 영역이라고 생각된다.
이더리움 2.0, 이에 감명을 받고 이더리움 2.0의 한계점을 극복하기 위해 탄생한 폴카닷과 파라체인, 이더리움 2.0과 폴카닷의 설계를 보며 문제점과 한계점이 있다고 생각하고 새로운 샤딩 방식에 착수하기 시작한 니어프로토콜. 하지만 이더리움 2.0이 정말 코앞으로 다가오기 시작하였고, 폴카닥 파라체인 옥션이 시작된 현 시점, 샤딩 기술은 결국 블록체인 시장에 큰 바람을 불러일으킬 것이고 이 안에서 완벽하지 않더라도 그에 가깝게 구현해가는 프로젝트들은 어마무시한 수혜를 받을 수 있을 것이라고 생각한다.
2.니어 프로토콜은 그런점에 있어서 어찌보면 샤딩 기술에 있어서 가장 최전선에서 다양한 것을 시도하고, 현재 샤딩의 문제점들을 최대한 해결할려고 힘을 쓰고 있는 프로젝트가 아닌가 싶다.
물론 나이트쉐이드 샤딩의 출시와 함께 과연 이것이 엄청난 성공이 될 지 실패가 될 지는 봐야겠지만 개인적으로는 어마무시한 자본력과 투자사,그리고 말도 안되는 수준의 개발진들의 이력을 봤을 때 샤딩 세계의 유토피아는 모르겠지만 무언가 새로운 것을 제시해줄 확률은 높지 않을까 생각한다. (지극히 개인적인 의견)
정말 단기간만에 어마무시한 성장을 하였지만 솔직히 아직 생태계 자체는 무척이나 활성화가 안된 수준이다 샤딩 출시와 생태계 지원금을 통해서 생태계가 커지기 시작한다면 조금은 기대해보고 지켜봐야하는 프로젝트가 아닌가 싶다.
4.Substrate 기반 앱들, 그리고 WEB3.0이 점점 본격화 되는데 있어서 파라체인과 같은 샤딩은 점점 필요성이 늘어나게 될 것이고, 니어 프로토콜 CEO는 Web 3.0 의 시대에는 우리가 상상하는 그 이상의 숫자의 노드들과 프로젝트들이 생겨날 것이고 이 과정에서 샤딩은 필수적이고 현재 제공되는 샤딩으로는 택도 없다고 주장을 하는데 만약 이 말대로 된다면 니어 프로토콜이 가장 큰 수혜자 자리를 노릴 수도 있지 않을까? 라는 생각도 해본다. (이 부분은 옥토퍼스 네트워크를 다루면서 또 이야기해보도록 하겠습니다)
[출처] 개인적인 프로젝트조사 3. 니어프로토콜|작성자 BQ

