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

"트랜잭션 샤딩"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
11번째 줄: 11번째 줄:
 
이중 지불을 방지하기 위해서는, 샤드들이 유효성을 검증하는 동안 서로 정보를 교환할 수 있어야 하는데, 이중 지불 트랜잭션은 모든 샤드에 있을 수 있어서 트랜잭션을 받는 샤드는 다른 모든 샤드와 통신을 해야 한다. 조정을 위해 소모되는 자원인 통신 비용(communicaiton overhead)이 사실은 트랜잭션 샤딩의 모든 목적을 해칠수도 있고, 각 구성 요소들의 소통을 위해 계산 능력의 일부가 통신 프로토콜 지원과 처리에 소모된다. 스마트 컨트랙트가 없는 계정-기반 시스템(account-based system : 비트코인은 UTXO를, 이더리움은 계정(Account)을 사용)을 가질 때 문제는 훨씬 쉽게 해결되며, 각각의 트랜잭션은 발신자의 주소를 가지고 발신자의 주소에 기반해서 샤드에 할당할 수 있다. 두 개의 이중 지불 트랜잭션이 동일한 샤드에서 검증을 받게 되고 따라서 샤드 간 소통 없이도 쉽게 추적 된다.<ref name="용">조용히떡상, 〈[https://cobak.co.kr/community/16/post/108289 블록체인 샤딩의 3가지 형태: BLOCKCHAIN SHARDING]〉, 《코박》, 2019-01-03 </ref>
 
이중 지불을 방지하기 위해서는, 샤드들이 유효성을 검증하는 동안 서로 정보를 교환할 수 있어야 하는데, 이중 지불 트랜잭션은 모든 샤드에 있을 수 있어서 트랜잭션을 받는 샤드는 다른 모든 샤드와 통신을 해야 한다. 조정을 위해 소모되는 자원인 통신 비용(communicaiton overhead)이 사실은 트랜잭션 샤딩의 모든 목적을 해칠수도 있고, 각 구성 요소들의 소통을 위해 계산 능력의 일부가 통신 프로토콜 지원과 처리에 소모된다. 스마트 컨트랙트가 없는 계정-기반 시스템(account-based system : 비트코인은 UTXO를, 이더리움은 계정(Account)을 사용)을 가질 때 문제는 훨씬 쉽게 해결되며, 각각의 트랜잭션은 발신자의 주소를 가지고 발신자의 주소에 기반해서 샤드에 할당할 수 있다. 두 개의 이중 지불 트랜잭션이 동일한 샤드에서 검증을 받게 되고 따라서 샤드 간 소통 없이도 쉽게 추적 된다.<ref name="용">조용히떡상, 〈[https://cobak.co.kr/community/16/post/108289 블록체인 샤딩의 3가지 형태: BLOCKCHAIN SHARDING]〉, 《코박》, 2019-01-03 </ref>
  
 +
* '''샤딩 전략'''
 +
: 트랜잭션 샤딩은 블록체인 네트워크의 노드들이 서로 다른 샤드로 분할되고, 각각의 샤드가 처리 과정을 거쳐 서로 다른 트랜잭션의 부분 집합에 대해서 합의에 도달한다 서로 연결되지 않은 트랜잭션의 부분 집합들이 병렬식으로 처리되는 이 방식에서 트랜잭션 처리량은 수백-수 천 배까지 상당하게 끌어올릴 수 있다 반면, 현재의 주류 공개형 블록체인 상에서는, 트랜잭션, 스마트 컨트랙트 그리고 다양한 상태의 저장(storing)에 대한 책임을 모든 공개 노드들이 떠맡는데 블록체인을 지속적으로 운영하기 위해 요구되는 저장 공간의 측면에서 엄청난 비용을 발생시킨다. 상태 샤딩으로 부르는 하나의 잠재적인 접근법은 이 문제를 해결하기 위해 제시되었는데, 핵심은 전체 저장소를 여러 파편들로 나누고 여러 샤드들이 서로 다른 파트를 저장하게 하면, 모든 노드는 전체 블록체인 상태(state)가 아닌 소속된 샤드의 데이터 처리만 책임지면 된다.<ref name="용"></ref>
 +
 +
== 장점과 문제점 ==
 
* '''장점'''
 
* '''장점'''
트랜잭션 샤딩은 [[트랜잭션]]의 유효성을 확인하는데 활용된다. 트랜잭션 샤딩에서는 블록체인 네트워크의 노드들이 서로 다른 샤드로 분할되고, 각각의 샤드가 처리 과정을 거쳐 서로 다른 트랜잭션의 부분 집합에 대해서 합의에 도달한다. 서로 연결되지 않은 트랜잭션의 부분 집합들이 병렬식으로 처리되는 이 방식에서 트랜잭션 처리량은 수천 배까지 상당하게 끌어올릴 수 있다.   
+
: 트랜잭션 샤딩은 [[트랜잭션]]의 유효성을 확인하는데 활용된다. 트랜잭션 샤딩에서는 블록체인 네트워크의 노드들이 서로 다른 샤드로 분할되고, 각각의 샤드가 처리 과정을 거쳐 서로 다른 트랜잭션의 부분 집합에 대해서 합의에 도달한다. 서로 연결되지 않은 트랜잭션의 부분 집합들이 병렬식으로 처리되는 이 방식에서 트랜잭션 처리량은 수천 배까지 상당하게 끌어올릴 수 있다.   
  
 
* '''문제점'''
 
* '''문제점'''
사용자가 악의적인 경우, 동일한 두 입력이지만 출력이 다른 트랜잭션을 생성할 수 있다. 또한 이중 지출을 방지하기 위해 유효기간이 진행되는 동안에 샤딩이 된 조각의 노드들은 서로 간에 통신이 필요하다. 통신은 그 만큼의 시간과 비용이 따르게 된다.<ref name="샤"></ref> 또한 현재의 주류 공개형 블록체인 상에서는, 트랜잭션, 스마트 컨트랙트 그리고 다양한 상태의 저장(storing)에 대한 책임을 모든 공개 노드들이 떠맡는다 이것은 블록체인을 지속적으로 운영하기 위해 요구되는 저장 공간의 측면에서 엄청난 비용을 발생시킨다.<ref name="딩">phuzion7, 〈[https://www.dailycoinews.com/dailycoinews/article/read.do?articleNo=1642&lang=kr 블록체인 샤딩의 3가지 형태: BlockChain Sharding]〉, 《DailyCoinNews》, 2018-12-31</ref> 그리고 네트워크가 과부하 되는 문제가 있으면 노드가 많아지면 개별 노드에 대한 해킹 가능성이 증가한다.<ref name="삼">ICO of KOREA, 〈[http://blog.naver.com/PostView.nhn?blogId=seonggi159&logNo=221293859830&redirect=Dlog&widgetTypeCall=true&directAccess=false Zilliqa, 질리카(ZIL) 분석/ 샤딩의 원조는 나야!]〉, 《네이버블로그》, 2018-06-07</ref>
+
: 사용자가 악의적인 경우, 동일한 두 입력이지만 출력이 다른 트랜잭션을 생성할 수 있다. 또한 이중 지출을 방지하기 위해 유효기간이 진행되는 동안에 샤딩이 된 조각의 노드들은 서로 간에 통신이 필요하다. 통신은 그 만큼의 시간과 비용이 따르게 된다.<ref name="샤"></ref> 또한 현재의 주류 공개형 블록체인 상에서는, 트랜잭션, 스마트 컨트랙트 그리고 다양한 상태의 저장(storing)에 대한 책임을 모든 공개 노드들이 떠맡는다 이것은 블록체인을 지속적으로 운영하기 위해 요구되는 저장 공간의 측면에서 엄청난 비용을 발생시킨다.<ref name="딩">phuzion7, 〈[https://www.dailycoinews.com/dailycoinews/article/read.do?articleNo=1642&lang=kr 블록체인 샤딩의 3가지 형태: BlockChain Sharding]〉, 《DailyCoinNews》, 2018-12-31</ref> 그리고 네트워크가 과부하 되는 문제가 있으면 노드가 많아지면 개별 노드에 대한 해킹 가능성이 증가한다.<ref name="삼">ICO of KOREA, 〈[http://blog.naver.com/PostView.nhn?blogId=seonggi159&logNo=221293859830&redirect=Dlog&widgetTypeCall=true&directAccess=false Zilliqa, 질리카(ZIL) 분석/ 샤딩의 원조는 나야!]〉, 《네이버블로그》, 2018-06-07</ref>
 
 
* '''샤딩 전략'''
 
: 트랜잭션 샤딩은 블록체인 네트워크의 노드들이 서로 다른 샤드로 분할되고, 각각의 샤드가 처리 과정을 거쳐 서로 다른 트랜잭션의 부분 집합에 대해서 합의에 도달한다 서로 연결되지 않은 트랜잭션의 부분 집합들이 병렬식으로 처리되는 이 방식에서 트랜잭션 처리량은 수백-수 천 배까지 상당하게 끌어올릴 수 있다 반면, 현재의 주류 공개형 블록체인 상에서는, 트랜잭션, 스마트 컨트랙트 그리고 다양한 상태의 저장(storing)에 대한 책임을 모든 공개 노드들이 떠맡는데 블록체인을 지속적으로 운영하기 위해 요구되는 저장 공간의 측면에서 엄청난 비용을 발생시킨다. 상태 샤딩으로 부르는 하나의 잠재적인 접근법은 이 문제를 해결하기 위해 제시되었는데, 핵심은 전체 저장소를 여러 파편들로 나누고 여러 샤드들이 서로 다른 파트를 저장하게 하면, 모든 노드는 전체 블록체인 상태(state)가 아닌 소속된 샤드의 데이터 처리만 책임지면 된다.<ref name="용"></ref>
 
  
 
==대안==
 
==대안==

2019년 8월 29일 (목) 14:49 판

질리카(Zilliqa)

트랜잭션 샤딩(transaction sharding)이란 2016년 질리카 팀이 공동 저술한 학술논문에서 처음 제시된 샤딩 기술이다.

개요

트랜잭션 샤딩은 2016년 질리카팀이 공동 저술한 학술 논문에서 처음 제시된 샤딩 기술이다. 트랜잭션 해시의 마지막 몇 비트를 기반으로 샤드를 결정하고 트랜잭션의 유효성을 확인한다.[1] 그러나 사용자가 악의적인 경우 동일한 두 입력이지만 출력이 다른 트랜잭션을 생성할 수 있으며, 이중 지출을 방지하기 위해 유효기간이 진행되는 동안에 샤딩이 된 조각의 노드들은 서로간에 통신이 필요로 하고, 이때 통신 비용 발생한다.[2]

특징

트랜잭션 샤딩은 스마트 컨트랙트가 없는 비트코인과 같은 시스템에서 트랜잭션 샤딩을 도입한다면, 비트코인은 시스템의 상태(state)를 UTXO(Unspent Transaction Output)를 사용해서 정의하는데, 네트워크가 이미 샤드로 이루어져 있고 한 사용자가 트랜잭션 하나를 보낸다고 가정해보면, 트랜잭션은 두 개의 입력(input)과 하나의 출력(output)을 가지고, 트랜잭션을 샤드에 할당하기 위해선 트랜잭션 해시(hash)의 마지막 몇 비트에 기반해서 샤드를 결정하는 것이다. 예를 들면, 해시의 마지막 비트가 '0'이라면, 그 트랜잭션은 샤드가 두 개뿐이라는 가정하에 첫 번째 샤드에 할당되고, 두 번째 샤드에 할당한다면, 트랜잭션은 단일 샤드에서 유효성을 검증받는다. 그러나, 사용자가 악의적인 경우에 동일한 두 개의 입력과 하나의 다른 출력을 가진 또 다른 트랜잭션을 생성할 수 있는데, 이중 지불(double spend)이 있다. 두 번째 트랜잭션은 다른 해시를 가질 것 이므로 두 트랜잭션은 결국 다른 샤드로 할당된다. 각각의 샤드는 수신된 트랜잭션을 따로따로 검증하지만 분명한 이중 지불 트랜잭션이 다른 샤드 내에서 유효성을 가진다.

이중 지불을 방지하기 위해서는, 샤드들이 유효성을 검증하는 동안 서로 정보를 교환할 수 있어야 하는데, 이중 지불 트랜잭션은 모든 샤드에 있을 수 있어서 트랜잭션을 받는 샤드는 다른 모든 샤드와 통신을 해야 한다. 조정을 위해 소모되는 자원인 통신 비용(communicaiton overhead)이 사실은 트랜잭션 샤딩의 모든 목적을 해칠수도 있고, 각 구성 요소들의 소통을 위해 계산 능력의 일부가 통신 프로토콜 지원과 처리에 소모된다. 스마트 컨트랙트가 없는 계정-기반 시스템(account-based system : 비트코인은 UTXO를, 이더리움은 계정(Account)을 사용)을 가질 때 문제는 훨씬 쉽게 해결되며, 각각의 트랜잭션은 발신자의 주소를 가지고 발신자의 주소에 기반해서 샤드에 할당할 수 있다. 두 개의 이중 지불 트랜잭션이 동일한 샤드에서 검증을 받게 되고 따라서 샤드 간 소통 없이도 쉽게 추적 된다.[3]

  • 샤딩 전략
트랜잭션 샤딩은 블록체인 네트워크의 노드들이 서로 다른 샤드로 분할되고, 각각의 샤드가 처리 과정을 거쳐 서로 다른 트랜잭션의 부분 집합에 대해서 합의에 도달한다 서로 연결되지 않은 트랜잭션의 부분 집합들이 병렬식으로 처리되는 이 방식에서 트랜잭션 처리량은 수백-수 천 배까지 상당하게 끌어올릴 수 있다 반면, 현재의 주류 공개형 블록체인 상에서는, 트랜잭션, 스마트 컨트랙트 그리고 다양한 상태의 저장(storing)에 대한 책임을 모든 공개 노드들이 떠맡는데 블록체인을 지속적으로 운영하기 위해 요구되는 저장 공간의 측면에서 엄청난 비용을 발생시킨다. 상태 샤딩으로 부르는 하나의 잠재적인 접근법은 이 문제를 해결하기 위해 제시되었는데, 핵심은 전체 저장소를 여러 파편들로 나누고 여러 샤드들이 서로 다른 파트를 저장하게 하면, 모든 노드는 전체 블록체인 상태(state)가 아닌 소속된 샤드의 데이터 처리만 책임지면 된다.[3]

장점과 문제점

  • 장점
트랜잭션 샤딩은 트랜잭션의 유효성을 확인하는데 활용된다. 트랜잭션 샤딩에서는 블록체인 네트워크의 노드들이 서로 다른 샤드로 분할되고, 각각의 샤드가 처리 과정을 거쳐 서로 다른 트랜잭션의 부분 집합에 대해서 합의에 도달한다. 서로 연결되지 않은 트랜잭션의 부분 집합들이 병렬식으로 처리되는 이 방식에서 트랜잭션 처리량은 수천 배까지 상당하게 끌어올릴 수 있다.
  • 문제점
사용자가 악의적인 경우, 동일한 두 입력이지만 출력이 다른 트랜잭션을 생성할 수 있다. 또한 이중 지출을 방지하기 위해 유효기간이 진행되는 동안에 샤딩이 된 조각의 노드들은 서로 간에 통신이 필요하다. 통신은 그 만큼의 시간과 비용이 따르게 된다.[1] 또한 현재의 주류 공개형 블록체인 상에서는, 트랜잭션, 스마트 컨트랙트 그리고 다양한 상태의 저장(storing)에 대한 책임을 모든 공개 노드들이 떠맡는다 이것은 블록체인을 지속적으로 운영하기 위해 요구되는 저장 공간의 측면에서 엄청난 비용을 발생시킨다.[4] 그리고 네트워크가 과부하 되는 문제가 있으면 노드가 많아지면 개별 노드에 대한 해킹 가능성이 증가한다.[5]

대안

프랙티컬 비잔틴 장애 허용(PBFT)

프랙티컬 비잔틴 장애 허용(PBFT; Practical Byzantine Fault Tolerance)은 보안 문제를 해결하기 위해 나온 해결책이다. 질리카는 PBFT를 채택하여 보안문제를 해결했다. PBFT의 보안 검증 순서를 보면 다음과 같다. 이러한 과정은 작업증명(PoW)을 통해 각 마이크로블록을 검증하고 검증된 블록이 최종 단계에서 종합된 형태로 검증되는 방식을 말한다.[5]

  1. 트랜잭션이 생성되고 트랜잭션을 검증할 샤드에 전송된다.
  2. 트랜잭션이 샤딩을 통해 마이크로블록, Microblock 형태로 분할되며 각 마이크로블록은 여러 노드로 전송된다.
  3. 각 샤드는 받은 마이크로블록을 검증해 검증이 완료된 블록을 DS 위원회, DS Committee로 최종 검증을 위해 보낸다.
  4. DS 위원회는 마이크로블록을 종합해 하나의 블록으로 합치며 마지막으로 블록의 최종 검증을 한다.

상태샤딩

상태샤딩(State Sharding)은 저장공간의 엄청난 비용을 해결하기 위해 나온 샤딩 전략이다. 전체 저장소를 여러 파편들로 나누고 여러 샤드들이 서로 다른 파트를 저장하게 하는 것이다 그러면 모든 노드는 전체 블록체인 상태(state)가 아닌 소속된 샤드의 데이터 처리만 책임지면 된다.[4]

각주

  1. 1.0 1.1 sobly tv, 〈샤딩이란? 쉽게 이해해보자〉, 《미디엄》, 2018-09-03
  2. Las 낙서장, 〈Sharding (샤딩)〉, 《티스토리》, 2019-04-09
  3. 3.0 3.1 조용히떡상, 〈블록체인 샤딩의 3가지 형태: BLOCKCHAIN SHARDING〉, 《코박》, 2019-01-03
  4. 4.0 4.1 phuzion7, 〈블록체인 샤딩의 3가지 형태: BlockChain Sharding〉, 《DailyCoinNews》, 2018-12-31
  5. 5.0 5.1 ICO of KOREA, 〈Zilliqa, 질리카(ZIL) 분석/ 샤딩의 원조는 나야!〉, 《네이버블로그》, 2018-06-07

참고자료

같이 보기


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