검수요청.png검수요청.png

"샤딩"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글 (208.91.109.50(토론)의 편집을 Asadal의 마지막 판으로 되돌림)
69번째 줄: 69번째 줄:
  
 
* '''로커스체인 샤딩'''
 
* '''로커스체인 샤딩'''
[[파일:로커스체인 로고.png|썸네일|200픽셀|'''로커스체인'''(Locus Chain)]]
+
: [[로커스체인]](Locus Chain)의 다이내믹 샤딩 기술(또는 동적 샤딩 기술)은 노드가 부담해야 하는 네트워크 부하를 샤드 수만큼 나누고 네트워크 전체의 트랜잭션 처리량을 샤드 수만큼 늘리면서 알고리즘으로 샤드를 재배치하여 서로간의 균형을 유지하는 기술이다. 각 샤드는 독립적으로 BFT합의알고리즘을 수행하고, 어카운트는 한번에 하나의 샤드에서만 처리되는 방식이기 때문에 노드의 네트워크 사용량은 줄어들고 트랜잭션 처리량은 노드 숫자가 늘어날수록 이에 비례하여 늘어난다. 또한 로커스체인은 원장 구조가 어카운트 별(AWTC: Account-wise Transaction Chain)로 되어 있어 샤드간 불균형이 일어났을 경우 계정 단위로 샤드를 재배치하여 샤드의 수와 사이즈, 밸리데이터 비율 등을 조절하는 것이 용이하다. 여기에 추가적으로 원장을 쪼개는 스테이트 샤딩을 더해 스토리지 사용량 역시 샤드 수만큼 나눌 계획이라고 한다. 로커스체인은 DAG상에서 BFT합의알고리즘을 구현<ref>여용준, <[http://www.enewstoday.co.kr/news/articleView.html?idxno=1273849 로커스체인, 세계 최초 'DAG-BFT 확정합의 알고리즘' 블록체인 기술 구현 성공]>, 《이뉴스투데이》, 2019-02-21</ref>해냈기 때문에 일반 샤딩이 가졌던 문제점을 해결했다고 주장한다.
[[파일:로커스체인 글자.png|썸네일|300픽셀|'''로커스체인'''(Locus Chain)]]
 
 
 
[[파일:블룸테크놀로지 글자.png|썸네일|300픽셀|'''[[블룸테크놀로지]]'''(Bloom Technology)]]
 
[[파일:이상윤.jpg|썸네일|200픽셀|'''[[이상윤]]''' 대표이사]]
 
[[파일:김세정.jpg|썸네일|200픽셀|'''[[김세정]]''' 공동창업자]]
 
 
 
'''로커스체인'''<!--로커스 체인|로커스체인|Locus Chain-->(Locus Chain)은 PC 및 휴대폰 등 널리 보급된 일반적인 디바이스로 구성된 블록체인 네트워크 상에서 초당 수천 트랜잭션을 처리하는 성능을 목표로 개발 중인 블록체인 플랫폼을 위한 [[암호화폐]]이다. 로커스체인의 슬로건은 "실제 사용을 위한 암호화폐"이다. 로커스체인의 창시자는 [[블룸테크놀로지]] 회사의 '''[[이상윤]]'''이다.
 
 
 
위 목표를 달성하기 위한 중요한 기술적인 문제점은 [[네트워크]] 전송량과 [[트랜잭션]] 계산량이다. 로커스체인에서는 네트워크 전송량과 계산량을 줄이는 방법으로서 [[샤딩]]을 통한 서브네트워크 구성 및 분산처리를 채택하고 있다. [[샤드]] 내 [[합의 알고리즘]]은 [[비잔틴 장애 허용]](BFT) 계열을 응용하여 트랜잭션 확정까지의 시간을 단축한다. 원장 구조는 [[방향성 비순환 그래프]](DAG) 계열 데이터 구조를 채택하여 리얼타임 동적 샤딩 및 [[프루닝]]을 구현하고 있다.
 
 
 
로커스체인은 이더리움 기반의 [[ERC-20]] 토큰인 [[로커스]](LOCUS)를 발행했으며 글로벌 암호화폐 거래소인  [[비트레이드]], [[라토큰]]에 상장되었고 추후 메인넷이 발표되면 로커스 코인으로 [[아토믹스왑]](atomic swap)을 지원할 예정이다.
 
 
 
== 개요 ==
 
'''로커스체인'''(Locus Chain)은 '''탈중앙화'''에 충실하면서 동시에 '''성능''' 및 '''확장성'''의 문제를 해결하려 한다. 먼저 로커스체인은 탈중앙화의 중요한 요소로서 누구나 쉽고 공정하게 참여할 수 있어야 한다는 점을 중시한다. 이를 위해 현재의 일반적인 PC와 휴대폰 및 IoT디바이스의 네트워크 성능, 저장 공간, CPU속도 및 계산량의 한계를 이해하고, 이 위에서 무리 없이 동작하는 알고리즘과 데이터 구조를 개발하여 이를 로커스체인 전체 시스템으로서 구현해 나가는 방향으로 연구가 진행되고 있다.
 
 
 
먼저, 원장 구조로서 처리 성능을 담보하기 어려운 선형구조 대신 비선형구조인 '''DAG(Directed Acyclic Graph)'''를 채용하였다. 로커스체인의 '''AWTC(Account-wise Transaction Chain)'''구조는 어카운트/유저를 중심으로 트랜잭션 그래프를 구성하여 각 트랜잭션을 관리하는 DAG구조이다. 각 트랜잭션의 전후 관계와 다른 트랜잭션들과의 관계가 그래프상에 직접 배치됨으로 고속 참조가 가능하면서도, 어카운트 단위로 정보를 총합 관리함으로써 샤드간 이동과 통합을 가능하게 하는 데이터 구조이다.
 
 
 
다음, 로커스체인의 합의 알고리즘은 PoS(Proof-of-Stake)를 기반으로 하는 '''BFT합의'''를 채택하고 있다. PoW(Proof-of-Work)와  Nakamoto합의가 가지는 비효율적인 CPU계산량 소모와 불확정성을 피하기 위한 목적이다. BFT합의의 고속화를 위해, 로커스체인은 전체 네트워크 노드 중 합의에 참여하는 노드를 공정한 방법으로 랜덤하게 샘플링하는 방식을 채택하고 있다. 이 랜덤 선출에는 각 노드의 로커스체인 네트워크에 대한 여러 가지 기여도가 반영된다. PoS를 통해 코인의 지분 소유량이 반영될 수 있고, 노드의 온라인 시간 등 코인량 이외의 내용도 반영이 가능하다.
 
 
 
그리고, 네트워크 부하를 줄이기 위한 목적으로 '''다이내믹 샤딩(Dynamic Sharding)'''이 도입되어 있다. 각 샤드는 독립적으로 BFT합의 알고리즘을 수행하며, 하나의 어카운트는 한번에 하나의 샤드에서만 처리된다. 따라서 로커스체인에서는 노드 숫자가 늘어나면 이에 비례하여 트랜잭션 처리량이 늘어난다.
 
 
 
또한, 각 노드가 꼭 저장하여아만 하는 원장의 크기를 줄이기 위한 프루닝(pruning)방법으로써 '''[[베리파이어블 프루닝]]'''(Verifiable Pruning) 기술이 개발, 채택되어 있다. 베리파이어블 프루닝은 삭제된 과거의 데이터와 현재 가지고 있는 데이터간의 정합성을 암호학적인 방법으로 검증 가능한 알고리즘이다. 이를 통해 현재의 트랜잭션을 합의하는 데 당장 필요하지 않은 데이터는 스토리지에서 삭제할 수 있고, 이 상태에서도 과거 데이터와의 정합성 검증과 해쉬값 참조가 가능하다. 나아가 이 베리파이어블 프루닝 기술을 응용하여, 새로 네트워크에 참여한 노드가 비교적 소량의 최근 데이터만을 다운로드 받아서 짧은 시간 안에 곧바로 네트워크에 기여가 가능한 구조가 구축되어 있다. 그리고 [[사물인터넷]](IoT) 장치 등 제한된 저장 용량만을 갖는 디바이스에서도 로커스체인의 완전 동작이 가능할 것으로 보인다.
 
 
 
위와 같은 로커스체인의 특징은, IoT상의 디바이스 등 아주 적은 성능의 장치들이 제약없이 노드에 참여할 수 있게 하여, [[머신투머신]](M2M) 거래, 소매점 단말기, [[사물인터넷]](IoT), [[자율주행 자동차]] 등의 미래산업에 블록체인이 바로 적용될 수 있게 한다. 로커스체인의 개발자들은 초당 수십억 건의 이벤트를 처리해야 하는 게임 엔진 개발 경험을 살려 데이터 원장구조에서부터 합의알고리즘, 스토리지 및 네트워크 사용량을 최적화하기 위한 기술까지 로커스체인 프로젝트에 모두 담으려 하고 있다.
 
 
 
== 역사 ==
 
[[파일 : BloomTechnology_logo.png|썸네일|250픽셀|오른쪽|'''로커스체인'''(Locus Chain)의 개발을 맡고 있는 '''블룸테크놀로지'''(Bloom Technology) 로고]]
 
'실용가능한 퍼블릭 블록체인'을 목표로 로커스체인 개발을 책임지고 있는 [https://www.bloomtechnology.co.kr 블룸테크놀로지]는 한국게임산업의 1세대 개척자였던 이상윤 대표가 1994년 판타그램(Phantagram Limited)이라는 이름으로 설립한 회사이다. 판타그램은 파트너 회사인 [http://www.blueside.co.kr 블루사이드(Blueside Inc.)]와 함께 유명 게임 시리즈 '킹덤 언더 파이어(Kingdom Under Fire)', '나인티 나인 나이츠(Ninety Nine Nights)' 등을 만든 게임 엔진 개발회사이다. 20년 동안 판타그램은 마이크로소프트 사와 4개 이상의 콘솔 게임 타이틀을 성공적으로 출시했고 유수의 PC 게임 타이틀을 발표했다. 그중 '킹덤 언더 파이어: 크루세이더(Kingdom Under Fire: Crusaders)'는 2004년 대한민국게임대상을 수상하기도 했다. 하지만 킹덤 언더 파이어2는 약 1000억의 투자를 받았지만 10년이상 출시를 못하였고, 출시 후에도 흥행부진으로 심각한 경영난을 겪고있다. 게임 엔진 기술은 수십만 유저가 참여하여 실시간 초당 수십억개의 이벤트를 처리하기 위한 전문적인 기술로 블록체인과 같은 P2P 기술과 관련성이 높다. 판타그램은 3D 그래픽 최적화, 데이터 분산에 대한 기술력을 바탕으로 2017년 블록체인 개발 사업을 시작하고 2018년 법인명을 '블룸테크놀로지'로 변경했다. 블룸테크놀로지는 차세대 블록체인 플랫폼인 로커스체인의 개발을 맡았고 자회사인 '로커스체인 파운데이션(Locus Chain Foundation Pte. Ltd.)'은 사업전반을 맡고 있다.
 
 
 
== 주요인물 ==
 
* '''[[이상윤]]''': 로커스체인 파운데이션 대표 및 블룸테크놀로지 대표를 맡고 있다. 이상윤 대표는 10대였던 1987년 처음으로 8-bit PC상에서 상용 게임을 만들어 이를 한국과 일본에 판매했으며, 판타그램 및 블루사이드를 통해 "킹덤 언더 파이어" 게임시리즈를 비롯하여 [Forgotten Saga (PC)], [Kingdom Under Fire Crusaders (Xbox)], [Ninety Nine Nights (Xbox360)] 등을 디렉팅 및 프로듀싱하였다.
 
 
 
* '''[[김세정]]''' : 로커스체인의 공동창업자이다. 게임 개발사 [[블루사이드]]의 대표이기도 하다. 2007년에는 문화관광부 표창장을 받기도 했다.
 
 
 
* '''[[주영현]]''': 1998년 판타그램에 합류한 이후 드래곤플라이, 엔플레버, 블루사이드 등을 거치면서 게임 엔진 및 게임 기술 개발 디렉터를 역임했다. 블룸테크놀로지의 테크니컬 디렉터로서 로커스체인의 기술 개발을 책임지고 있다.
 
 
 
* '''[[이길호]]''': 1987년부터 게임 프로그래머로 일했으며 1994년 판타그램의 설립자 중 하나로 개발 책임 및 매니지먼트를 맡았다. 로커스체인에 합류해서는 암호 기술 및 매니지먼트를 돕고 있다.
 
 
 
* '''[[장순목]]''' : 30년 이상 개발경력을 가지고 있으며  와이디온라인 CTO , 디지타워 엔터테인먼트 CEO, 나인버드게임즈 CEO 등을 역임했다. 게임을 비롯해 보안시스템, 비전센서, 시뮬레이터,  AI, IOT 등의 개발 및 운용 경험이 있고 스크린야구와 관련된 특허 10여종의 발명자다.
 
 
 
* '''[[오구라 타케유키]]''': 20년 넘게 IT 업계에서 프로그래머로 활동했으며 개발 프로젝트의 최고 책임자를 역임했다. GPGPU 프로그램과 프로토타입 등에 풍부한 경험을 갖고 있으며 마이크로소프트, Dena, 그리고 기타 유수의 세계적인 IT 업체에서 수석 프로그래머로 활동했다.
 
 
 
* '''[[문영배]]''' : IMF 및 국제기구등에 블록체인 기반의 CBDC, 국내 기업들의 블록체인 기반 다양한 프로젝트에 컨설팅을 수행하고 있다. 한국블록체인협회 부회장을 역임중이다.
 
 
 
* '''[[스티브 오]]''' : 미국 스탠퍼드 로스쿨 법학 박사이고, 삼성전자 기업변호사와 한국마이크로소프트 법무팀 대표 변호사 등 국내외 수많은 유수 기업의 법률 고문 역할을 했다.
 
 
 
 
 
== 특징 ==
 
=== DAG-AWTC 원장구조 ===
 
[[파일 : DAG_AWTC.png|썸네일|400픽셀|오른쪽|선형체인구조와 '''로커스체인'''(Locus Chain)의 '''DAG-AWTC''' 비교]]
 
'''고속 대량 처리를 위한 원장 구조''': AWTC원장 구조는 로커스체인의 고속 처리 및 분산 처리에 있어 중요한 기술적 요소이다. 비트코인, 이더리움 등의 많은 블록체인이 선형 체인구조를 갖고 있는 반면 로커스체인은 DAG(Directed Acyclic Graph) 기반의 비선형 원장구조인 AWTC(Account-Wise Transaction Chain)를 사용한다. 이 구조는 이름 그대로 어카운트 단위로 트랜잭션을 관리하는 병렬형 구조이며 [[나노코인]]의 [[블록격자]](block lattice)와 유사한 형태를 가진다. 선형 체인구조는 이전 블록에 다음 블록이 연결될 수 있는 곳이 한곳밖에 없고, 여러 노드가 같은 연결지점에 동시에 블록을 추가하려 하는 병목이 발생한다. 반면 로커스체인의 DAG-AWTC를 비롯한 블록 격자 구조는 트랜잭션을 추가하는 지점이 어카운트 수만큼 존재하고, 그 지점에 대해서는 소유 어카운트만이 독점적으로 기록이 가능하므로 충돌이 발생하지 않는다. 또한 트랜잭션을 추가한 어카운트가 자명하므로 어카운트 소유자 본인이 악의적인 사용자가 아니라면 트랜잭션은 추가 즉시 거의 확정된다. 이러한 성질을 갖는 로커스체인의 원장구조는 기존 블록체인이 가지고 있던 거래처리 지연 문제를 근본적으로 해결하기 위한 주요 기술적 특징 중 하나이다.
 
 
 
=== Locus BFT 합의알고리즘 ===
 
[[파일 : 로커스체인합의알고리즘.png|썸네일|400픽셀|오른쪽|'''로커스체인'''(Locus Chain)의 합의알고리즘]]
 
'''확정 완결적 합의''': DAG-AWTC 구조는 기본적으로 어카운트간 충돌이 없고 이후에도 결과가 뒤집힐 확률이 거의 없어 소매처리시간(수 초) 이내에 거래가 확정된다. 대부분의 경우 트랜잭션은 정상적으로 추가되고 확정되지만, 만약 어카운트 소유자가 악의적이라면 더블스펜딩과 같은 문제를 발생시키는 것이 가능하다. 로커스체인에서는 수분 간격으로 정기적으로 BFT합의를 실시, 이 기간 동안 문제가 없었다는 사실을 확정하거나, 만약 문제가 생겼을 경우 이를 해결한다.
 
 
 
AWTC구조에서 더블 스펜딩은 한 어카운트의 트랜잭션 체인에 동일한 일련번호를 갖는 트랜잭션이 동시에 둘 이상 발생하는 경우로 명확하게 정의된다. 동시에 발생한 서로 다른 트랜잭션이 네트워크를 거쳐 전파되는 과정에서 통과한 각 노드상에서, 노드가 갖는 지분(PoS)에 따른 선택(pseudo-vote)이 발생하면서, 더 많은 지지를 받은 트랜잭션이 1차적으로 결정된다(비확정합의). 그 다음, 확률적지분증명(Stochastic PoS)을 통해 선출된 BFT참여 노드가 주기적(2분 정도 간격)으로 원장 상태를 확정해 거래의 완결성을 최종 확보한다(확정합의).
 
 
 
DAG는 병렬형 구조이기 때문에 각 노드가 병렬적으로 원장을 갱신한다. 따라서 현재 리얼타임의 절대적인 원장 상태를 특정하는 것은 불가능하다. 로커스체인은 샤드 내에서 데이터가 충분히 전송되는 데 필요한 시간을 감안하여, 이 시간만큼 약간의 과거 시점에 대한 합의를 시도함으로써 DAG 상에서 BFT 확정합의를 최초로 구현했다고 2019년 2월 언론에 [https://www.locuschain.com/ko/socialView?blogSeq=77&blogLanguage=ko&blogCategory=press 발표]하였다. 로커스체인의 합의 알고리즘은 실행 중에도 새로운 트랜잭션의 발생을 막지 않아 DAG의 고속처리에 간섭하지 않으므로 기존의 stop-and-go방식이었던 BFT의 성능적 단점을 개선하였다.
 
 
 
기술적으로 DAG와 BFT를 동시 구현하는 것이 유의미한 이유는, 이것이 이후 스토리지 문제와 네트워크 부하 문제를 해결할 프루닝 및 샤딩 기술의 전제조건이 되기 때문이다. 블룸테크놀로지는 BFT 확정합의 방식의 DAG-AWTC 원장 시스템에 대한 특허 출원을 신청한 상태로 알려져 있다.
 
 
 
=== Stochastic PoS 기반 공정한 커미티 선출 ===
 
'''완전한 탈중앙화''': 로커스체인은 [[알고랜드]]의 무허가형 순수지분증명방식과 유사한 알고리즘을 사용한다. 더 자세히 설명하자면 로커스체인은 [[ 확률적지분증명 ]] (Stochastic PoS: 지분이 많을수록 커미티로 선출될 확률이 높아지는 방식)을 기반으로 무작위검증가능함수(VRF: Verifiable Random Function)에 의해 매 라운드마다 합의 알고리즘에 참여하는 새로운 프로포저 커미티를 선출한다. 누가 프로포저로 선출될지 미리 알 수 없기 때문에 해킹, 담합 등 악의적인 공격이 어렵다. 또한 최근 투표 참여 횟수 및 네트워크 참여도(온라인 시간 등)에 기반해 매 라운드마다 새로운 밸리데이터 커미티를 선출, 프로포저가 제안한 라운드 상태에 대해 PBFT 방식에 따라 2회의 투표를 거쳐 결과를 확정한다. 이러한 방법은 합의에 참여할 노드(프로포저, 밸리데이터)를 특정하거나 미리 예측할 수 없기 때문에 악의적 공격에 의한 조작이 어려워져 합의결과의 공정성과 네트워크의 안정성(security)이 확보된다고 로커스체인은 주장한다.
 
 
 
=== 베리파이어블 프루닝 ===
 
[[파일:배리파이어블프루닝.png|썸네일|400픽셀|오른쪽|'''로커스체인'''(Locus Chain)의 '''베리파이어블 프루닝''']]
 
 
 
'''노드 저장 부하감소''': 로커스체인은 일정 기간(하루) 이전의 과거 데이터를 능동적으로 로컬환경에서 삭제(프루닝)하여 로컬 데이터의 양을 줄이면서도, 블록체인의 데이터 검증 기능에 지장을 주지 않는 '''[[베리파이어블 프루닝]]'''(Verifiable Pruning) 기술을 개발했다고 2019년 7월초 [https://www.locuschain.com/ko/socialView?blogSeq=187&blogLanguage=ko&blogCategory=tech 발표]하였다.
 
 
 
늘어나는 원장 사이즈 문제<ref>현재의 저속이 아닌 비자 카드의 최대 처리량이라고 하는 4k TPS(Transaction Per Second)에 이르는 실용적인 성능을 내는 블록체인을 가정하고, 트랜잭션을 한 번 전송하는 데 드는 용량이 0.5kB 정도라고 가정했을 때 노드가 감당해야 하는 원장 사이즈는 매일 약 172GB 정도씩 늘어난다. (계산법: 0.5kB/Tx * 4kTx/sec * 3.6ksec/hour * 24hour/day = 172.8GB/day)</ref>를 해결하기 위해 오래된 데이터를 단순 삭제하여 원장의 크기를 줄이는 일반적인 프루닝과 달리, 로커스체인의 베리파이어블 프루닝은 '''스큐드머클트리(Skewed Merkle Tree)''' <ref>스큐드머클트리는 이진 머클트리와 링크드리스트의 복합체로서 머클트리의 데이터 검증 능력을 링크드리스트에 적용시킨 구조이다.</ref> 구조를 사용하여 과거 대부분의 데이터가 로컬 환경에 존재하지 않는 상황에서도 데이터의 정당성을 검증할 수 있는 기술이다.
 
 
 
로커스체인은 관련된 모든 데이터를 전부 보유하지 않아도 필요한 부분의 해시값만으로 정당성 검증이 가능하기 때문에 로컬 노드의 데이터 저장량이 대폭 줄어든다. 시중의 SD카드정도의 저장량으로 노드 운용이 가능하다는 사실은, 누구나 부담 없이 로커스체인 네트워크에 참여할 수 있는 중요한 기반이 되고, 이는 높은 탈중앙화를 달성하는 데 중요한 요소이다.
 
 
 
여기에 추가로 로커스체인은 초당 수천 트랜잭션이 수년 이상 쌓인 상황에서도 먼 과거에 발생한 데이터를 효율적으로 검증할 수 있도록 필요한 계산 정보량을 지수함수적으로 단축시키는 알고리즘인 '''계층적 스큐드머클트리(Hierarchical Skewed Merkle Tree)'''를 도입했다고 한다. 이로써 노드의 스토리지 부담을 줄이면서 동시에 고속 검증이 가능한 블록체인을 구현하였다고 한다.
 
 
 
반면에, 일부 노드 상에만 데이터가 보존되는 경우 주목도가 낮은 데이터는 아무도 저장하지 않고 사라져 버리는 경우가 발생할 수 있다는 우려가 있다. 이런 우려에 대해, 로커스체인에서는 우선 각 어카운트의 과거 이력(history)은 기본적으로 어카운트 자신 또는 자신이 위임한 노드가 저장하므로, 소유자 본인은 언제나 자신의 과거 이력의 열람 및 백업이 가능하므로 대부분의 경우 문제가 없다고 한다. 이것으로 불충분하다면 로커스체인 외부의 과거 데이터의 저장에 특화된 별도 기구에 저장을 맡길 수 있는데, 예를 들어 수백테라바이트의 저장공간을 가진 디렉토리 서비스 운영 사업자가 코인을 대가로 과거 트랜잭션 데이터의 열람 서비스를 제공하는 등의 전개를 생각할 수 있다. 로커스체인 외부에서 읽은 과거의 데이터도 모든 로커스체인 노드에서 검증할 능력이 있다는 것을 이용하여, 저장과 검증 기능을 각각 잘하는 쪽에 일임함으로써 굳이 로커스체인 위에 모든 데이터를 저장하지 않고도 블록체인의 모든 이점을 효율적으로 누릴 수 있을 것이라고 한다.
 
 
 
블룸테크놀로지는 베리파이어블 프루닝에 대한 특허 출원을 신청한 상태로 알려져 있다.
 
{{인용문|"'''로커스체인'''은 '''베리파이어블 프루닝'''을 통해 이미 원장에서 지워진 데이터라고 해도 나중에 참ㆍ거짓의 증명이 가능한 데이터 구조를 가지게 함으로써 극단적인 원장 사이즈 축소가 가능해졌으며, ​일자형체인 구조가 아닌 '''DAG-AWTC''' 원장구조를 사용해 수초 내 거의 모든 요청을 처리할 수 있게 됐다"<ref>여용준 기자, <[http://www.enewstoday.co.kr/news/articleView.html?idxno=1318677 로커스체인, 플랫폼 기술 집약한 엔터프라이즈 메인넷 개발]>, 《이뉴스투데이》, 2019-07-04</ref><br>
 
&nbsp; - 주영현 테크니컬 디렉터}}
 
 
 
=== 다이내믹 샤딩 ===
 
[[파일: 다이내믹샤딩.png|썸네일|400픽셀|오른쪽|'''로커스체인'''(Locus Chain)의 '''다이내믹샤딩''']]
 
'''계산량 증가 및 노드부하감소''': 로커스체인은 노드가 부담하는 네트워크 사용량<ref>고속 블록체인의 초당 처리량을 4K TPS로 가정했을 때 노드가 감당해야 하는 네트워크 통신량은 초당 2MB(=0.5kB/Tx * 4kTx/sec )정도이다. 이는 일반 가정집에서 사용하는 네트워크 대역폭이 100Mbit/s라고 할 때 전체의 20%에 해당하는 수치이다. 이것은 언뜻 작은 수치로 보일 수 있지만 P2P 가십 프로토콜에서 통신을 주고받는 리피트(repeat)를 고려하면 초당 20MB 정도로 일반인이 가정집 PC로 노드에 참여하기에는 어렵다고 볼 수 있다.</ref>을 낮추고 네트워크 전체의 트랜잭션 처리량을 높이기 위해 다이내믹 샤딩을 도입한다고 한다.
 
 
 
[[샤딩]]이란 네트워크 혹은 원장 상태를 샤드(shard) 단위로 작게 쪼개는 기술이다. 일반적인 샤딩은 통신 비율이 샤드 수에 비례해 증가하고 샤드 간 데이터 참조 및 검증이 어렵다는 단점이 있다. 또한 샤드마다 트랜잭션의 빈도, 노드의 수 등에서 차이가 날 경우 네트워크 안정성에 불균형이 발생할 수 있다. 로커스체인은 이런 문제를 해결하기 위해 네트워크 사용량에 따라 적절한 샤드 수를 조절하는 한편 알고리즘으로 샤드간 균형을 유지하는 다이내믹 샤딩(Dynamic Sharding: 동적 샤딩)을 적용해 성능이 한쪽으로 치우치는 것을 방지하겠다는 계획이다. 로커스체인은 원장 구조가 어카운트 별(AWTC)로 되어 있기 때문에 샤드간 불균형이 일어났을 경우 계정 단위로 샤드를 재배치하여 샤드의 수와 사이즈, 밸리데이터 비율 등을 조절하는 것이 용이해 보인다. 다이내믹 샤딩을 적용하면 한 노드가 감당해야 하는 네트워크 사용량은 샤드 수를 N 으로 할 때 2/N 으로 줄어들고 동일 노드의 네트워크 사용량 대비 네트워크 전체 TPS는 그만큼 증가하게 되는데, 여기에 추가적으로 원장을 쪼개는 스테이트 샤딩을 더해 스토리지 사용량 역시 샤드 수만큼 추가적으로 나눌 계획.  2020년 3월 개발 완료하였다
 
7월 초순경 다이나믹샤딩까지 적용된 퍼블릭블록체인 공개테스트가 진행될 예정이다.
 
 
 
([http://m.dtoday.co.kr/news/articleView.html?idxno=352580&fbclid=IwAR30zqNTAGkNR_qaLY4bevg5gs5E1aVbYzV22Hn0L2MAwa9ElcEue60EG1g#_enliple 기사]가 올라왔다.
 
 
 
=== 양자내성 암호서명 ===
 
'''암호학적 미래대비성''': 블록체인 프로젝트에 큰 위협이 되는 것 중 하나가 바로 양자컴퓨터의 등장이다. 양자컴퓨터 시대가 도래하면 현재 주류로 사용되고 있는 많은 서명 알고리즘이 무효화될 것으로 예상되고, 이에 전 세계 많은 암호학자들이 양자컴퓨터에 대비한 양자내성암호(PQC) 연구를 진행하고 있다. 다만 지금까지 발표된 양자내성암호는 현재의 비 양자내성 암호(non-PQC)에 비해 계산량과 데이터량이 막대하여, 개인용 PC나 모바일기기에서 처리하기에는 성능 부담이 있다. 그리고 양자내성암호는 아직 표준이 정착되지 않아 실제 사용했을 때 안전한가에 대한 수학적, 기술적 검증이 부족한 점이 있다.
 
 
 
로커스체인은 이러한 상황을 고려하여 서명 체계를 마스터 서명과 노멀 서명으로 이원화했다고 한다. 일반적인 트랜잭션에서는 현재의 암호체계를 적용한 노멀 서명과 이를 위한 키(페어)를 사용하고, 노멀키를 분실하거나 타인에게 노출되었을 때는 양자내성암호를 적용한 마스터 서명을 사용해 노멀키를 교체하는 방식이다. 마스터 서명은 꼭 필요한 경우 이외에는 사용하지 않기 때문에 양자내성암호의 데이터량 및 계산량 부담이 적다. 그리고 노멀 서명은 키 이외에 알고리즘 자체를 플러그인 방식으로 교환하는 것이 가능하다. 향후 양자컴퓨터가 상용화되거나 개인용PC로 양자내성암호 알고리즘을 처리 가능한 시대가 오면 로커스체인은 노멀 서명 자체를 양자내성 알고리즘으로 교체하는 것이 가능하다고 주장한다.
 
 
 
그리고 양자내성암호에 대한 안전성 자체도 아직 증명되지 않았으므로 마스터 서명은 당분간 양자내성암호와 기존의 암호시스템을 병렬로 사용한 하이브리드 체계로 운영한다는 계획이다. 향후 양자내성암호서명 알고리즘에 취약점이 발견되어도 현용 암호서명 알고리즘으로 커버가 가능하며, 나아가 문제가 없는 마스터 서명 알고리즘으로 넘어갈 수 있는 migration방식을 연구하고 있다고 한다.
 
 
 
=== 데이터 위변조 검증 API ===
 
로커스체인 개발팀은, 블록체인 기술의 중요한 포인트는 데이터의 보관보다 제출된 데이터의 위변조와 정당성을 오픈된 환경에서 누구나 검증 가능하다는 점에 있다고 주장한다. 많은 블록체인 프로젝트에서 기존의 DBMS(Database Management System) 대신 블록체인 원장에 직접 데이터를 담으려는 노력을 하고 있으나, 로커스체인 개발팀의 주장은 블록체인 플랫폼이 기존 DBMS의 대량의 데이터 저장과 완전 무결한 트랜잭션 처리 기능을 대체하는 것은 어렵다는 입장이다. 대신, 로커스체인은 다른 DBMS등의 방법으로 저장된 데이터의 정당성과 위변조 여부를 먼 미래 시점에서도 효율적으로 검증 가능한 능력을 갖고 있다고 주장한다.
 
 
 
이러한 입장에서 로커스체인은, 사용 단체가 개별적으로 독자 블록체인 시스템을 구축하지 않아도, 로커스체인의 위변조 검증API를 통해 데이터의 위변조를 검증할 수 있도록 하는 플랫폼을 개발하였다고 2019년 7월 [https://www.locuschain.com/ko/socialView?blogSeq=196&blogLanguage=ko&blogCategory=press 발표] 하였다.
 
 
 
== 전망 ==
 
 
 
사람 사이의 직접 거래뿐만이 아니라 사람-디바이스, 디바이스-디바이스 간의 거래 비율이 기하급수적으로 늘어나는 미래에는 탈중앙화의 중요성이 수면 위로 떠오를 것이다. 미국 IT 시장조사 기업인 IDC(International Data Corporation)는 앞으로 연결될 IoT 디바이스의 수가 2025년까지 416억개이며 모든 디바이스가 만들어내고 소비하는 데이터 양이 79.4제타바이트(ZB)에 달할 것으로 전망했다.
 
<ref> Michael Shirer, [The Growth in Connected IoT Devices Is Expected to Generate 79.4ZB of Data in 2025, According to a New IDC Forecast], IDC, 18 Jun 2019</ref> 머신끼리 서로 수없이 주고받는 통신과 여기에서 파생되는 데이터를 처리하려면 해킹, 담합, 조작 등 범죄에 악용되거나 단일장애지점(single point of failure)이 발생할 가능성이 있는 현재의 중앙화된 서버-클라이언트 방식은 사용하기 어려워 보인다.
 
 
 
로커스체인의 주장대로 저용량 기기에서도 블록체인이 충분히 동작할 수 있도록 개발이 된다면, 블록체인 기술의 실용화에 도움이 될 것으로 전망된다.
 
특히, 국가화폐의 경우 대량의 거래를 감당할 수 있는 고성능의 블록체인 기술이 필요하기 때문에 크게 도움이 될 것으로 기대된다.
 
 
 
==평가==
 
 
 
로커스체인은 퍼블릭 블록체인 플랫폼을 목표로 하고 있으며, 대부분의 블록체인에서 사용하는 일자형 블록구조가 아닌 DAG원장구조에서 PoS+BFT합의를 취하고 있다.
 
이로인해 탈중앙화 기반의 확장성과 고성능이 담보되고 있다. 이외에도 네트워크 부하를 줄여주는 다이나믹 샤딩과 원장의 크기를 줄여주는 베리파이어블 프루닝 기술은 한차원 높은 고난이도의 기술로 보인다. 현재 테스트넷이 오픈되어 운영중이다.
 
 
 
 
 
== 관련영상 ==
 
 
 
<youtube width="450">GvsA-zDOFQI</youtube>
 
<youtube width="450">bLvFh5GAQac</youtube>
 
<youtube width="450">-Zjev82LSzU</youtube>
 
<youtube width="450">bzTEj-4p594</youtube>
 
<youtube width="450">lUCMHkGoTg4</youtube>
 
<youtube width="450">K2iXljBPTxc</youtube>
 
<youtube width="450">cUnIacGXC4I</youtube>
 
<youtube width="450">ARPc51UrKqg</youtube>
 
 
 
 
 
{{각주}}
 
 
 
== 참고자료 ==
 
 
 
* 로커스체인 공식 홈페이지: https://www.locuschain.com 
 
* 로커스체인 백서: https://www.locuschain.com/en/whitepaper
 
* 로커스인사이트: https://www.locuschain.com/en/social
 
* 블룸테크놀로지 공식홈페이지: https://www.bloomtechnology.co.kr
 
* [https://youtu.be/bLvFh5GAQac 로커스체인 소개 영상]
 
* [https://youtu.be/-Zjev82LSzU 베리파이어블 프루닝 기술 소개 영상]
 
* [https://youtu.be/bzTEj-4p594 AWTC 원장 구조 및 확장성 관련 영상]
 
* [https://www.youtube.com/watch?v=cUnIacGXC4I&t=1207s 실용 가능한 고성능 퍼블릭 블록체인…'로커스 체인' 소개 (1부)]
 
* [https://www.youtube.com/watch?v=ARPc51UrKqg&t=7s 실용 가능한 고성능 퍼블릭 블록체인…'로커스 체인' 소개 (2부)]
 
* [https://www.locuschain.com/ko/socialView?blogSeq=186&blogLanguage=ko&blogCategory=movie 로커스체인기술밋업 하이라이트 영상]
 
* [https://www.locuschain.com/ko/socialView?blogSeq=185&blogLanguage=ko&blogCategory=movie 로커스체인 기술밋업 개발현황 소개 영상]
 
* 임영택 기자, 〈[https://www.mk.co.kr/news/it/view/2018/02/136480/ 블록체인 연구개발 전문업체 '블룸테크놀로지' 출범]〉, 《매일경제》, 2018-02-28
 
* 김은지 기자, 〈[http://www.enewstoday.co.kr/news/articleView.html?idxno=1177492 인터뷰-'킹덤언더파이어 신화' 이상윤 "로커스체인, 이더리움 잇는 기술혁신 할 것"]〉, 《이뉴스투데이》, 2018-04-10
 
* 김다운 기자, 〈[http://www.inews24.com/view/1092893 '로커스체인 파운데이션 2018 런칭쇼', 두바이서 성황리 종료]〉, 《아이뉴스24》, 2018-05-04
 
* 〈[https://cointelegraph.com/press-releases/fast-light-and-flexible-the-next-generation-blockchain-platform-locus-chain-has-emerged Fast, Light and flexible, the Next-Generation Blockchain Platform 'Locus Chain' Has Emerged ... !!]〉, 《Cointelegraph》, 2018-06-25
 
* 홍하나 기자, 〈[http://www.ddaily.co.kr/news/article/?no=170420 로커스체인 파운데이션, IES 선정 '2018 우수 글로벌 리더십 어워드' 수상]〉, 《디지털데일리》, 2018-07-06
 
* 방은주 기자, 〈[http://www.zdnet.co.kr/view/?no=20180905220620 로커스체인, 싱가포르서 '역대 최대 월드 서밋' 개최]〉, 《지디넷코리아》, 2018-09-05
 
* 서진욱 기자, 〈[https://news.mt.co.kr/mtview.php?no=2018092009513040421 '블록체인 서울' 성황리 폐막…'블록체인 3.0' 화두 던졌다]〉, 《머니투데이》, 2018-09-20
 
* 여용준 기자, 〈[http://www.enewstoday.co.kr/news/articleView.html?idxno=1273849 로커스체인, 세계 최초 'DAG-BFT 확정 합의 알고리즘' 블록체인 기술 구현 성공], 《이뉴스투데이》, 2019-02-21
 
* 정두용 기자, 〈[http://www.greened.kr/news/articleView.html?idxno=95048 로커스체인-리드텍 '전략적 제휴 계약'…블록체인 기술로 웨어러블 시장 확대 추진]〉, 《녹색경제신문》, 2019-02-26
 
* 노진우 기자, 〈[http://www.wikileaks-kr.org/news/articleView.html?idxno=50945 로커스체인, 국제 스마트시티 엑스포에서 '선도적인 블록체인 기술 기업' 선정돼]〉, 《위키리크스 한국》, 2019-03-22
 
* 류순열 기자, 〈[http://www.upinews.kr/news/newsview.php?ncode=1065599151224065 세계무대서 자신감 드러낸 '로커스체인']〉, 《UPI뉴스》, 2019-04-05
 
* 이상일 기자, 〈[http://www.ddaily.co.kr/news/article/?no=180666 블룸테크놀로지, 로커스체인 밋업행사 성료]〉, 《디지털데일리》, 2019-04-26
 
* 여용준 기자, 〈[http://www.enewstoday.co.kr/news/articleView.html?idxno=1318677 로커스체인, 플랫폼 기술 집약한 엔터프라이즈 메인넷 개발]〉, 《이뉴스투데이》, 2019-07-04
 
* 류순열 기자, 〈[http://www.upinews.kr/news/newsview.php?ncode=1065596656344043 소리 없는 혁명…블록체인과 '소셜벤처'의 만남]〉, 《UPI뉴스》, 2019-07-18
 
* 〈[https://cointelegraph.com/press-releases/locus-chain-harbinger-of-the-credit-revolution Locus Chain, Harbinger of the Credit Revolution]〉, 《Cointelegraph》, 2019-07-25
 
* 유경석 기자, <[http://m.dtoday.co.kr/news/articleView.html?idxno=352580&fbclid=IwAR30zqNTAGkNR_qaLY4bevg5gs5E1aVbYzV22Hn0L2MAwa9ElcEue60EG1g#_enliple 로커스체인, 다이나믹 샤딩 구현…사용량 따라 저장]> , 《일간투데이》, 2020-03-06
 
* 장순관 기자, <[http://www.popsci.co.kr/news/articleView.html?idxno=11425 블룸테크놀로지 '로커스체인' 블록체인 기술의 날개 달다]>, 《파퓰러사이언스》, 2020-03-17
 
* 안재후 기자, <[http://www.fortunekorea.co.kr/news/articleView.html?idxno=12434 포스트 코로나 시대..언택트 경제, 블록체인 주목..블룸테크놀로지 로커스체인]>, <<포춘코리아>> , 2020-05-18
 
* 임민철 기자, <[http://www.upinews.kr/newsView/upi202006160079 "세계 최고 블록체인" 로커스체인, 이달말 공개 테스트]>, <<UPI뉴스>> , 2020-06-16
 
* 박동선 기자, <[https://www.etnews.com/20200617000143 블룸테크놀로지, 이달말 '로커스체인' 공개테스트 예정…'탈중앙-확장' 양립 특성]>, <<전자신문>>, 2020-06-17
 
* 장순관 기자, <[http://www.fortunekorea.co.kr/news/articleView.html?idxno=12638 블룸테크놀로지, 초고성능의 퍼블릭 블록체인 ‘로커스체인’ 테스트넷 글로벌 오픈]>, <<포춘코리아>>, 2020-07-14
 
 
 
== 같이 보기 ==
 
 
 
* [[블룸테크놀로지]]
 
* [[이상윤]]
 
* [[김세정]]
 
* [[확률적지분증명]]
 
* [[DAG]]
 
* [[BFT]]
 
* [[다이내믹 샤딩]]
 
* [[베리파이어블 프루닝]]
 
 
 
{{블록체인 플랫폼}}
 
{{암호화폐 역사}}
 
  
 
== 종류 ==
 
== 종류 ==

2020년 7월 17일 (금) 14:51 판

샤딩(sharding)

샤딩(sharding)이란 하나의 거대한 데이터베이스네트워크 시스템을 여러 개의 작은 조각으로 나누어 분산 저장하여 관리하는 것을 말한다. 이는 단일의 데이터를 다수의 데이터베이스로 쪼개어 나누는 걸 말하는데, 단일의 데이터베이스에서 저장하기 너무 클 때 사용하여 데이터를 구간별로 쪼개어 나눔으로써 노드에 무겁게 가지고 있던 데이터를 빠르게 검증할 수 있어 빠른 트랜잭션 속도를 향상시킬 수 있다. 샤딩을 통해 나누어진 블록들의 구간(epoch)을 샤드(shard)라고 부른다.[1]

개요

샤딩은 "조각내다"라는 뜻으로 데이터베이스 저장기법 중 하나이며, 전체 네트워크를 분할한 뒤 트랜잭션을 영역별로 저장하고 이를 병렬적으로 처리하여 블록체인에 확장성을 부여하는 온체인 솔루션으로 데이터를 샤드라는 단위로 나눠서 저장 및 처리한다. 샤딩 개념의 근원은 데이터베이스 샤딩에 있고, 데이터베이스 샤딩이란 대용량의 데이터를 처리하기 위해 테이블을 수평 분할하여 데이터를 분산 저장하고 처리하는 것이다.[2] 만약 10만큼의 데이터와 10명의 노드가 참여했다고 가정한다면 기존의 블록체인은 10명의 노드 개개인은 10만큼을 모두 가지고 있으면서 공유하지만, 샤딩은 10을 조각내서 10명의 노드 개개인은 1만큼씩만 보관함으로써 보관 데이터가 가벼워져 거래처리 속도가 크게 향상된다.[3]

등장배경

샤딩은 블록체인 시스템의 확장성(scalability) 문제를 해결하기 위한 방법의 하나이다. 확장성은 시간이 지남에 따라 생겨나는 변화를 받아들이는 능력이다.[4] 시간이 지남에 따라 블록체인 기반 서비스는 대체로 사용자 수가 증가하기 때문에, 확장성 문제란 결국 더 많은 사용자가 만들어내는 트랜잭션을 블록체인 시스템으로 처리할 수 있는 능력의 문제이다. 대개 블록체인의 확장성 지표로 TPS 를 사용한다. TPS는 Transaction per Second의 약자로서 1초당 처리할 수 있는 트랜잭션의 개수를 나타내는 단위이다. 기존비트코인이더리움 의 경우 확장성 문제가 심각하여, TPS를 획기적으로 증가시키기 위한 다양한 방법이 고안되고 있는데, 그 중 대표적인 것이 샤딩이다. 샤딩은 플라즈마, 라이덴 네트워크 등과 마찬가지로 확장성 문제를 해결하기 위해 제안된 솔루션이고, 플라즈마, 라이덴 네트워크는 오프체인 솔루션이지만 샤딩은 On-chain 솔루션이며, On-chain 솔루션이란 메인체인 자체의 프로토콜 을 변경시켜서 메인체인의 성능을 향상하는 방법을 말한다. On-chain 솔루션을 적용하기 위해서는 메인 네트워크의 하드 포크 가 필수적으로 Off-chain 솔루션이 메인체인 바깥에 다른 시스템을 추가하여 해결하기 때문에 하드 포크가 필요 없는 것과 대비 되는데 확장성 문제 솔루션 중 하나로, 이더리움이 POS (Proof of Stake) 합의 알고리즘으로 전환할 것을 기반으로 설계되었다.[2]

특징

샤딩은 관계형 데이터베이스에서 대량의 데이터를 처리하기 위해서 데이터를 파티셔닝 하는 기술로 파티셔닝은 DBMS 에서 지원하기도 하는데, 일부 DBMS에서는 지원하지 않으며, DBMS 레벨에서 데이터를 나누는 것이 아니고 데이터베이스 자체를 분할하는 방식으로 애플리케이션 레벨에서 구현해야 한다. 데이터베이스가 여러 파편으로 분할되고 서로 다른 서버에 저장되는 전통적인 데이터베이스 샤딩 개념에서 영감을 받은 확장성 기술이 샤딩으로 공개형 블록체인의 맥락에서, 네트워크에 올려진 트랜잭션은 네트워크상의 서로 다른 노드들로 이루어진 여러 샤드(shards)로 분할되어 각각의 노드는 들어오는 트랜잭션들의 일부만을 처리할 수 있게 되고, 네트워크상에서 병렬식으로 다른 노드들에서도 똑같이 실행되기에 네트워크를 여러 샤드로 쪼개면 동시에 더 많은 트랜잭션을 처리하고 증명할 수 있어 네트워크가 커질수록 점점 더 많은 트랜잭션 처리가 가능하게 되는 속성을 병렬식 확장(horizontal scaling)이라고 도 불린다.[5] 샤딩은 단일의 데이터베이스에서 저장하기 너무 클 때 사용되고 이렇게 데이터를 구간별로 쪼개어 나눔으로써 노드에 무겁게 가지고 있던 데이터를 빠르게 검증할 수 있어 빠른 트랜잭션 속도를 가질 수 있으며, 샤드란 샤딩을 통해 나누어진 블록들의 구간을 '샤드'라고 부른다.

  • 수평 분할(Horizontal Partitioning)
스키마(schema)가 같은 데이터를 두 개 이상의 테이블에 나누어 저장하는 디자인을 말하고, 가령 같은 주민 데이터를 처리하기 위해 스키마가 같은 '서현동 주민 테이블'과 '정자동 주민 테이블'을 사용을 뜻하며, 인덱스의 크기를 줄이고, 작업 동시성을 늘리기 위한 것이지만 보통 수평 분할을 한다고 했을 때는 하나의 데이터베이스 안에서 이루어지는 경우를 지칭한다.[6]
  • 샤딩의 장점
  1. 필요한 데이터만 빠르게 조회할 수 있기 때문에 쿼리 자체가 가볍다.
  2. 오래돼서 조회가 안 되는 데이터를 클라우드에 올리거나 별도의 디스크에 저장해서 운영상의 스토리지 이득을 볼 수 있다.
  • 샤딩의 문제점
블록체인 시스템의 확장성 문제를 해결하기 위해 등장한 기술이지만 샤딩을 적용할 경우 한 샤드 내에서의 전송이 아닌 여러 샤드 간의 전송은 절차가 훨씬 복잡하고 느려진다. 여러 샤드로 쪼갤수록 인터샤드 트랜잭션은 확률적으로 많아지는데 각 샤드는 자기 샤드의 데이터만 있고, 다른 샤드의 데이터는 가지고 있지 않으므로 샤드간 데이터를 어떻게 참조할 것인지, 어떻게 검증할 것인지 문제가 생겨서 알고리즘이 복잡해진다. 만약 이 단계에서 거래결과가 뒤집어지면 (비확정적합의) 상황은 더욱 복잡해지기 때문에 확정합의가 거의 필수이다.
또한 샤딩이 들어가게 되면 전체의 안정성은 보장이 된다고 하더라도 시간이 지나면 샤드간 불균형이 일어나 일부 샤드의 안정성이 취약해지는 문제가 발생할 수 있다. 샤드마다 트랜잭션의 빈도, 노드의 수, 밸리데이터의 비율 등에서 차이가 나기 때문에 한 번 샤드가 정해진 다음에도 샤드의 구성원을 재배치하여 샤드간 균형을 맞추는 알고리즘이 필요하다. 뿐만 아니라 예상했던 것보다 전체 트래픽이 높아질 경우, 처음 설정해둔 샤드의 수를 늘릴 필요가 있다. 한 번 쓰여진 데이터를 해쉬나 서명으로 묶어 위변조나 조작을 하지 못하도록 만들어진 분산원장구조에서는 샤드를 중간에 추가하는 등의 동적 샤딩 기술을 구현하기가 매우 어렵다.
확장성의 문제를 해결방책으로 나온 샤딩에 중앙화의 문제와 보안성의 문제를 가지게 되는데 보안의 문제에는 1% attack의 문제가 생길 수 있고, 100개의 샤드의 시스템에서는 오직 1%의 hash rate로 샤드를 지배할 수 있어 샤드 간의 커뮤니케이션이 너무 빈번하게 일어난다면, 커뮤니케이션으로 인한 시간 지연의 문제가 생기게 된다.[1] 데이터 재분배(Rebalancing data)로는 Sharding된 DB 의 물리적인 용량 한계나 성능 한계에 따르면 샤드의 수를 늘리는 scale-up 작업이 필요하며 서비스 정지 없이 scale-up 할 수 있도록 설계 방향을 잡아야 하며, Global Transaction을 사용하면 샤드 DB 간의 트랜잭션도 가능하여 XA 임에도 성능 저하의 문제가 있다.[7]
  • 확장성과 샤딩에 대해
블록체인에서의 문제점은 크게 탈중앙화, 보안성, 확장성의 문제로 이 세 가지 문제 중 어떠한 두 가지는 만족시킬 수 있지만, 남은 한 가지는 만족시킬 수 없는 트릴레마 의 문제를 가지게 되고, 이 중에서 그동안 가장 블록체인 기술에서 문제 되었던 부분은 확장성의 문제는 상용화를 위해서는 기존의 서비스와 같이 불편함이 없어야 하기에 TPS가 빨라야 하지만, 정보를 처리하는데 사용자들이 오랜 시간 기다리지 않고 사용할 수 있으며, TPS 의 비교를 통해 얼마나 짧은 시간 안에 많은 정보를 처리할 수 있느냐를 직관적으로 확인할 수 있기 때문에 사람들은 수많은 블록체인 프로젝트를 비교할 때 대표적으로 TPS를 비교하여 샤딩은 확장성의 문제를 해결해주는 한 가지의 방법으로써 노드들을 좀 더 빠르게 검증할 수 있어 빠른 트랜잭션을 통하여 좀 더 높은 TPS를 가질 수 있다.[8]
  • 데이터베이스를 나누는 방법
  1. Vertical Partitioning : 테이블별로 서버를 나누는 방식으로 구현이 간단하고, 전체 시스템에 큰 변화가 필요 없다는 장점이 있고 단점으로는 각 서버의 데이터가 점점 거대해지면 추가 샤딩이 필요하다.
  2. Range Based Partitionging : 하나의 feature가 점점 거대해지는 경우 서버를 분리하는 방식이며, 유저 별로 서버를 분리하거나, 일정 데이터라면 년도 별로 분리, 거래정보라면 우편번호를 이용하고 주의 사항으론 데이터를 나누는 방법이 예측 가능 해야 한다.
  3. Key or Hash Based Partitioning : 엔티티를 해쉬함수에 넣어서 나오는 값을 이용해서 서버를 정하는 방식으로 해쉬결과 데이터가 균등하게 분포되도록 해쉬 함수를 정하는 게 중요하며, 서버의 수를 늘리기 위해 해쉬함수를 변경하는 작업이 정말 비싼 작업이라는 단점이 있다.
  4. Directory Based Partitioning : 파티셔닝 메커니즘을 제공하는 추상화된 서비스를 만드는 것으로 샤드 키를 look-up 할 수 있으면 되므로, 구현은 DB와 CACM을 적절히 조합해서 만든다.
  • 샤딩 체인 동작 방식
  1. proposer가 되고 싶은 네트워크 참여자는 SMC 를 통해 balance 를 예치한다.
  2. collator가 되고 싶은 네트워크 참여자는 SMC를 통해 deposit 을 예치한다.
  3. Collator들은 주기적으로 SMC status를 확인해서, 자신이 collator에 선정되었는지 여부를 확인한다.
  4. Collator들은 SMC에 의해 각 샤드 체인에 pseudo-random 하게 배정되고, look ahead period 동안에 해당 샤드의 이전 기록들을 다운받으면 선택된 proposal을 제안한 proposer로부터 proposal bid를 받는다.
  5. Proposer는 트랜잭션을 담은 proposal을 collator에게 제출하는데, proposal은 아직 검증되지 않은 collation을 의미하며, 선택된 proposal을 제출한 proposer는 트랜잭션 발송자로부터 트랜잭션 fee를 받는다.
  6. Collator들은 해당 proposal에 속한 트랜잭션들이 valid 한지를 검증하는 투표를 한다.
  7. 표에서 2/3 이상의 collator들이 proposal에 포함된 트랜잭션이 valid 하다고 찬성할 경우, 해당 proposal은 유효한 collation이 된다.
  • 주요 용어
  1. Collation : 샤드 체인에서 메인 체인의 블록과 같은 역할을 하며, 크게 collation header와 트랜잭션 목록으로 구성된다.
  2. Collation header : collation을 구성하는 정보를 담고 있으며, proposer의 sign을 거쳐 메인 체인에 제출하고, 트랜잭션 목록은 collation에 담긴 트랜잭션들의 목록이다.
  3. Proposer : 제안자라는 뜻으로 트랜잭션들을 모아 proposal을 만들고 collator에게 제출하며, Proposal은 검증되지 않은 collation이다.
  4. Collator : Proposer가 제출한 proposal을 검증한다. period마다 한 샤드에는 여러 collator들이 배정되는데 이들은 해당 period에 진입하기 일정 기간 이전에 무작위로 선정된다.
  5. Executor : Collation header를 메인체인의 SMC (Sharding Manager Contract)에 전달하고, 샤드 체인의 실제 state가 변경된다. (Executor는 샤딩 phase 3에 등장)
  6. Period : 메인 체인에서 샤드 체인의 collation header를 제출받는 주기이며, 단위는 메인 체인에서의 블록의 개수로 PERIOD_LENGTH = 5라면 5개의 블록이 생성되는 것이 1 period이다.
  7. Look ahead period : Collator는 샤드 체인에서 collation을 검증하기 이전에 SMC에 의해 pseudo-random 하게 배정되는데, 'look ahead period'는 collator가 몇 period에 앞서서 어떤 샤드 체인에 배정되는지를 나타내고, LOOKAHEAD_PERIODS = 4이면 4 period 이전에 collator는 샤드 체인에 배정되므로 Collator는 사전에 자신이 배정된 샤드 체인의 state 정보를 다운받는 시간을 확보할 수 있다.
  8. Sharking Manager Contract (SMC) : SMC는 샤드 체인에서 가장 중요한 역할을 하는 스마트 컨트랙트 로 SMC는 메인 체인과 샤드 체인을 연결하며, collator, proposer, collation tree를 관리하며, 샤드 체인이 메인체인에 참여하기 위해서는 SMC의 역할이 필수적이다.
이더리움에 샤딩 적용
  • 이더리움 샤딩
비탈릭 부테린 은 이더리움 창시자이며, 이더리움 샤딩은 메인 체인이 처리해야 할 블록들을 조각내어 샤드(Shard)라고 불리는 오프 체인(off-chain)에 할당하는데 오프 체인들은 주어진 조각에 대해서만 유효성을 검증하게 되고, 샤드들이 각자 할당된 조각들의 검증을 모두 끝내면 다시 묶어 이러한 개념을 통해 블록을 검증하는 데 걸리는 시간을 단축하며, 이더리움의 블록 생성 속도는 13초 이상 걸리고 있지만, 샤딩이 도입된다면 약 2초에서 8초 사이에 생성될 것이다.[9] 샤드별로 Merkel Patricia tree를 만들고 그 샤드의 root들로 만들어진 Merkel Patricia tree의 root만을 블록체인에 올리는 것으로 모든 miner가 모든 트랜잭션을 실행할 필요 없이 샤드별로 miner를 분산 시켜 실행할 수 있기 때문에 전체 실행 속도가 올라간다. 이더리움 2.0으로 통하는 차세대 이더리움 블록체인을 기술적으로 상징하는 특징은 캐스퍼 로 대표되는 새로운 합의 메커니즘과 샤딩을 이더리움 창시자 비탈리크 부테린이 직접 나서 차세대 이더리움을 이끌 원투펀치로 캐스퍼와 샤딩을 적극 프로모션하고 있다.[10]
  • 이더리움 샤딩의 문제점
  1. 난수 생성 : 난수를 사용하여 검증자를 샤드에 배정하는데, 공격자가 난수를 예측하거나 조작할 수 있어, 샤딩 보안에 문제가 생긴다.
  2. 빠른 샤드 전환 : 샤드에 대한 공격 성공 가능성을 줄이려면 검증자를 빠르게 전환해야 하는데 이전부터 look ahead time을 두어 검증자가 자신이 맡을 샤드블록를 미리 동기화시키고, 미리 동기화하기 위해서는 동기화할 자료를 줄여서 빠르게 검증자를 준비할 수 있는 stateless client를 제안한다. stateless client는 블록 헤더만을 저장하지만 블록헤더 만을 저장하기 때문에 거래에 대한 검증은 불가능하여 거래 검증을 하려면 거래를 만들 때, 검증에 필요한 witness를 첨부해야 한다.
  3. 자료 가용성 (Data Availability) : 모두가 stateless client라면 블록의 내용을 손실할 수 있기 때문에 누군가는 state를 저장하고 있도록 적절한 보상과 검증 (Proof of Custody)가 필요하다. Fisherman 딜레마는 Erasure Coding으로 해결했다.
  4. 검증 자간 효율적인 통신 : 샤드 배정이 자주 바뀌는 상황에서 샤드 검증자들끼리의 효율적인 P2P 통신은 필수적이며, libs 2p의 flood sub과 gossip sub 가 사용된다.
  5. 샤드 간 비동기 통신 : 거래 당사자나 스마트 계약이 여러 샤드에 나누어져 있다면 샤드 간의 통신(cross-shard communication)이 필요하지만 여러 단계를 거치게 되어 시간이 오래 걸리므로 결국 메인 체인에 무리를 주게 되고 이렇게 샤드 간 통신이 너무 자주 일어난다면 샤딩의 장점은 사라진다. 이에 이더리움은 cross link를 가지고 메인체인의 무리를 덜고, yanking으로 필요한 스마트 계약을 현재 샤드로 가져와 샤드 간의 통신을 줄이고자 현재 지연상태 전이 (delayed state transition)을 통한 샤드 간의 비동기 통신도 구상 중이라고 한다.
  • 질리카 샤딩
질리카의 샤딩 기술은 네트워크 샤딩(network sharding), 트랜잭션 샤딩(transaction sharding), 연산 샤딩(computational sharding)과 같은 다양한 형태로 구성되어 있고 그중 네트워크 샤딩은 질리카 채굴 네트워크를 샤드라는 작은 노드 그룹으로 나눌 수 있는 메커니즘이다. 이 네트워크 샤딩은 질리카를 확장할 수 있는 도구로서, 이 샤딩을 활용하게 되면 초당 수천 건의 트랜잭션 처리가 가능해진다. 질리카는 샤딩 기술을 통해 노드가 많아질수록 처리 속도가 더욱더 빨라진다. 질리카는 채굴 네트워크를 작은 그룹으로 나눠 병렬로 트랜잭션을 처리하기 때문에 네트워크 크기가 증가할수록 처리할 수 있는 트랜잭션 수가 선형적으로 증가하여 블록체인의 확장성 문제를 해결할 수 있으며, 테스트 넷에서 총 3,600 노드가 참가하여 1초당 2,488개의 트랜잭션을 처리했다. 질리카는 2018년 싱가포르에서 열린 밋업에서 진행된 테스트에서 1개 샤드로 481TPS, 2개 샤드로 995TPS, 4개 샤드로 1,967TPS, 그리고 6개 샤드로 2,828TPS를 달성하면서 네트워크 수 증가에 따른 트랜잭션 수의 선형적 증가 한다.
  • 로커스체인 샤딩
로커스체인(Locus Chain)의 다이내믹 샤딩 기술(또는 동적 샤딩 기술)은 노드가 부담해야 하는 네트워크 부하를 샤드 수만큼 나누고 네트워크 전체의 트랜잭션 처리량을 샤드 수만큼 늘리면서 알고리즘으로 샤드를 재배치하여 서로간의 균형을 유지하는 기술이다. 각 샤드는 독립적으로 BFT합의알고리즘을 수행하고, 한 어카운트는 한번에 하나의 샤드에서만 처리되는 방식이기 때문에 노드의 네트워크 사용량은 줄어들고 트랜잭션 처리량은 노드 숫자가 늘어날수록 이에 비례하여 늘어난다. 또한 로커스체인은 원장 구조가 어카운트 별(AWTC: Account-wise Transaction Chain)로 되어 있어 샤드간 불균형이 일어났을 경우 계정 단위로 샤드를 재배치하여 샤드의 수와 사이즈, 밸리데이터 비율 등을 조절하는 것이 용이하다. 여기에 추가적으로 원장을 쪼개는 스테이트 샤딩을 더해 스토리지 사용량 역시 샤드 수만큼 나눌 계획이라고 한다. 로커스체인은 DAG상에서 BFT합의알고리즘을 구현[11]해냈기 때문에 일반 샤딩이 가졌던 문제점을 해결했다고 주장한다.

종류

  • 데이터베이스 샤딩(database sharding) : 하나의 거대한 데이터베이스 테이블을 수평 분할(horizontal partitioning)하여 여러 개의 작은 단위로 나눈 후, 물리적으로 다른 위치에 분산하여 저장·관리하는 기술이다. 이때 수평 분할된 1개의 작은 테이블샤드(shard)라고 한다.
  • 네트워크 샤딩(network sharding) : 블록체인 기반 암호화폐를 채굴하기 위한 네트워크를 샤드라는 작은 노드 그룹으로 나누어 관리하는 기술이다. 네트워크 샤딩은 임의로 네트워크가 무작위로 노드를 샘플링하여 블록 단위로 샤드를 형성하지만, 네트워크가 샤드의 구성원에 대한 동의를 구하지 않아 구성원들이 원하는 방향으로 가지 않는 경우, 구성원들의 불만을 해결하지 못한다는 단점을 가지고 있다.[1]
  • 트랜잭션 샤딩 : 트랜잭션해시의 마지막 몇 비트를 기반으로 샤드를 결정하고 트랜잭션의 유효성을 확인하지만, 사용자가 악의적인 경우, 동일한 두 입력이지만 출력이 다른 트랜잭션을 생성할 수 있고, 이중 지출을 방지하기 위해 유효기간이 진행되는 동안에 샤딩이 된 조각의 노드들은 서로 간에 통신이 필요하다.[1]
  • 스테이트 샤딩 : 계정 기반 모델(account-based model)로, 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지하지만, 교차분할 트랜잭션을 수행하지 못하도록 제한되고, 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 오프라인 샤드에 대한 트랜잭션의 요 효성을 검사하지 못하게 되는데 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협되어 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때까지 전체 시스템을 사용할 수 없게 된다.[1]

활용

  • 싱가포르의 신슈 동 이 개발한 암호화폐인 질리카(Zilliqa)는 샤딩 기술을 활용함으로써 트랜잭션 처리 속도를 획기적으로 향상했다. 질리카의 샤딩 기술은 네트워크 샤딩(network sharding), 트랜잭션 샤딩(transaction sharding), 연산 샤딩(computational sharding)과 같은 다양한 형태로 구성되어 있다. 그중 가장 중요한 건 네트워크 샤딩인데, 네트워크 샤딩은 질리카 채굴 네트워크를 샤드(shard)라는 작은 노드 그룹으로 나눌 수 있는 메커니즘이다. 이 네트워크 샤딩은 질리카를 확장할 수 있는 도구로서, 이 샤딩을 활용하게 되면 초당 수천 건의 트랜잭션 처리가 가능해진다.
  • 샤딩은 블록체인 확장성에 대한 하나의 해결책으로 네트워크가 블록의 유효성을 검증하는 방식을 바꿈으로써 처리량의 증대를 가져오는데 모든 온체인(on-chain) 확장성 솔루션 가운데 샤딩을 특별하게 만드는 핵심적인 특징은 병렬식 확장성(horizontal scaling)이다. 예를 들어, 채굴 네트워크가 확장할수록 처리량이 증가하면, 샤딩의 이 독특한 특성은 블록체인의 빠른 채택을 촉진하는 이상적인 촉매 재가 될 수 있다.[5]

사례

이더리움 샤딩(비탈릭 부테린 트위터)
  • 비탈리크 부테린은 이더리움의 확장성을 보안 활동하기 위해 샤딩을 도입하겠다고 밝혔다. 샤딩이 도입되면 각 샤드가 계정별로 트랜잭션을 나눠 처리하고 승인하고 블록체인 네트워크 참여자의 모든 주소를 일정한 개수로 잘라 각 덩어리를 하나의 연방으로 구성하는 방식이며, 이더리움의 경우에는 전체 계좌에서 0x00부터 시작되는 계정들은 1번 샤드에서 관리하고 0x01부터 시작하는 계정은 2번 샤드에서 관리하는 식으로 샤드 1에 속하는 요청자가 트랜잭션을 발생시키면 해당 트랜잭션은 샤드 1의 오퍼레이션 노드로 전파되고 블록 제한자, 실행자, 검증자의 검증을 거치고 이상이 없다면 샤드 1에 들어 있는 EVM이 컨트랙트의 코드를 실행시키고 스테이트 변경함수를 통해 기존 스테이트는 새로운 값으로 변경된다.[12]
  • 아이비즈소프트웨어 는 2006년부터 기업용 소프트웨어를 개발 및 공급하며 금융, 유통업계 등에서 대형 프로젝트를 성공적으로 수행해온 아이비즈소프트웨어가 지난 4일 기업용 블록체인 솔루션 '베리드 엔터프라이즈 에디션'을 출시했다. 샤딩 기술을 적용한 베리드 엔터프라이즈 에디션을 도입할 수 있는 대표적 사례로써 통합인증(Single Sign On, 'SSO') 서비스는 블록체인 기반 SSO는 한 번의 로그인으로 다양한 앱에 동시 접속을 가능하게 하여 ID, 패스워드에 대한 보안 강화와 고객 및 직원들에게 더욱 나은 사용자 환경을 제공해 왔고 베리드 엔터프라이즈 에디션으로 SSO 서비스에서 요구하는 10,000TPS 이상의 처리속도를 제공하는 블록체인 기반 SSO 서비스를 제공, 손쉬운 비즈니스 도입을 위해 하이퍼레저의 환경구성과 기업 시스템과의 연동을 위한 SSO API 서버 구축, 성능 측정 결과 리포트 등의 기능을 제공한다.[13]

각주

  1. 1.0 1.1 1.2 1.3 1.4 sobly tv, 〈샤딩이란? 쉽게 이해해보자〉, 《미디엄》, 2018-09-03
  2. 2.0 2.1 오세진, 〈블록체인 확장성 솔루션 시리즈 4–1 :: Sharding 샤딩〉, 《미디엄》, 2018-06-08
  3. ICO of KOREA, 〈샤딩(sharding) 이란? / 이더리움 샤딩, 질리카 샤딩〉,《네이버 블로그》, 2018-06-11
  4. 고란 기자, 〈성공한 플랫폼은 보이지 않는다〉, 《중앙일보》, 2018-10-17
  5. 5.0 5.1 phuzion7, 〈블록체인 샤딩의 3가지 형태: BlockChain Sharding〉,《데일리 코인뉴스》, 2018-12-31
  6. 전원희, 〈NHN의 안과 밖: Sharding Platform〉,《네이버D2》, 2012-02-17
  7. hanburn, 〈샤딩(sharding)이란?〉,《티스토리》, 2012-01-17
  8. sobly tv, 〈샤딩이란? 쉽게 이해해보자〉, 《미디엄》, 2018-09-03
  9. KMK, 〈샤딩(Sharding)이란? 이더리움의 확장성 문제, 질리카의 기술〉,《네이버》, 2018-07-17
  10. 황치규 기자, 〈캐스퍼와 샤딩 무장한 '이더리움 2.0' 시대 열린다〉,《더비체인》, 2018-08-27
  11. 여용준, <로커스체인, 세계 최초 'DAG-BFT 확정합의 알고리즘' 블록체인 기술 구현 성공>, 《이뉴스투데이》, 2019-02-21
  12. 강민승 기자, 〈블록체인 성능 향상에 필수 '샤딩'…"쪼개라, 빨라질 것이니"〉,《매일경제》, 2018-12-21
  13. 장윤영 기자, 〈샤딩 적용한 더 빠르고 향상된 기업용 블록체인 '베리드 엔터프라이즈 에디션'〉,《전자신문》, 2019-06-26

참고자료

같이 보기


  검수요청.png검수요청.png 이 샤딩 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.