루프체인 편집하기
최신판 | 당신의 편집 | ||
50번째 줄: | 50번째 줄: | ||
루프 장애 허용은 기존 [[프랙티컬 비잔틴 장애 허용]]을 사용하는 합의 알고리즘에서 발생하는 통신 오버헤드를 [[피기배킹]](Piggybacking)을 이용하여(네트워크에서 메시지를 통합하여 통신 오버헤드를 감소시키는 방법) 줄였으며, 스피닝(Spinning) 기법(리더를 매번 교체하는 기법)을 이용하여 악의적인 [[노드]]가 네트워크의 [[합의]]를 해치지 않는 범위에서 네트워크에 문제를 일으킬 수 있는 특정 노드의 [[트랜잭션]] 거부 문제, 리더에 의한 네트워크 지연과 같은 문제를 해결했다. 또한, 기존 알고리즘들이 가지고 있던 지나치게 복잡한 리더 선정 알고리즘을 단순화하였다. | 루프 장애 허용은 기존 [[프랙티컬 비잔틴 장애 허용]]을 사용하는 합의 알고리즘에서 발생하는 통신 오버헤드를 [[피기배킹]](Piggybacking)을 이용하여(네트워크에서 메시지를 통합하여 통신 오버헤드를 감소시키는 방법) 줄였으며, 스피닝(Spinning) 기법(리더를 매번 교체하는 기법)을 이용하여 악의적인 [[노드]]가 네트워크의 [[합의]]를 해치지 않는 범위에서 네트워크에 문제를 일으킬 수 있는 특정 노드의 [[트랜잭션]] 거부 문제, 리더에 의한 네트워크 지연과 같은 문제를 해결했다. 또한, 기존 알고리즘들이 가지고 있던 지나치게 복잡한 리더 선정 알고리즘을 단순화하였다. | ||
− | 네트워크가 시작되면 검증 노드(검증을 통해 합의에 참여하는 노드)들은 사전에 결정된 리더 노드에게 처리를 원하는 트랜잭션을 전송한다. 리더 노드는 수집한 [[트랜잭션]]을 이용하여 블록을 생성하고 자신의 서명과 함께 다른 모든 검증 노드에게 전송한다. 각 검증 노드들은 [[블록]]을 받으면 현 리더가 블록을 생성했는지 확인하고, 블록의 높이와 [[이전 블록 해시]]가 올바른지 확인하며, 블록의 데이터가 올바른지 확인한다. 검증 노드는 위 세 가지 방법이 옳다면 투표 데이터를 생성하여 네트워크의 모든 노드들에게 전파한다. 투표 데이터를 전체 노드에게 전파하는 것은 매우 중요한데, 이는 리더 노드가 비잔틴일 경우 정족수 이상의 노드들에게만 블록을 전파하여 특정 노드들을 네트워크로부터 분리하도록 시도할 수 있기 때문이다. 이러한 문제를 방지하기 위해 모든 피어에게 투표 데이터를 전파하며 이는 기존 [[Raft 알고리즘]]과 다른 부분이다. 이 과정에서 블록을 못 받은 노드는 블록이 생성되었는지에 대한 정보를 알 수 있고 다른 노드에게 블록을 요청할 수 있다.<ref name="아이콘루프"></ref> | + | 네트워크가 시작되면 검증 노드(검증을 통해 합의에 참여하는 노드)들은 사전에 결정된 리더 노드에게 처리를 원하는 트랜잭션을 전송한다. 리더 노드는 수집한 [[트랜잭션]]을 이용하여 블록을 생성하고 자신의 서명과 함께 다른 모든 검증 노드에게 전송한다. 각 검증 노드들은 [[블록]]을 받으면 현 리더가 블록을 생성했는지 확인하고, 블록의 높이와 [[이전 블록 해시]]가 올바른지 확인하며, 블록의 데이터가 올바른지 확인한다. 검증 노드는 위 세 가지 방법이 옳다면 투표(Vote) 데이터를 생성하여 네트워크의 모든 노드들에게 전파한다. 투표 데이터를 전체 노드에게 전파하는 것은 매우 중요한데, 이는 리더 노드가 비잔틴일 경우 정족수 이상의 노드들에게만 블록을 전파하여 특정 노드들을 네트워크로부터 분리하도록 시도할 수 있기 때문이다. 이러한 문제를 방지하기 위해 모든 피어에게 투표 데이터를 전파하며 이는 기존 [[Raft 알고리즘]]과 다른 부분이다. 이 과정에서 블록을 못 받은 노드는 블록이 생성되었는지에 대한 정보를 알 수 있고 다른 노드에게 블록을 요청할 수 있다.<ref name="아이콘루프"></ref> |
===멀티채널=== | ===멀티채널=== |