"스테이트 샤딩"의 두 판 사이의 차이
(→활용) |
(→해결방안) |
||
57번째 줄: | 57번째 줄: | ||
빠른 샤드 전환 이 되야 하는데, 샤드에 대한 공격 성공 가능성을 줄이고자 한다면 검증자를 빠르게 전환해야 한다. 이전 부터 look ahead time을 두어 검증자가 자신이 맡을 샤드 블록을 미리 동기화 시킨다. 미리 동기화 하기 위해서는 동기화할 자료를 줄여서 빠르게 검증자를 준비할 수 있는 무국적 고객(stateless client)을 제안하는 이유는 블록 헤더만을 저장하는데 블록헤더만을 저장하기 때문에 거래에 대한 검증은 불가능하고, 거래 검증을 하려면 거래를 만들때, 검증에 필요한 Witness를 첨부해야하며, 영지식을 사용하여, Witness 의 크기를 줄이는 방법도있다. 자료의 가용성으로는 모두가 무국적 고객이라면 블록의 내용을 손실할 수 있어 누군가는 상태(state)를 저장하고 있어야 하며, 적절한 보상과 검증(Proof of Custody)가 필요하다. 어부(Fisherman) 딜레마는 이레이저 코딩(Erasure Coding)으로 해결가능하다. 난수생성으로는 난수를 사용하여 검증자를 샤드에 배정하는데, 공격자가 난수를 예측하거나 조작하여 샤딩보안에 문제가 생기면, 기존의 란다오(RANDAO) 난수 생성방식을 VDF(Verigiable DelayFunction)을 사용한다. | 빠른 샤드 전환 이 되야 하는데, 샤드에 대한 공격 성공 가능성을 줄이고자 한다면 검증자를 빠르게 전환해야 한다. 이전 부터 look ahead time을 두어 검증자가 자신이 맡을 샤드 블록을 미리 동기화 시킨다. 미리 동기화 하기 위해서는 동기화할 자료를 줄여서 빠르게 검증자를 준비할 수 있는 무국적 고객(stateless client)을 제안하는 이유는 블록 헤더만을 저장하는데 블록헤더만을 저장하기 때문에 거래에 대한 검증은 불가능하고, 거래 검증을 하려면 거래를 만들때, 검증에 필요한 Witness를 첨부해야하며, 영지식을 사용하여, Witness 의 크기를 줄이는 방법도있다. 자료의 가용성으로는 모두가 무국적 고객이라면 블록의 내용을 손실할 수 있어 누군가는 상태(state)를 저장하고 있어야 하며, 적절한 보상과 검증(Proof of Custody)가 필요하다. 어부(Fisherman) 딜레마는 이레이저 코딩(Erasure Coding)으로 해결가능하다. 난수생성으로는 난수를 사용하여 검증자를 샤드에 배정하는데, 공격자가 난수를 예측하거나 조작하여 샤딩보안에 문제가 생기면, 기존의 란다오(RANDAO) 난수 생성방식을 VDF(Verigiable DelayFunction)을 사용한다. | ||
− | 많은 샤드가 공격이나 실패점에서 회복 중에 있을 때 멈추지 말아야 한다. 네트워크는 새로운 노드들을 계속 수용하고 그들을 임의적으로 서로 다른 샤드에 할당해야 하며, 네트워크는 재편되어야 한다.스테이트 샤딩의 경우에 재편을 하기가 까다로운데, 각각의 샤드가 상태의 일부만을 유지하며, 네트워크를 모두 함께 재구성하는 것은 동기화가 완성될 때까지 전체 시스템의 불능을 불러와 정지 상태를 피하기 위해, 네트워크는 노드가 제거되기 전에 오래된 여러 노드를 가질 수 있도록 점진적으로 재구성해야 한다. 새로운 노드가 샤드에 들어오면, 노드가 샤드의 상태와 동기화하기 위한 충분한 시간을 갖도록 하는 이유는 들어온 | + | 많은 샤드가 공격이나 실패점에서 회복 중에 있을 때 멈추지 말아야 한다. 네트워크는 새로운 노드들을 계속 수용하고 그들을 임의적으로 서로 다른 샤드에 할당해야 하며, 네트워크는 재편되어야 한다.스테이트 샤딩의 경우에 재편을 하기가 까다로운데, 각각의 샤드가 상태의 일부만을 유지하며, 네트워크를 모두 함께 재구성하는 것은 동기화가 완성될 때까지 전체 시스템의 불능을 불러와 정지 상태를 피하기 위해, 네트워크는 노드가 제거되기 전에 오래된 여러 노드를 가질 수 있도록 점진적으로 재구성해야 한다. 새로운 노드가 샤드에 들어오면, 노드가 샤드의 상태와 동기화하기 위한 충분한 시간을 갖도록 하는 이유는 들어온 노드가 모든 단일 트랜잭션을 바로 거부하게 된다. |
{{각주}} | {{각주}} |
2019년 8월 28일 (수) 11:32 판
스테이트 샤딩(state sharding)은 상태가 지정된 상황에서, 특정 노드가 특정 상태값만 저장하고 있는 샤딩 기술을 말한다. 상태 샤딩이라고도 한다.
목차
개요
스테이트 샤딩은 계정 기반 모델(account-based model)이다. 스테이트 샤딩은 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지하지만, 교차분할 트랜잭션을 수행하지 못하도록 제한되고 있다. 스테이트 샤딩은 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 오프라인 샤드에 대한 트랜잭션의 유효성을 검사하지 못하게 된다. 만약 오프라인 샤드를 유지하기 위해 백업 노드를 갖게 된다면 중앙집중식이 되어 보안성에 위협이 될 수 있다. 네트워크가 한 번씩 재편성될 때 한 번에 네트워크를 전환하게 되면 일부 동기화가 완료될 때까지 전체 시스템을 사용할 수 없게 된다.[1]
특징
계정 기반 모델을 이어가면 스마트 컨트랙스는 도입하지 않는다. 스테이트 샤드 블록체인의 경우에 특정 샤드는 상태의 일부만을 유지한다 예를 들어서, 두 개의 샤드와 두 개의 사용자 계정만을 가진다면, 각각 엘리스(Alice)와 밥(Bob)이라 하고, 각 샤드는 한 명의 사용자 잔고를 보유한다. 엘리스가 밥에게 지불하는 트랜잭션을 생성하면, 트랜잭션은 첫 번째 샤드가 처리하게 된다. 트랜잭션이 검증되면 밥의 새로운 계좌에 대한 정보가 두 번째 샤드와 공유되야하고, 두 계정이 서로 다른 샤드에 의해 처리되면, 빈번한 샤드 간 커뮤니케이션과 상태 교환을 수반한다. 샤드간 소통이 스테이트 샤드로 얻는 퍼포먼스를 해치지 않도록 해야한다.[2]
- 계정 기반 모델(Account-Based Model)로 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지한다.
- 교차분할 트랜잭션을 수행하지 못하도록 제한이 되어 있다.
- 시스템의 상태가 모든 샤드에 복제되어 있지 않기 때문에 네트워크는 더 이상 오프라인 샤드에 대한 트랙재션의 유효성을 검사하지 못한다.
- 오프라인 샤드를 유지하기 위해 백업 노드를 갖게된다면 중앙집중식이 되어 보안성에 위협이 있다.
- 네트워크가 한 번씩 재편성될 때 한번에 네트워크를 전환하게 되면 일부 동기화가 완료될때 까지 전체 시스템을 사용할 수 없게 될 수도 있다.
- 적응 스테이트 샤딩(Adaptive State Sharding)
- 중앙 집중식 상대방에 비해 처리량 비교로 블록 체인 샤딩을위한 최적의 접근 방식은 세 가지 샤딩 유형 (네트워크 / 통신, 트랜잭션 / 프로세싱, 상태 / 스토리지) 모두의 이점이 있다. 확장 성 및 처리량 증가에 대한 엘론드의 접근 방식으로 적응 스테이트 샤딩은 세 가지 샤딩 유형을 모두 샤드 내부의 통신을 개선하고, 병렬 처리를 통해 성능을 높이고, 스토리지를 줄이며 거의 선형으로 확장하는 솔루션으로의 결합을 말한다. 사용 가능한 리소스 유효성 검사기 노드 및 네트워크 사용량에 따라 샤드 수가 동적으로 변경되도록하면 처리량뿐만 아니라 효율성에도 큰 영향을 미치는데, 적응 상태 샤딩 메커니즘은 샤드 수가 계산되면 이진 트리 구조를 기반으로한다. 이 숫자는 계정 주소를 샤드에 결정적으로 매핑하는 데 사용되고, 샤드의 트랜잭션 발송은 발신자와 수신자 계정 주소를 지정된 샤드에 매핑하여 결정적으로 수행된다. 솔루션의 대부분의 선형적인 확장 성은 중앙 집중식 솔루션의 처리량을 능가한다.
- 커뮤니케이션 오버헤드(communication overhead)
- 샤드간 커뮤니케이션 오버헤드를 줄이는 방법은 사용자들로 하여금 샤드간 트랜잭션을 제한해야 한다. 예를들면, 엘리스가 밥과 직접 거래하는 것이 허용되지 않고 거래를 해야 한다면, 엘리스는 샤드에 계정을 보유해야 한다. 샤드간 소통을 완전히 제거하지만, 플랫폼의 사용성을 제한될 수 있다.
- 데이터 유효성(data availability)
- 특정 샤드가 공격을 받고 제어 불능에 빠진다면, 시스템의 상태는 모든 샤드에 걸쳐 복제를 하지 않아 네트워크는 제어 불능 샤드에 속한 트랜잭션들을 더 이상 검증할 수 없어 블록체인은 대규모 사용 불능이 되는데, 데이터 불능으로부터 네트워크를 조정하고 복구할 수 있는 기록 또는 백업 노드를 유지해야 한다. 노드들이 시스템의 전체 상태를 저장해야 하기 때문에 중앙집권화의 위험을 불러올 수 있다.
활용
쿼크체인(QuarkChain)
- 스테이트 샤딩 기술 기반의 블록체인 플랫폼 중 하나인 쿼크체인이 체인링크와의 기술협업을 통해 실생활에서의 블록체인 적용하였으며, 체인 링크는 미들웨어 플랫폼으로 오라클 문제, 즉 블록체인 외부 데이터와 스마트 컨트랙트와의 연결할 때 생기는 문제를 해결해 주는 역할을 하는데, 체인링크는 이 과정을 분산화 시켜 더욱 더 보안성 있고 편리하게 외부 데이터를 블록체인 내부로 입력할 수 있게 도와준다. 체인링크는 구글, 오라클, 국제은행간통신협정(SWIFT)등과 같은 주요 기업들과 함께 협력하여 이미 글로벌 시장에서는 유명한 기업으로 쿼크체인은 스마트컨트랙트 기능을 넘어 온체인 트랜잭션을 통해 사용자의 일상에서 더 많은 분야에 진입할 수 있게 되며 쿼크체인 네트워크의 개발자들은 디앱(Dapp)을 블록체인 외부의 데이터에 성공적으로 연결함으로써 더 많은 산업 어플리케이션에 효과적으로 활용될 수있고 체인링크는 스마트 컨트랜트가 오프체인 데이터, 웹 API, 전통 은행 결제등에 안전하게 접속하게 해주는 블록체인 오라클 네트워크로, 가트너(Gartner)와 같은 유명 독립 리서치 기관들로 부터 지속해서 최고의 블록체인 기술로 선정 되어 왔으며, 주요 고객으로는 구글, 오라클, 국제은행간통신협정등이 있다. 쿼크체인은 페이스북과 구글에서 샤딩 기술을 적용한 개발자 출신 치조우 대표가 미국에 설립한 스테이트 샤딩 기반의 블록체인 플랫폼이다. 메인넷을 출시하였으며 이미 비자 네트워크에 가까운 5만5천 이상의 TPS를 달성하여 블록체인 기술의 가능성을 입증해오고 있는 대표적인 블록체인 플랫폼 이다.[3] 쿼크체인에 대해 자세히 보기
이더리움(Ethereum)
각 샤드가 계정별로 트랜잭션을 나눠 처리하고 승인한다. 블록체인 네트워크 참여자의 모든 주소를 일정한 갯수로 잘라 각 덩어리를 하나의 연방으로 구성하는 방식으로 이더리움의 경우에는 전체 계좌에서 0x00부터 시작되는 계정들은 1번 샤드에서 관리하고 0x01부터 시작하는 계정은 2번 샤드에서 관리하며, 샤드 1에 속하는 요청자가 트랜잭션을 발생시키면 해당 트랜잭션은 샤드 1의 오퍼레이션 노드로 전파되고 블록 제한자, 실행자, 검증자의 검증을 거치고 이상이 없으면, 샤드 1에 들어있는 EVM이 컨트랙트의 코드를 실행시키고 스테이트 변경함수를 통해 기존 스테이트는 새로운 값으로 변경된다. 작업증명(PoW)방식을 쓰는 이더리움은 스테이트를 단일 방식으로 처리하고 있고, 이더리움의 마지막 로드맵인 세레니티에서는 지분증명(PoS)의 합의 알고리즘이 적용됨과 동시에 1024개의 샤드가 연쇄 파이프처럼 건설된다. 스테이트로 통하는 통로가 한 개에서 1024개로 추가 개방돼 스테이트를 구역마다 나눠 관리하게 된다. 질리카의 네트워크 샤딩으로 각 샤드가 모든 샤드의 상태를 알 수 있지만 이더리움의 스테이트 샤딩은 각 샤드가 스스로의 상태만을 알 수 있고, 데이터 저장도 한 샤드만 하면 되서 속도는 더 빠르다.[4] 이더리움에 대해 자세히 보기
엘론드(Elrond)
- 엘론드는 질리카(Zilliqa)와 비교하여 트랜잭션 샤딩뿐만 아니라 스테이트 샤딩도 사용하여 샤딩의 한계를 넓혔다. 엘론드는 작업증명(PoW) 메커니즘을 완전히 제거하고 합의를 위해 확률적 지분증명(SPoS)을 사용한다. 두 아키텍처 모두 자체 스마트 계약 엔진을 구축하고 있지만 엘론드는 블록체인 간의 상호운용성을 달성하기 위해 이더리움(EVM)을 목표로 한다. 질리카가 구현해낸 샤딩은 네트워크 샤딩(Network Sharding)으로 네트워크만 샤딩을 진행하고, 네트워크에 들어온 노드들을 여러 샤드에 할당하고 연산 능력을 높여 TPS를 높이는 것이다. 트랜잭션 처리는 샤딩을 통해 분할적/병렬적으로 하여 저장은 스테이트 샤딩과 다르지만 기존의 방식과는 다르지 않다. 이더리움이 구현하고자 하는 샤딩과는 다른 샤딩으로 이더리움의 샤딩은 스테이트 샤딩이며, 차이점으로는 누가더 샤딩을 진행 하는것에 있다.[5]
- 스테이트 샤딩 아키텍처 검증
- 엘론드 프로토 이프 PoC-v0.5는 기본적으로 직접 메시징, 정보 방송 및 채널 통신을위한 통신 p2p 모듈이 포함 된 기술 백본으로 슈노르(Schnorr)방식, 발라레(Bellare)및 네븐(Neven)의 블록에 대한 다중 서명 방법과의 거래에 대한 서명 및 확인을 처리하는 암호화 모듈, 서로 다른 데이터 유형(블록, 트랜잭션, 계정 등)이 서로 연결되어 시스템에 저장되는 방법을 정의하고 설명하는 데이터 모듈, 일관성과 보안을 보장하기 위해 네트워크를 통해 상태를 복제하면서 트랜잭션을 처리하고 블록을 조립하는 데 사용되는 실행 엔진; 체계적인 부트 스트랩 프로세스와 적절한 타임 아웃을 보장하는 동기화 및 시간 통과 관점에 사용되는 연대기 모듈, 라운드 로빈 환경에서 기본 컨센서스를 사용하는 컨센서스 모듈로, 모든 샤드에서 독립적 인 컨센서스 그룹을 실행하여 블록을 제안하고 검증 할 수 있으며, 통신 주제를 사용하고 샤드 및 크로스 샤드 트랜잭션을 모두 사용할 수있는 샤딩 모듈이 있다.[6]
- 엘론드 제로원 테스트넷
- 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)로 상태가 지정된 블록체인에서 이 특정 샤드는 상태의 일부만을 유지하며, 교차분할 트랜잭션을 수행하지 못하도록 제한이 되어 있다.
한 샤드의 연결이 끊어질 경우 네트워크에 문제가 생길 수 있으며, 보안성 문제로는 하나의 샤드에 악성 노드가 모이는 것을 방지하려면 네트워크를 주기적이고 무작위로 셔플해야 하며, 노드를 셔플하려고하면 다른 노드의 상태를 알아야 하는데, 스테이트 샤딩은 스스로의 상태밖에 모르기 때문에 셔플을 할 수 없고, 악성 노드 방지가 어렵다.[7]
해결방안
빠른 샤드 전환 이 되야 하는데, 샤드에 대한 공격 성공 가능성을 줄이고자 한다면 검증자를 빠르게 전환해야 한다. 이전 부터 look ahead time을 두어 검증자가 자신이 맡을 샤드 블록을 미리 동기화 시킨다. 미리 동기화 하기 위해서는 동기화할 자료를 줄여서 빠르게 검증자를 준비할 수 있는 무국적 고객(stateless client)을 제안하는 이유는 블록 헤더만을 저장하는데 블록헤더만을 저장하기 때문에 거래에 대한 검증은 불가능하고, 거래 검증을 하려면 거래를 만들때, 검증에 필요한 Witness를 첨부해야하며, 영지식을 사용하여, Witness 의 크기를 줄이는 방법도있다. 자료의 가용성으로는 모두가 무국적 고객이라면 블록의 내용을 손실할 수 있어 누군가는 상태(state)를 저장하고 있어야 하며, 적절한 보상과 검증(Proof of Custody)가 필요하다. 어부(Fisherman) 딜레마는 이레이저 코딩(Erasure Coding)으로 해결가능하다. 난수생성으로는 난수를 사용하여 검증자를 샤드에 배정하는데, 공격자가 난수를 예측하거나 조작하여 샤딩보안에 문제가 생기면, 기존의 란다오(RANDAO) 난수 생성방식을 VDF(Verigiable DelayFunction)을 사용한다.
많은 샤드가 공격이나 실패점에서 회복 중에 있을 때 멈추지 말아야 한다. 네트워크는 새로운 노드들을 계속 수용하고 그들을 임의적으로 서로 다른 샤드에 할당해야 하며, 네트워크는 재편되어야 한다.스테이트 샤딩의 경우에 재편을 하기가 까다로운데, 각각의 샤드가 상태의 일부만을 유지하며, 네트워크를 모두 함께 재구성하는 것은 동기화가 완성될 때까지 전체 시스템의 불능을 불러와 정지 상태를 피하기 위해, 네트워크는 노드가 제거되기 전에 오래된 여러 노드를 가질 수 있도록 점진적으로 재구성해야 한다. 새로운 노드가 샤드에 들어오면, 노드가 샤드의 상태와 동기화하기 위한 충분한 시간을 갖도록 하는 이유는 들어온 노드가 모든 단일 트랜잭션을 바로 거부하게 된다.
각주
- ↑ sobly tv, 〈샤딩이란? 쉽게 이해해보자〉, 《미디엄》, 2018-09-03
- ↑ phuzion7, 〈블록체인 샤딩의 3가지 형태: BlockChain Sharding〉, 《데일리 코인뉴스》, 2018-12-31
- ↑ QuarkChain, 〈스테이트샤딩 블록체인 플랫폼 쿼크체인, 체인링크와 기술협업〉, 《네이버》, 2019-07-26
- ↑ 강민승 기자, 〈블록체인 성능 향상에 필수 `샤딩`…"쪼개라, 빨라질 것이니"〉, 《매일경제》, 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
같이보기