루프 장애 허용 편집하기
최신판 | 당신의 편집 | ||
2번째 줄: | 2번째 줄: | ||
==개요== | ==개요== | ||
[[루프체인]](Loopchain)은 비잔틴 장애 허용을 지원하는 루프 장애 허용을 통해 분기가 없는 빠른 합의를 지원한다. 루프 장애 허용을 기반으로 신뢰 관계가 있는 복수의 [[노드]]를 하나의 그룹으로 묶어 좀 더 빠른 합의를 이루어 낼 수 있으며 이러한 그룹 및 노드에 투표권 수를 자유롭게 설정할 수 있어 다양한 합의 체계 구축이 가능하다. 비잔틴 장애 허용 계열 합의 알고리즘을 사용하는 루프 장애 허용 합의 알고리즘은 [[블록]]을 생성하고 전파하는 [[리더노드]]와 생성한 블록의 내용을 검증하여 블록의 유효성을 투표하는 [[검증노드]]로 구성된다. | [[루프체인]](Loopchain)은 비잔틴 장애 허용을 지원하는 루프 장애 허용을 통해 분기가 없는 빠른 합의를 지원한다. 루프 장애 허용을 기반으로 신뢰 관계가 있는 복수의 [[노드]]를 하나의 그룹으로 묶어 좀 더 빠른 합의를 이루어 낼 수 있으며 이러한 그룹 및 노드에 투표권 수를 자유롭게 설정할 수 있어 다양한 합의 체계 구축이 가능하다. 비잔틴 장애 허용 계열 합의 알고리즘을 사용하는 루프 장애 허용 합의 알고리즘은 [[블록]]을 생성하고 전파하는 [[리더노드]]와 생성한 블록의 내용을 검증하여 블록의 유효성을 투표하는 [[검증노드]]로 구성된다. | ||
− | + | ==메시지 데이터 구조== | |
− | + | 다른 블록체인처럼 현재 블록의 단방향 해시값을 저장하여 해당 블록이 위변조되었는지 감지할 수 있게 하였으며 이전 블록 해시 데이터를 통해 해시 연결성을 보장한다. 그 밖에 블록 높이(블록 순번), 블록 생성 시간, [[트랜잭션]] [[머클트리]]와 같은 기존 블록체인에 들어가는 데이터들이 포함된다. 구성하는 블록체인에 따라 블록체인 위에서 돌아가는 서비스의 상태를 저장하기 위한 [[머클 패트리샤 트리]] 혹은 [[IAVL+ 트리]] 등의 상태 머신 저장을 위한 자료구조를 추가할 수 있다. 루프 장애 허용을 구현한 블록체인의 블록은 일반적인 블록체인 [[네트워크]]에 포함되는 [[데이터]] 외에 이전 블록에 대한 투표 결과를 포함한다. LFT 합의 알고리즘은 각 검증노드가 투표 데이터를 다른 모든 노드에 전송하기 때문에 각 검증노드는 이 단계에서 정족수 이상의 투표를 받으면 각 검증노드가 해당 블록을 자신의 블록체인에 추가할 수 있다. 하지만 이때 네트워크의 정족수 이상의 투표를 받지 못하는 경우가 생길 수 있는데 이러한 노드의 이전 블록을 자신의 블록체인에 추가할 수 있게 하기 위해서 이후 블록에 이전 블록의 투표 데이터를 추가하여 전송한다. 또한, [[허가형 블록체인]]의 경우 해당 블록을 검증한 사람에 대한 증거가 블록체인에 남아있는 것이 중요하기 때문에 해당 블록에 대한 투표 증거를 남기는 역할도 하게 된다. | |
− | + | ==동작 방식== | |
− | |||
− | |||
합의가 시작되면 검증노드들은 리더노드에 처리하기 원하는 트랜잭션을 전송한다. 리더노드는 수집한 [[트랜잭션]]을 이용하여 블록을 생성하고 자신의 서명과 함께 다른 모든 검증노드에 전송한다. 각 검증노드들은 블록을 받으면 현 리더가 블록을 생성했는지 확인하고, 블록의 높이와 이전 블록 해시가 올바른지 확인, 블록의 메시지가 올바른지 확인한다. 검증노드는 검증 결과에 따라 투표 메시지를 모든 노드들에게 보낸다. 각 노드가 정족수 이상의 투표를 받게 되면 해당 높이의 블록을 자신의 블록체인에 추가할 수 있다. | 합의가 시작되면 검증노드들은 리더노드에 처리하기 원하는 트랜잭션을 전송한다. 리더노드는 수집한 [[트랜잭션]]을 이용하여 블록을 생성하고 자신의 서명과 함께 다른 모든 검증노드에 전송한다. 각 검증노드들은 블록을 받으면 현 리더가 블록을 생성했는지 확인하고, 블록의 높이와 이전 블록 해시가 올바른지 확인, 블록의 메시지가 올바른지 확인한다. 검증노드는 검증 결과에 따라 투표 메시지를 모든 노드들에게 보낸다. 각 노드가 정족수 이상의 투표를 받게 되면 해당 높이의 블록을 자신의 블록체인에 추가할 수 있다. | ||
==활용== | ==활용== |