"스테이트 샤딩"의 두 판 사이의 차이
2번째 줄: | 2번째 줄: | ||
== 개요 == | == 개요 == | ||
− | 스테이트 샤딩은 계정 기반 모델(account-based model)이다. 스테이트 샤딩은 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지하지만, 교차분할 트랜잭션을 수행하지 못하도록 제한되고 있다. 스테이트 샤딩은 시스템의 상태가 모든 [[샤드]]에 복제되어 있지 않기 때문에 네트워크는 더 오프라인 샤드에 대한 트랜잭션의 유효성을 검사하지 못하게 된다. 만약 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협이 될 수 있다. 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때까지 전체 시스템을 사용할 수 없게 된다.<ref>sobly tv, 〈[https://medium.com/@sobly/샤딩이란-쉽게-이해해보자-7732bcbe0bb8 샤딩이란? 쉽게 이해해보자]〉, 《미디엄》, 2018-09-03 </ref> | + | 스테이트 샤딩은 계정 기반 모델(account-based model)이다. 스테이트 샤딩은 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지하지만, 교차분할 트랜잭션을 수행하지 못하도록 제한되고 있다. 스테이트 샤딩은 시스템의 상태가 모든 [[샤드]] 에 복제되어 있지 않기 때문에 네트워크는 더 오프라인 샤드에 대한 트랜잭션의 유효성을 검사하지 못하게 된다. 만약 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협이 될 수 있다. 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때까지 전체 시스템을 사용할 수 없게 된다.<ref>sobly tv, 〈[https://medium.com/@sobly/샤딩이란-쉽게-이해해보자-7732bcbe0bb8 샤딩이란? 쉽게 이해해보자]〉, 《미디엄》, 2018-09-03 </ref> |
− | 샤드를 동적으로 구현하여, 샤드의 지갑 주소 공간을 나눠서 샤드의 | + | 샤드를 동적으로 구현하여, 샤드의 지갑 주소 공간을 나눠서 샤드의 분할은 각 주소 공간의 절반씩만을 차지하고 연결되어 유지되며, 형제 노드에 해당 상태를 유지하여, 차후 병합을 할 때 대기시간을 줄인다. 중복 메커니즘에 따라 엘론드의 구조는 수십만 TPS의 처리량을 가지면서도 지속할 수 있다.<ref name="스물">스물네마리, 〈[https://www.blockchainhub.kr/bbs/board.php?bo_table=mari_blockchain&wr_id=189 적응형 스테이트 샤딩을 주 무기로 한 Elrond ]〉, 《블록체인허브》, 2018-06-21 </ref> |
== 특징 == | == 특징 == | ||
− | 계정 기반 모델을 이어가면 스마트 컨트랙스는 도입하지 않고, 스테이트 샤드 블록체인의 경우에 특정 샤드는 상태의 일부만을 유지한다 예를 들어서, 두 개의 샤드와 두 개의 사용자 계정만을 가진다면, 각각 엘리스(Alice)와 밥(Bob)이라 하고, 각 샤드는 한 명의 사용자 잔고를 보유한다. 엘리스가 밥에게 지불하는 트랜잭션을 생성하면, 트랜잭션은 첫 번째 샤드가 처리하게 된다. 트랜잭션이 검증되면 밥의 새로운 계좌에 대한 정보가 두 번째 샤드와 | + | 계정 기반 모델을 이어가면 스마트 컨트랙스는 도입하지 않고, 스테이트 샤드 블록체인의 경우에 특정 샤드는 상태의 일부만을 유지한다. 예를 들어서, 두 개의 샤드와 두 개의 사용자 계정만을 가진다면, 각각 엘리스(Alice)와 밥(Bob)이라 하고, 각 샤드는 한 명의 사용자 잔고를 보유한다. 엘리스가 밥에게 지불하는 트랜잭션을 생성하면, 트랜잭션은 첫 번째 샤드가 처리하게 된다. 트랜잭션이 검증되면 밥의 새로운 계좌에 대한 정보가 두 번째 샤드와 공유돼야 하고, 두 계정이 서로 다른 샤드에 의해 처리되면, 빈번한 샤드 간 커뮤니케이션과 상태 교환을 수반한다. 샤드간 소통이 스테이트 샤드로 얻는 퍼포먼스를 해치지 않도록 해야 한다.<ref>phuzion7, 〈[https://www.dailycoinews.com/dailycoinews/article/read.do?articleNo=1642&lang=kr 블록체인 샤딩의 3가지 형태: BlockChain Sharding]〉, 《데일리 코인뉴스》, 2018-12-31 </ref> |
− | 샤딩은 데이터베이스 기술의 중요한 일부로써 | + | 샤딩은 데이터베이스 기술의 중요한 일부로써 데이터베이스를 파티션화 하여 빠르게 데이터를 주고받기 위함인데 샤딩 기술은 질리카, 쿼크체인, 이더리움 등에서 블록체인 확장성 이슈에 대해 해결방안으로 불리며, 이중 엘론드와 같은 스테이트 샤딩을 사용할 것은 이더리움이다. 이더리움의 초 블록의 개수는 2018년 6월 20일 기준 5823023개이고 블록 1개당 크기가 1킬로 바이트 라고 가정하면 이더리움 블록체인의 총 크기는 5.8기가바이트가 되는 것이다. 블록 타임은 계속 줄어들고 있는데 블록이 계속 쌓이게 되면 블록체인은 무거워질 것이다. 1만 명이 해당 블록을 나눠 갖는다고 가정하면, 한 사람당 582개의 블록을 가지게 되며, 1인당 블록을 1,000개를 가지게 되면, 5,823명이 블록을 나눠 가지는 것이 스테이트 샤딩의 기본 원리이다. 원하는 데이터가 있으면, 해당 샤드에 접근하여 빠르게 열람할 수 있어 블록체인에 대한 부담을 덜어주며, 빠른 데이터 검색이 가능하다.<ref name="스물"></ref> |
− | # 계정 기반 모델( | + | # 계정 기반 모델(account-based model)로 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지한다. |
# 교차분할 트랜잭션을 수행하지 못하도록 제한이 되어 있다. | # 교차분할 트랜잭션을 수행하지 못하도록 제한이 되어 있다. | ||
# 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 이상 오프라인 샤드에 대한 트랙재션의 유효성을 검사하지 못한다. | # 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 이상 오프라인 샤드에 대한 트랙재션의 유효성을 검사하지 못한다. | ||
− | # 오프라인 샤드를 유지하기 위해 백업 노드를 | + | # 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협이 있다. |
− | # 네트워크가 한 번씩 재편성될 때 | + | # 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때 까지 전체 시스템을 사용할 수 없게 될 수도 있다. |
− | * '''적응 스테이트 샤딩'''( | + | * '''적응 스테이트 샤딩'''(adaptive state sharding) |
− | : 중앙 집중식 | + | : 중앙 집중식 상대방보다 처리량 비교로 블록체인 샤딩을 위한 최적의 접근 방식은 세 가지 샤딩 유형 (네트워크 / 통신, 트랜잭션 / 프로세싱, 상태 / 스토리지) 모두의 이점이 있다. 확장성 및 처리량 증가에 대한 엘론드의 접근 방식으로 적응 스테이트 샤딩은 세 가지 샤딩 유형을 모두 샤드 내부의 통신을 개선하고, 병렬 처리를 통해 성능을 높이고, 스토리지를 줄이며 거의 선형으로 확장하는 솔루션으로의 결합을 말한다. 사용 가능한 리소스 유효성 검사기 노드 및 네트워크 사용량에 따라 샤드 수가 동적으로 변경되도록 하면 처리량뿐만 아니라 효율성에도 큰 영향을 미치는데, 적응 상태 샤딩 메커니즘은 샤드 수가 계산되면 이진 트리 구조를 기반으로 한다. 이 숫자는 계정 주소를 샤드에 결정적으로 매핑하는 데 사용되고, 샤드의 트랜잭션 발송은 발신자와 수신자 계정 주소를 지정된 샤드에 매핑하여 결정적으로 수행된다. 솔루션의 대부분의 선형적인 확장성은 중앙 집중식 솔루션의 처리량을 능가한다. |
* '''커뮤니케이션 오버헤드'''(communication overhead) | * '''커뮤니케이션 오버헤드'''(communication overhead) | ||
− | : 샤드간 커뮤니케이션 오버헤드를 줄이는 방법은 | + | : 샤드간 커뮤니케이션 오버헤드를 줄이는 방법은 사용자들이 샤드간 트랜잭션을 제한해야 한다. 예를 들면, 엘리스가 밥과 직접 거래 하는 것이 허용되지 않고 거래를 해야 한다면, 엘리스는 샤드에 계정을 보유해야 한다. 샤드간 소통을 완전히 제거하지만, 플랫폼의 사용성이 제한될 수 있다. |
* '''데이터 유효성'''(data availability) | * '''데이터 유효성'''(data availability) | ||
− | : 특정 샤드가 공격을 받고 제어 불능에 빠진다면, 시스템의 상태는 모든 샤드에 걸쳐 | + | : 특정 샤드가 공격을 받고 제어 불능에 빠진다면, 시스템의 상태는 모든 샤드에 걸쳐 복제하지 않아 네트워크는 제어 불능 샤드에 속한 트랜잭션들을 더 이상 검증할 수 없어 블록체인은 대규모 사용 불능이 되는데, 데이터 불능으로부터 네트워크를 조정하고 복구할 수 있는 기록 또는 백업 노드를 유지해야 한다. 노드들이 시스템의 전체 상태를 저장해야 하므로 중앙집권화의 위험을 불러올 수 있다. |
== 활용 == | == 활용 == | ||
[[파일:쿼크체인 글자.png|썸네일|300픽셀|'''쿼크체인'''(QuarkChain)]] | [[파일:쿼크체인 글자.png|썸네일|300픽셀|'''쿼크체인'''(QuarkChain)]] | ||
− | ===쿼크체인( | + | ===쿼크체인(quark chain)=== |
− | 스테이트 샤딩 기술 기반의 블록체인 플랫폼 중 하나인 [[쿼크체인]]이 [[체인링크]]와의 기술협업을 통해 실생활에서의 [[블록체인]] 적용하였으며, 체인 링크는 미들웨어 플랫폼으로 [[오라클]] 문제, 즉 블록체인 외부 데이터와 스마트 컨트랙트와의 연결할 때 생기는 문제를 해결해 주는 역할을 하는데, | + | 스테이트 샤딩 기술 기반의 블록체인 플랫폼 중 하나인 [[쿼크체인]] 이 [[체인링크]] 와의 기술협업을 통해 실생활에서의 [[블록체인]] 적용하였으며, 체인 링크는 미들웨어 플랫폼으로 [[오라클]] 문제, 즉 블록체인 외부 데이터와 스마트 컨트랙트와의 연결할 때 생기는 문제를 해결해 주는 역할을 하는데, 체인 링크는 이 과정을 분산화시켜 더욱더 보안성 있고 편리하게 외부 데이터를 블록체인 내부로 입력할 수 있게 도와준다. 체인 링크는 [[구글]], 오라클, 국제은행간 통신협정(SWIFT)등과 같은 주요 기업들과 함께 협력하여 이미 글로벌 시장에서는 유명한 기업으로 쿼크체인은 [[스마트컨트랙트]] 기능을 넘어 온체인[[트랜잭션]]을 통해 사용자의 일상에서 더 많은 분야에 진입할 수 있게 되며 쿼크체인 네트워크의 개발자들은 디앱(Dapp)을 블록체인 외부의 데이터에 성공적으로 연결함으로써 더 많은 산업 애플리케이션에 효과적으로 활용될 수 있고 체인 링크는 스마트 컨트랜트가 오프체인 데이터, 웹 API, 전통 은행 결제 등에 안전하게 접속하게 해주는 블록체인 오라클 네트워크로, 가트너(gartner)와 같은 유명 독립 리서치 기관들로부터 지속해서 최고의 블록체인 기술로 선정되어 왔으며, 주요 고객으로는 구글, 오라클, 국제은해간 통신협정이 있다. 쿼크체인은 페이스북과 구글에서 샤딩 기술을 적용한 개발자 출신 [[치조우]] 대표가 미국에 설립한 스테이트 샤딩 기반의 블록체인 플랫폼이다. 메인넷을 출시하였으며 이미 비자 네트워크에 가까운 5만5천 이상의 TPS를 달성하여 블록체인 기술의 가능성을 입증해오고 있는 대표적인 블록체인 플랫폼이다.<ref>QuarkChain, 〈[http://a.to/19QkwgD 스테이트샤딩 블록체인 플랫폼 쿼크체인, 체인링크와 기술협업]〉, 《네이버》, 2019-07-26 </ref> 쿼크체인은 페이스북과 구글에서 샤딩 기술을 적용하고 개선한 경험이 있는 치조우 대표가 미국 실리콘 밸리에 설립한 블록체인 기업으로, 스테이트 샤딩 기술을 적용해 확장성과 유연성을 모두 잡은 유일한 블록체인 프로젝트로 업계에서 인정을 받고 있다.<ref>이경훈 기자, 〈[https://kr.thenodist.com/articles/36737 스테이트샤딩 블록체인 플랫폼 쿼크체인, 빗썸 상장]〉, 《더노디스트》, 2019-08-07 </ref> {{자세히|쿼크체인}} |
[[파일:이더리움 글자.png |썸네일|300픽셀|'''이더리움'''(Ethereum)]] | [[파일:이더리움 글자.png |썸네일|300픽셀|'''이더리움'''(Ethereum)]] | ||
− | === 이더리움( | + | === 이더리움(ethereum)=== |
− | [[이더리움]] 샤딩은 각 샤드가 계정별로 트랜잭션을 나눠 처리하고 승인한다. 블록체인 네트워크 참여자의 모든 주소를 일정한 | + | [[이더리움]] 샤딩은 각 샤드가 계정별로 트랜잭션을 나눠 처리하고 승인한다. 블록체인 네트워크 참여자의 모든 주소를 일정한 개수로 잘라 각 덩어리를 하나의 연방으로 구성하는 방식으로 이더리움의 경우에는 전체 계좌에서 0x00부터 시작되는 계정들은 1번 샤드에서 관리하고 0x01부터 시작하는 계정은 2번 샤드에서 관리하며, 샤드 1에 속하는 요청자가 트랜잭션을 발생시키면 해당 트랜잭션은 샤드 1의 오퍼레이션 노드로 전파되고 블록 제한자, 실행자, 검증자의 검증을 거치고 이상이 없으면, 샤드 1에 들어 있는 EVM이 컨트랙트의 코드를 실행시키고 스테이트 변경함수를 통해 기존 스테이트는 새로운 값으로 변경된다. 작업증명(PoW)방식을 쓰는 이더리움은 스테이트를 단일 방식으로 처리하고 있고, 이더리움의 마지막 로드맵인 세레니티에서는 지분증명(PoS)의 합의 알고리즘이 적용됨과 동시에 1,024개의 샤드가 연쇄 파이프처럼 건설된다. 스테이트로 통하는 통로가 한 개에서 1,024개로 추가 개방돼 스테이트를 구역마다 나눠 관리하게 된다. 질리카의 네트워크 샤딩으로 각 샤드가 모든 샤드의 상태를 알 수 있지만, 이더리움의 스테이트 샤딩은 각 샤드가 자신의 상태만을 알 수 있고, 데이터 저장도 한 샤드만 하면 돼서 속도는 더 빠르다.<ref>강민승 기자, 〈[https://www.mk.co.kr/news/economy/view/2018/12/788276/ 블록체인 성능 향상에 필수 `샤딩`…"쪼개라, 빨라질 것이니"]〉, 《매일경제》, 2018-12-18 </ref> {{자세히|이더리움}} |
− | ===엘론드( | + | ===엘론드(elrond)=== |
− | [[엘론드]]는 [[질리카]]( | + | [[엘론드]]는 [[질리카]](zilliqa)와 비교하여 [[트랜잭션 샤딩]] 뿐만 아니라 스테이트 샤딩도 사용하여 샤딩의 한계를 넓혔다. 엘론드는 [[작업증명]](PoW) 메커니즘을 완전히 제거하고 합의를 위해 [[확률적 지분증명]](SPoS)을 사용한다. 두 아키텍처 모두 자체 [[스마트 계약]] 엔진을 구축하고 있지만, 엘론드는 블록체인 간의 상호운용성을 달성하기 위해 [[이더리움]](EVM)을 목표로 한다. 질리카가 구현해낸 샤딩은 [[네트워크 샤딩]](network sharding)으로 네트워크만 샤딩을 진행하고, 네트워크에 들어온 노드들을 여러 샤드에 할당하고 연산 능력을 높여 TPS를 높이는 것이다. 트랜잭션 처리는 샤딩을 통해 분할적/병렬적으로 하여 저장은 스테이트 샤딩과 다르지만, 기존의 방식과는 다르지 않다. 이더리움이 구현하고자 하는 샤딩과는 다른 샤딩으로 이더리움의 샤딩은 스테이트 샤딩이며, 차이점으로는 누가 더 샤딩을 진행 하는 것에 있다.<ref>경욱'S DOODLE, 〈[https://tconomy.io/1707 질리카 백서 분석하기 (1)]〉, 《티코노미》, 2018-09-29 </ref> |
* '''스테이트 샤딩 아키텍처 검증''' | * '''스테이트 샤딩 아키텍처 검증''' | ||
− | : 엘론드 프로토 이프 PoC-v0.5는 기본적으로 직접 메시징, 정보 방송 및 채널 | + | : 엘론드 프로토 이프 PoC-v0.5는 기본적으로 직접 메시징, 정보 방송 및 채널 통신을 위한 통신 p2p 모듈이 포함된 기술 백본으로 슈노르(schnorr)방식, 발라레(bellare)및 네븐(neven)의 블록에 대한 다중 서명 방법과의 거래에 대한 서명 및 확인을 처리하는 암호화 모듈, 서로 다른 데이터 유형(블록, 트랜잭션, 계정 등)이 서로 연결되어 시스템에 저장되는 방법을 정의하고 설명하는 데이터 모듈, 일관성과 보안을 보장하기 위해 네트워크를 통해 상태를 복제하면서 트랜잭션을 처리하고 블록을 조립하는 데 사용되는 실행 엔진; 체계적인 부트스트랩 프로세스와 적절한 타임아웃을 보장하는 동기화 및 시간 통과 관점에 사용되는 연대기 모듈, 라운드 로빈 환경에서 기본 컨센서스를 사용하는 컨센서스 모듈로, 모든 샤드에서 독립적인 컨센서스 그룹을 실행하여 블록을 제안하고 검증 할 수 있으며, 통신 주제를 사용하고 샤드 및 크로스 샤드 트랜잭션을 모두 사용할 수 있는 샤딩 모듈이 있다.<ref>엘론드 공식 홈페이지 - https://elrond.com/technology </ref> |
* '''엘론드 제로원 테스트넷''' | * '''엘론드 제로원 테스트넷''' | ||
− | : 2019년 5월에 | + | : 2019년 5월에 출시하였고, 적응 스테이트 샤딩, 안전한 스테이크 컨센서스 증명, 트랜잭션을 위한 슈노르서명, 랜덤 시드 생성을 위한 BLS서명 및 블록 서명을 위한 수정된 BLS 멀티 시그먼트로 구성된다. 관점을 설정하는 메트릭은 대기 시간, 대역폭 제한, 매우 제한된 컴퓨팅 성능 4기가 바이트의 메모리를 가진 평균 듀얼 코어 CPU, 다른 지리적 위치에 있는 별도의 시스템에서 각 유효성 검사기 노드 실행과 같다. |
{{인용문| | {{인용문| | ||
테스트 넷 사양 : <br> | 테스트 넷 사양 : <br> | ||
54번째 줄: | 54번째 줄: | ||
== 문제점 == | == 문제점 == | ||
− | 중앙화의 문제와 보안성의 문제를 가지게 되고, 보안의 문제는 1% 어택(Attack)의 문제가 생길 수 있으며, 100개의 샤드 시스템에서는 오직 1%의 해시 비율(Hash Rate)로 샤드를 지배할 수 있다. | + | 중앙화의 문제와 보안성의 문제를 가지게 되고, 보안의 문제는 1% 어택(Attack)의 문제가 생길 수 있으며, 100개의 샤드 시스템에서는 오직 1%의 해시 비율(Hash Rate)로 샤드를 지배할 수 있다. 샤드 간의 커뮤니케이션이 너무 빈번하게 일어난다면 커뮤니케이션으로 인한 지연시간의 문제가 발생하고, 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 이상 오프라인 샤드에 대한 트랙재션의 유효성을 검사하지 못한다. 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협이 있으며, 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때 까지 전체 시스템을 사용할 수 없게 될 수도 있고, 계정 기반 모델(Account-Based Model)로 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지하며, 교차분할 트랜잭션을 수행하지 못하도록 제한이 되어 있다. |
− | 한 샤드의 연결이 끊어질 경우 네트워크에 문제가 생길 수 있으며, 보안성 문제로는 하나의 샤드에 악성 노드가 모이는 것을 방지하려면 네트워크를 주기적이고 무작위로 셔플해야 하며, 노드를 | + | 한 샤드의 연결이 끊어질 경우 네트워크에 문제가 생길 수 있으며, 보안성 문제로는 하나의 샤드에 악성 노드가 모이는 것을 방지하려면 네트워크를 주기적이고 무작위로 셔플해야 하며, 노드를 셔플하려고 하면 다른 노드의 상태를 알아야 하는데, 스테이트 샤딩은 자신의 상태밖에 모르기 때문에 셔플을 할 수 없고, 악성 노드 방지가 어렵다.<ref>Ki Oh, 〈[https://zchats.info/Zilliqa_Korean?page=84 이더가 샤딩을 구현하면 질리카는?]〉, 《Zilliqa Сhats》, 2018-09-17 </ref> |
== 해결방안 == | == 해결방안 == | ||
− | 빠른 샤드 전환 이 | + | 빠른 샤드 전환 이 돼야 하는데, 샤드에 대한 공격 성공 가능성을 줄이고자 한다면 검증자를 빠르게 전환해야 한다. 이전부터 look ahead time을 두어 검증자가 자신이 맡을 샤드 블록을 미리 동기화시킨다. 미리 동기화하기 위해서는 동기화할 자료를 줄여서 빠르게 검증자를 준비할 수 있는 무국적 고객(stateless client)을 제안하는 이유는 블록 헤더만을 저장하는데 블록 헤더만을 저장하기 때문에 거래에 대한 검증은 불가능하고, 거래 검증을 하려면 거래를 만들 때, 검증에 필요한 증거를 첨부해야 하며, 영지 식을 사용하여, Witness의 크기를 줄이는 방법도 있다. 자료의 가용성으로는 모두가 무국적 고객이라면 블록의 내용을 손실할 수 있어 누군가는 상태(state)를 저장하고 있어야 하며, 적절한 보상과 검증(Proof of Custody)가 필요하다. 어부(Fisherman) 딜레마는 이레이저 코딩(Erasure Coding)으로 해결 가능하다. 난수 생성으로는 난수를 사용하여 검증자를 샤드에 배정하는데, 공격자가 난수를 예측하거나 조작하여 샤딩보안에 문제가 생기면, 기존의 란다오(RANDAO) 난수 생성방식을 VDF(Verigiable DelayFunction)을 사용한다. |
− | 많은 샤드가 공격이나 | + | 많은 샤드가 공격이나 실패 점에서 회복 중일 때 멈추지 말아야 한다. 네트워크는 새로운 노드들을 계속 수용하고 그들을 임의로 서로 다른 샤드에 할당해야 하며, 네트워크는 재편되어야 한다. 스테이트 샤딩의 경우에 재편하기가 까다로운데, 각각의 샤드가 상태의 일부만을 유지하며, 네트워크를 모두 함께 재구성하는 것은 동기화가 완성될 때까지 전체 시스템의 불능을 불러와 정지 상태를 피하고자, 네트워크는 노드가 제거되기 전에 오래된 여러 노드를 가질 수 있도록 점진적으로 재구성해야 한다. 새로운 노드가 샤드에 들어오면, 노드가 샤드의 상태와 동기화하기 위한 충분한 시간을 갖도록 하는 이유는 들어온 노드가 모든 단일 트랜잭션을 바로 거부하게 된다. |
{{각주}} | {{각주}} |
2019년 8월 28일 (수) 14:14 판
스테이트 샤딩(state sharding)은 상태가 지정된 상황에서, 특정 노드가 특정 상태값만 저장하고 있는 샤딩 기술을 말한다. 상태 샤딩이라고도 한다.
목차
개요
스테이트 샤딩은 계정 기반 모델(account-based model)이다. 스테이트 샤딩은 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지하지만, 교차분할 트랜잭션을 수행하지 못하도록 제한되고 있다. 스테이트 샤딩은 시스템의 상태가 모든 샤드 에 복제되어 있지 않기 때문에 네트워크는 더 오프라인 샤드에 대한 트랜잭션의 유효성을 검사하지 못하게 된다. 만약 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협이 될 수 있다. 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때까지 전체 시스템을 사용할 수 없게 된다.[1]
샤드를 동적으로 구현하여, 샤드의 지갑 주소 공간을 나눠서 샤드의 분할은 각 주소 공간의 절반씩만을 차지하고 연결되어 유지되며, 형제 노드에 해당 상태를 유지하여, 차후 병합을 할 때 대기시간을 줄인다. 중복 메커니즘에 따라 엘론드의 구조는 수십만 TPS의 처리량을 가지면서도 지속할 수 있다.[2]
특징
계정 기반 모델을 이어가면 스마트 컨트랙스는 도입하지 않고, 스테이트 샤드 블록체인의 경우에 특정 샤드는 상태의 일부만을 유지한다. 예를 들어서, 두 개의 샤드와 두 개의 사용자 계정만을 가진다면, 각각 엘리스(Alice)와 밥(Bob)이라 하고, 각 샤드는 한 명의 사용자 잔고를 보유한다. 엘리스가 밥에게 지불하는 트랜잭션을 생성하면, 트랜잭션은 첫 번째 샤드가 처리하게 된다. 트랜잭션이 검증되면 밥의 새로운 계좌에 대한 정보가 두 번째 샤드와 공유돼야 하고, 두 계정이 서로 다른 샤드에 의해 처리되면, 빈번한 샤드 간 커뮤니케이션과 상태 교환을 수반한다. 샤드간 소통이 스테이트 샤드로 얻는 퍼포먼스를 해치지 않도록 해야 한다.[3]
샤딩은 데이터베이스 기술의 중요한 일부로써 데이터베이스를 파티션화 하여 빠르게 데이터를 주고받기 위함인데 샤딩 기술은 질리카, 쿼크체인, 이더리움 등에서 블록체인 확장성 이슈에 대해 해결방안으로 불리며, 이중 엘론드와 같은 스테이트 샤딩을 사용할 것은 이더리움이다. 이더리움의 초 블록의 개수는 2018년 6월 20일 기준 5823023개이고 블록 1개당 크기가 1킬로 바이트 라고 가정하면 이더리움 블록체인의 총 크기는 5.8기가바이트가 되는 것이다. 블록 타임은 계속 줄어들고 있는데 블록이 계속 쌓이게 되면 블록체인은 무거워질 것이다. 1만 명이 해당 블록을 나눠 갖는다고 가정하면, 한 사람당 582개의 블록을 가지게 되며, 1인당 블록을 1,000개를 가지게 되면, 5,823명이 블록을 나눠 가지는 것이 스테이트 샤딩의 기본 원리이다. 원하는 데이터가 있으면, 해당 샤드에 접근하여 빠르게 열람할 수 있어 블록체인에 대한 부담을 덜어주며, 빠른 데이터 검색이 가능하다.[2]
- 계정 기반 모델(account-based model)로 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지한다.
- 교차분할 트랜잭션을 수행하지 못하도록 제한이 되어 있다.
- 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 이상 오프라인 샤드에 대한 트랙재션의 유효성을 검사하지 못한다.
- 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협이 있다.
- 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때 까지 전체 시스템을 사용할 수 없게 될 수도 있다.
- 적응 스테이트 샤딩(adaptive state sharding)
- 중앙 집중식 상대방보다 처리량 비교로 블록체인 샤딩을 위한 최적의 접근 방식은 세 가지 샤딩 유형 (네트워크 / 통신, 트랜잭션 / 프로세싱, 상태 / 스토리지) 모두의 이점이 있다. 확장성 및 처리량 증가에 대한 엘론드의 접근 방식으로 적응 스테이트 샤딩은 세 가지 샤딩 유형을 모두 샤드 내부의 통신을 개선하고, 병렬 처리를 통해 성능을 높이고, 스토리지를 줄이며 거의 선형으로 확장하는 솔루션으로의 결합을 말한다. 사용 가능한 리소스 유효성 검사기 노드 및 네트워크 사용량에 따라 샤드 수가 동적으로 변경되도록 하면 처리량뿐만 아니라 효율성에도 큰 영향을 미치는데, 적응 상태 샤딩 메커니즘은 샤드 수가 계산되면 이진 트리 구조를 기반으로 한다. 이 숫자는 계정 주소를 샤드에 결정적으로 매핑하는 데 사용되고, 샤드의 트랜잭션 발송은 발신자와 수신자 계정 주소를 지정된 샤드에 매핑하여 결정적으로 수행된다. 솔루션의 대부분의 선형적인 확장성은 중앙 집중식 솔루션의 처리량을 능가한다.
- 커뮤니케이션 오버헤드(communication overhead)
- 샤드간 커뮤니케이션 오버헤드를 줄이는 방법은 사용자들이 샤드간 트랜잭션을 제한해야 한다. 예를 들면, 엘리스가 밥과 직접 거래 하는 것이 허용되지 않고 거래를 해야 한다면, 엘리스는 샤드에 계정을 보유해야 한다. 샤드간 소통을 완전히 제거하지만, 플랫폼의 사용성이 제한될 수 있다.
- 데이터 유효성(data availability)
- 특정 샤드가 공격을 받고 제어 불능에 빠진다면, 시스템의 상태는 모든 샤드에 걸쳐 복제하지 않아 네트워크는 제어 불능 샤드에 속한 트랜잭션들을 더 이상 검증할 수 없어 블록체인은 대규모 사용 불능이 되는데, 데이터 불능으로부터 네트워크를 조정하고 복구할 수 있는 기록 또는 백업 노드를 유지해야 한다. 노드들이 시스템의 전체 상태를 저장해야 하므로 중앙집권화의 위험을 불러올 수 있다.
활용
쿼크체인(quark chain)
스테이트 샤딩 기술 기반의 블록체인 플랫폼 중 하나인 쿼크체인 이 체인링크 와의 기술협업을 통해 실생활에서의 블록체인 적용하였으며, 체인 링크는 미들웨어 플랫폼으로 오라클 문제, 즉 블록체인 외부 데이터와 스마트 컨트랙트와의 연결할 때 생기는 문제를 해결해 주는 역할을 하는데, 체인 링크는 이 과정을 분산화시켜 더욱더 보안성 있고 편리하게 외부 데이터를 블록체인 내부로 입력할 수 있게 도와준다. 체인 링크는 구글, 오라클, 국제은행간 통신협정(SWIFT)등과 같은 주요 기업들과 함께 협력하여 이미 글로벌 시장에서는 유명한 기업으로 쿼크체인은 스마트컨트랙트 기능을 넘어 온체인트랜잭션을 통해 사용자의 일상에서 더 많은 분야에 진입할 수 있게 되며 쿼크체인 네트워크의 개발자들은 디앱(Dapp)을 블록체인 외부의 데이터에 성공적으로 연결함으로써 더 많은 산업 애플리케이션에 효과적으로 활용될 수 있고 체인 링크는 스마트 컨트랜트가 오프체인 데이터, 웹 API, 전통 은행 결제 등에 안전하게 접속하게 해주는 블록체인 오라클 네트워크로, 가트너(gartner)와 같은 유명 독립 리서치 기관들로부터 지속해서 최고의 블록체인 기술로 선정되어 왔으며, 주요 고객으로는 구글, 오라클, 국제은해간 통신협정이 있다. 쿼크체인은 페이스북과 구글에서 샤딩 기술을 적용한 개발자 출신 치조우 대표가 미국에 설립한 스테이트 샤딩 기반의 블록체인 플랫폼이다. 메인넷을 출시하였으며 이미 비자 네트워크에 가까운 5만5천 이상의 TPS를 달성하여 블록체인 기술의 가능성을 입증해오고 있는 대표적인 블록체인 플랫폼이다.[4] 쿼크체인은 페이스북과 구글에서 샤딩 기술을 적용하고 개선한 경험이 있는 치조우 대표가 미국 실리콘 밸리에 설립한 블록체인 기업으로, 스테이트 샤딩 기술을 적용해 확장성과 유연성을 모두 잡은 유일한 블록체인 프로젝트로 업계에서 인정을 받고 있다.[5] 쿼크체인에 대해 자세히 보기
이더리움(ethereum)
이더리움 샤딩은 각 샤드가 계정별로 트랜잭션을 나눠 처리하고 승인한다. 블록체인 네트워크 참여자의 모든 주소를 일정한 개수로 잘라 각 덩어리를 하나의 연방으로 구성하는 방식으로 이더리움의 경우에는 전체 계좌에서 0x00부터 시작되는 계정들은 1번 샤드에서 관리하고 0x01부터 시작하는 계정은 2번 샤드에서 관리하며, 샤드 1에 속하는 요청자가 트랜잭션을 발생시키면 해당 트랜잭션은 샤드 1의 오퍼레이션 노드로 전파되고 블록 제한자, 실행자, 검증자의 검증을 거치고 이상이 없으면, 샤드 1에 들어 있는 EVM이 컨트랙트의 코드를 실행시키고 스테이트 변경함수를 통해 기존 스테이트는 새로운 값으로 변경된다. 작업증명(PoW)방식을 쓰는 이더리움은 스테이트를 단일 방식으로 처리하고 있고, 이더리움의 마지막 로드맵인 세레니티에서는 지분증명(PoS)의 합의 알고리즘이 적용됨과 동시에 1,024개의 샤드가 연쇄 파이프처럼 건설된다. 스테이트로 통하는 통로가 한 개에서 1,024개로 추가 개방돼 스테이트를 구역마다 나눠 관리하게 된다. 질리카의 네트워크 샤딩으로 각 샤드가 모든 샤드의 상태를 알 수 있지만, 이더리움의 스테이트 샤딩은 각 샤드가 자신의 상태만을 알 수 있고, 데이터 저장도 한 샤드만 하면 돼서 속도는 더 빠르다.[6] 이더리움에 대해 자세히 보기
엘론드(elrond)
엘론드는 질리카(zilliqa)와 비교하여 트랜잭션 샤딩 뿐만 아니라 스테이트 샤딩도 사용하여 샤딩의 한계를 넓혔다. 엘론드는 작업증명(PoW) 메커니즘을 완전히 제거하고 합의를 위해 확률적 지분증명(SPoS)을 사용한다. 두 아키텍처 모두 자체 스마트 계약 엔진을 구축하고 있지만, 엘론드는 블록체인 간의 상호운용성을 달성하기 위해 이더리움(EVM)을 목표로 한다. 질리카가 구현해낸 샤딩은 네트워크 샤딩(network sharding)으로 네트워크만 샤딩을 진행하고, 네트워크에 들어온 노드들을 여러 샤드에 할당하고 연산 능력을 높여 TPS를 높이는 것이다. 트랜잭션 처리는 샤딩을 통해 분할적/병렬적으로 하여 저장은 스테이트 샤딩과 다르지만, 기존의 방식과는 다르지 않다. 이더리움이 구현하고자 하는 샤딩과는 다른 샤딩으로 이더리움의 샤딩은 스테이트 샤딩이며, 차이점으로는 누가 더 샤딩을 진행 하는 것에 있다.[7]
- 스테이트 샤딩 아키텍처 검증
- 엘론드 프로토 이프 PoC-v0.5는 기본적으로 직접 메시징, 정보 방송 및 채널 통신을 위한 통신 p2p 모듈이 포함된 기술 백본으로 슈노르(schnorr)방식, 발라레(bellare)및 네븐(neven)의 블록에 대한 다중 서명 방법과의 거래에 대한 서명 및 확인을 처리하는 암호화 모듈, 서로 다른 데이터 유형(블록, 트랜잭션, 계정 등)이 서로 연결되어 시스템에 저장되는 방법을 정의하고 설명하는 데이터 모듈, 일관성과 보안을 보장하기 위해 네트워크를 통해 상태를 복제하면서 트랜잭션을 처리하고 블록을 조립하는 데 사용되는 실행 엔진; 체계적인 부트스트랩 프로세스와 적절한 타임아웃을 보장하는 동기화 및 시간 통과 관점에 사용되는 연대기 모듈, 라운드 로빈 환경에서 기본 컨센서스를 사용하는 컨센서스 모듈로, 모든 샤드에서 독립적인 컨센서스 그룹을 실행하여 블록을 제안하고 검증 할 수 있으며, 통신 주제를 사용하고 샤드 및 크로스 샤드 트랜잭션을 모두 사용할 수 있는 샤딩 모듈이 있다.[8]
- 엘론드 제로원 테스트넷
- 2019년 5월에 출시하였고, 적응 스테이트 샤딩, 안전한 스테이크 컨센서스 증명, 트랜잭션을 위한 슈노르서명, 랜덤 시드 생성을 위한 BLS서명 및 블록 서명을 위한 수정된 BLS 멀티 시그먼트로 구성된다. 관점을 설정하는 메트릭은 대기 시간, 대역폭 제한, 매우 제한된 컴퓨팅 성능 4기가 바이트의 메모리를 가진 평균 듀얼 코어 CPU, 다른 지리적 위치에 있는 별도의 시스템에서 각 유효성 검사기 노드 실행과 같다.
테스트 넷 사양 :
샤딩 설정 : 5 개의 샤드 + 메타 체인
노드 : 500 x AWS T2.medium (검증기 노드) 및 AWS 12 x t2.large (관찰자 노드)
샤드 당 노드 : 83
컨센서스 : 6 초마다 BLS 라운드 (각 샤드)
컨센서스 크기 : 63 노드 (각 샤드)
최대 블록 크기 : ~ 800KB
Peak-TPS : ~ 12500
문제점
중앙화의 문제와 보안성의 문제를 가지게 되고, 보안의 문제는 1% 어택(Attack)의 문제가 생길 수 있으며, 100개의 샤드 시스템에서는 오직 1%의 해시 비율(Hash Rate)로 샤드를 지배할 수 있다. 샤드 간의 커뮤니케이션이 너무 빈번하게 일어난다면 커뮤니케이션으로 인한 지연시간의 문제가 발생하고, 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 이상 오프라인 샤드에 대한 트랙재션의 유효성을 검사하지 못한다. 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협이 있으며, 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때 까지 전체 시스템을 사용할 수 없게 될 수도 있고, 계정 기반 모델(Account-Based Model)로 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지하며, 교차분할 트랜잭션을 수행하지 못하도록 제한이 되어 있다.
한 샤드의 연결이 끊어질 경우 네트워크에 문제가 생길 수 있으며, 보안성 문제로는 하나의 샤드에 악성 노드가 모이는 것을 방지하려면 네트워크를 주기적이고 무작위로 셔플해야 하며, 노드를 셔플하려고 하면 다른 노드의 상태를 알아야 하는데, 스테이트 샤딩은 자신의 상태밖에 모르기 때문에 셔플을 할 수 없고, 악성 노드 방지가 어렵다.[9]
해결방안
빠른 샤드 전환 이 돼야 하는데, 샤드에 대한 공격 성공 가능성을 줄이고자 한다면 검증자를 빠르게 전환해야 한다. 이전부터 look ahead time을 두어 검증자가 자신이 맡을 샤드 블록을 미리 동기화시킨다. 미리 동기화하기 위해서는 동기화할 자료를 줄여서 빠르게 검증자를 준비할 수 있는 무국적 고객(stateless client)을 제안하는 이유는 블록 헤더만을 저장하는데 블록 헤더만을 저장하기 때문에 거래에 대한 검증은 불가능하고, 거래 검증을 하려면 거래를 만들 때, 검증에 필요한 증거를 첨부해야 하며, 영지 식을 사용하여, Witness의 크기를 줄이는 방법도 있다. 자료의 가용성으로는 모두가 무국적 고객이라면 블록의 내용을 손실할 수 있어 누군가는 상태(state)를 저장하고 있어야 하며, 적절한 보상과 검증(Proof of Custody)가 필요하다. 어부(Fisherman) 딜레마는 이레이저 코딩(Erasure Coding)으로 해결 가능하다. 난수 생성으로는 난수를 사용하여 검증자를 샤드에 배정하는데, 공격자가 난수를 예측하거나 조작하여 샤딩보안에 문제가 생기면, 기존의 란다오(RANDAO) 난수 생성방식을 VDF(Verigiable DelayFunction)을 사용한다.
많은 샤드가 공격이나 실패 점에서 회복 중일 때 멈추지 말아야 한다. 네트워크는 새로운 노드들을 계속 수용하고 그들을 임의로 서로 다른 샤드에 할당해야 하며, 네트워크는 재편되어야 한다. 스테이트 샤딩의 경우에 재편하기가 까다로운데, 각각의 샤드가 상태의 일부만을 유지하며, 네트워크를 모두 함께 재구성하는 것은 동기화가 완성될 때까지 전체 시스템의 불능을 불러와 정지 상태를 피하고자, 네트워크는 노드가 제거되기 전에 오래된 여러 노드를 가질 수 있도록 점진적으로 재구성해야 한다. 새로운 노드가 샤드에 들어오면, 노드가 샤드의 상태와 동기화하기 위한 충분한 시간을 갖도록 하는 이유는 들어온 노드가 모든 단일 트랜잭션을 바로 거부하게 된다.
각주
- ↑ sobly tv, 〈샤딩이란? 쉽게 이해해보자〉, 《미디엄》, 2018-09-03
- ↑ 2.0 2.1 스물네마리, 〈적응형 스테이트 샤딩을 주 무기로 한 Elrond 〉, 《블록체인허브》, 2018-06-21
- ↑ phuzion7, 〈블록체인 샤딩의 3가지 형태: BlockChain Sharding〉, 《데일리 코인뉴스》, 2018-12-31
- ↑ QuarkChain, 〈스테이트샤딩 블록체인 플랫폼 쿼크체인, 체인링크와 기술협업〉, 《네이버》, 2019-07-26
- ↑ 이경훈 기자, 〈스테이트샤딩 블록체인 플랫폼 쿼크체인, 빗썸 상장〉, 《더노디스트》, 2019-08-07
- ↑ 강민승 기자, 〈블록체인 성능 향상에 필수 `샤딩`…"쪼개라, 빨라질 것이니"〉, 《매일경제》, 2018-12-18
- ↑ 경욱'S DOODLE, 〈질리카 백서 분석하기 (1)〉, 《티코노미》, 2018-09-29
- ↑ 엘론드 공식 홈페이지 - https://elrond.com/technology
- ↑ Ki Oh, 〈이더가 샤딩을 구현하면 질리카는?〉, 《Zilliqa Сhats》, 2018-09-17
참고자료
- 엘론드 공식 홈페이지 - https://elrond.com/technology
- sobly tv, 〈샤딩이란? 쉽게 이해해보자〉, 《미디엄》, 2018-09-03
- QuarkChain, 〈스테이트샤딩 블록체인 플랫폼 쿼크체인, 체인링크와 기술협업〉, 《네이버》, 2019-07-26
- Las 낙서장, 〈Sharding (샤딩)〉, 《티스토리》, 2019-04-09
- 경욱'S DOODLE, 〈질리카 백서 분석하기 (1)〉, 《티코노미》, 2018-09-29
- phuzion7, 〈블록체인 샤딩의 3가지 형태: BlockChain Sharding〉, 《데일리 코인뉴스》, 2018-12-31
- 강민승 기자, 〈블록체인 성능 향상에 필수 `샤딩`…"쪼개라, 빨라질 것이니"〉, 《매일경제》, 2018-12-18
- 이경훈 기자, 〈스테이트샤딩 블록체인 플랫폼 쿼크체인, 빗썸 상장〉, 《더노디스트》, 2019-08-07
- phuzion7, 〈블록체인 샤딩의 3가지 형태: BlockChain Sharding〉, 《데일리 코인뉴스》, 2018-12-31
같이보기