아톰의 EDCON 2018 참관기 4편: 샤딩 본격 해부
이 기사를 공유합니다
정우현 (atomrigs)
정우현 (atomrigs) 2018년 5월23일 13:38
2014년 서울이더리움밋업을 처음 조직한 정우현(atomrigs)씨가 지난 3~5일 캐나다 토론토에서 열린 이더리움 개발 컨퍼런스 에드콘(EDCON) 참관기를 보내왔다. 미국 텍사스에 거주하는 사업가인 정씨는 지금도 일년에 한 두 차례 한국에 와 서울이더리움밋업에 직접 참석하곤 한다. 서울대 언론정보학과를 졸업했지만, 30대 후반의 나이에 프로그래밍 공부를 시작했다.

_______________________________________________


이번 편에서는 이더리움의 스케일링 솔루션 중 샤딩에 대해 좀 더 자세히 들여볼 차례이다. 샤딩은 하나의 체인에서 감당해야 할 트랜잭션들을 여러 분할 체인(샤드)들로 나누어서 처리함으로써 전체 처리량을 늘리려는 스케일링 솔루션이다. 플라즈마, 사이드체인, 또는 스테이트 채널과 다른 점은, 이들 분할된 체인들이 각자 별도로 존재하는 것이 아니라 하나의 단일한 시스템으로 기능한다는 점이다. 따라서 샤딩이 구현된 체인을 쓰는 사용자 입장에서는 처리량이 늘어났을 뿐, 샤딩이 없는 체인을 사용하는 것과 거의 동일한 환경이 제공된다.

샤딩 개관


 

우선 이더리움 재단의 연구원으로 활동하고 있는 샤오웨이 왕의 발표를 들어보자.

그는 샤딩이 시큐어하면서도 탈중앙화된 스케일링 솔루션이라고 강조하면서 시작한다. 늘 그렇지만 탈중앙성과 보안성을 유지하면서 성능을 올리는게 어렵다.

이더리움 1.0 메인체인에 연결되는 샤드체인들은 이더리움 2.0 프로토콜을 미리 시험하는 새로운 체인들이 될 것이고, 각자가 하나의 새로운 세계이며 이들 샤드체인들이 메인체인의 작업을 나누어 가지게 될 것이다.

샤딩을 구성하는 또 하나의 주요 개념은 collation 이다. 블록과도 유사하게 생겼는데, 헤더와 바디로 이루어져 있고 샤드체인와 메인체인 간 연결과 관련된 정보를 저장한다.

마지막으로 샤딩매니저 컨트랙트(SMC)가 메인체인과 샤드체인간의 연결을 보장하게 된다.


샤딩은 높은 TPS 성능을 가지게 하는 확장성(Scalability)과  크로스-샤드와 UX 등을 통한 사용성(Usability), 그리고 보안성(Security)과 탈중앙화(decentralization)를 모두 추구한다.

샤드체인의 개발 로드맵은 체인의 스테이트 실행을 막아 놓은 가장 단순한 단계에서부터, 스테이트 실행을 허용하고, 크로스 샤딩을 허용하고, 마지막으로 메인 체인과 연결하는 단계로 나아간다.

샤딩의 베이스 프로토타입은 파이썬과 Go 언어를 사용해 개발되고 있다. 메인 깃헙 사이트인 https://github.com/ethereum/sharding 에 가보면 지금도 매우 활발한 활동이 진행되고 있다.

 

샤딩 리서치 최신 업데이트


 

저스틴 드레이크는 샤딩에 대해 좀 더 최신 연구동향을 설명한다.

샤딩에는 4가지 레이어가 있다. 첫번째는 메인체인상의 샤딩 매니저 컨트랙트(SMC)상에 걸어놓는 담보(deposits) 레이어이다. 기본적으로 이것은 담보를 사용하는 PoS 방식이다. 그 다음 레이어는 클락(Clock)인데, 체인의 진행에 있어서 하트비트 같은 역할을 하고, 랜덤 시드를 제공하게 된다. 이 랜덤 시드를 통해 각 샤드 블록을 검증하는 노드들의 선택에 랜덤성을 부여할 수 있게 된다. 다음은 데이터 레이어인데, 각 샤드의 헤더와 블록들의 미가공데이터(Raw data)를 관리하는 부분이다. 그리고 이 데이터들을 EVM을 통해서 처리하고 스테이트를 변경하는 스테이트 레이어가 있다.

SMC를 중심으로 여기에 제안자(Proposer), 검증자(Attester), 공증자(Notary),메타공증자( Meta-notary) 등의 주체들로 구성된다. 비콘(Becon)체인에 의해 주어진 RANDAO 커밋트먼트에 의해 랜덤시드가 결정되고, 이것에 의해 각 주체들의 선정이 랜덤하게 이루어진다.

위 그림을 보면 샤드1,2,3 은 일반 블록체인과 유사하게 헤더들이 서로 체인처럼 연결된다. 샤딩을 관리하는 모든 노드는 기본적으로 각 샤드들의 헤더를 전부 볼 수 있도록 모든 샤드체인에 대해 일종의 라이트 클라이언트 모드로 작동한다. 밸리데이터들은 모든 샤드의 헤더만을 보고 있다가, 샤딩매니저컨트랙트에 의해 랜덤하게 선택되면 지정된 특정한 블록의 블록 데이터를 전부 다운받아서 이를 검증해야 한다. 오렌지색의 박스들은 해당 블록 데이터를 의미한다. 샤드블록들의 모든 데이타를 전부 검증하는 게 아니라 랜덤하게 선택함으로써 밸리데이터들이 처리할 수 있는 샤드의 수를 더 늘릴 수 있게 한다. 전체 시스템의 성능이 결국 각 샤드가 처리할 수 있는 트랜잭션 용량 곱하기 총 샤드수에 의해 결정된다는 의미에서 이것을 이차 확장성(quadric scalability) 라고 부른다. 여기서 Quadric 이라는 표현은 무엇인가 두개의 변수의 곱에 의해 결과가 나온다는 뜻이다.

샤딩의 두번째 레이어인 비콘체인은 각 샤드체인들과 메인체인의 중간에 위치한다.

비콘체인이 5초 간격의 글로벌 클락마다 랜덤시드에 따라 밸리데이터의 순위셋이 제시되고 이 순위에 따라 밸리데이터가 다시 프리이미지(미리 계산된 반복된 해시계산값)를 되돌려서 확인하게 되는 과정을 거치면서 글로벌 클락마다 밸리데이터의 순위가 결정된다. 중간에 프리이미지를 리턴하지 못하는 밸리데이터가 나오면, 이를 스킵하고 다시 랭크를 정하게 된다.

3번째 데이터 레이어에서 어떻게 블록과 에폭이 확정되는지 이제 살펴보자.

우선 밸리데이터풀에서 새 블록을 제안할 제안자(proposer)풀을 선정한다. 이 제안자 그룹은 정기적으로 리셋된다.

비콘체인의 하트비트마다 각 샤드의 제안자들이 새로운 블록을 제안한다.

제안된 새 블록들에 대해 검증자(Attester)들 5명이 검증(attestation)을 하는데 5명 중 3명이 동의하면 이 블록은 검증됐다고 간주한다. 그리고 이들 검증자들도 밸리데이터 풀에서 랜덤하게 선택된다.

녹색마크가 찍힌 블록은 검증자 3명이 검증을 해준 블록들이다. 이렇게 검증이 되어서 블록이 계속 이어져가다가 블록이 분기가 되는 경우가 생길 수 있다. 만일 분기된 블록이 3명의 검증자 동의를 받지 못할 경우 이 블록은 사장되고, 다른블록의 줄기로 계속 블록이 쌓인다. 그런데 만일 분기된 두 블록이 모두 3명의 검증인 동의를 받게 되면 어떻게 될까? 그림의 맨 위의 두개의 그린마크가 찍힌 블록들이 그런 상태이다.

이 문제를 해결하기 위해 400명의 공증인(notary)에 의해 100블록마다 어떤 쪽이 가장 긴 체인인지 공증을 받게 된다.

이렇게 해서 100블록마다 블록체인 연결의 단일성이 확립되고 매 100블록(그림에서 노란별 마크)마다 공증 체크포인트가 설정된다.

다음 단계는 이렇게 각 샤드마다 확보된 공증된 체크포인트 블록들을 모아서 다시 하나의 메타 체크포인트를 만들어서 이를 메인 블록체인에 올리게 된다. 이 검증을 메타공증자(Meta-notary)들이 수행하게 된다.

저스틴은 이러한 샤딩의 구조를 구현함에 있어서 두 가지 재미있는 테크닉을 소개한다.

이러한 검증과정을 처리하는 동안 검증자들이 과연 데이터를 다운받아서 확인을 했는지 아니면 그냥 보상을 받기 위해 무작위로 투표를 하는 것인지를 알아내기 위해 Proof of Custody 프로토콜을 사용한다. 검증해야 되는 데이터를 잘게 쪼갠다음 그 위에 시크릿 값을 더해서 해시를 뜬다. 그리고 이들 해시를 다시 머클트리로 묶어서 최종 해시값을 구한다. 각 검증자는 투표를 할 때 이 데이터 해시값을 같이 제공하게끔 만들어 이들이 데이터 확인없이 투표하는 것을 막는다.

많은 샤드들에 의해 누적되는 보우팅 시그니쳐들을 처리하는데 많은 비용이 소모되는데, 이를 단순화해서 효율적으로 관리하기 위해, 시그니쳐 클레임을 비트필드(bitfield)로 전환해서 처리한다.

샤딩의 알고리듬이나 구현방법들은 여전히 많은 연구와 테스트가 필요한 상황으로 보인다. 하지만 기본적인 메카니즘은 상당히 구체화되고 있다.

<5편에서 계속>

제보, 보도자료는 contact@coindeskkorea.com으로 보내주세요.



댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.