Luniverse PoA Sidechain
루니버스만의 PoA 컨센서스 알고리즘인 LPoA를 적용한 사이드 체인 환경에서 최대 3000tps의 높은 처리속도를 경험하세요.
LPoA 사이드 체인 생성하기
LPoA 사이드 체인 개발 환경을 구매 및 사용하고자 하는 경우 Create Luniverse PoA Sidechain 페이지의 가이드를 참조해주세요.
LPoA(Luniverse PoA) 란?
LPoA는 Clique 합의 프로토콜을 기반으로 개선된 합의 알고리즘으로, 대표적인 루니버스 사이드 체인의 타입 중 하나입니다. 엔터프라이즈급 서비스 운용을 위한 고성능 블록체인 제공을 목표로 설계된 루니버스는, 빠른 블록 생성 속도와 안정성을 제공하는 PoA 합의 알고리즘을 기본 프로토콜로 채택하였습니다. PoA 방식은 권한을 증명한 노드(Validator) 그룹을 통해 트랜잭션 검증과 블록 생성을 수행하는 방식으로서, 합의 과정에서 각 노드들에게 균등한 블록 생성 기회를 제공하는 것을 기본 원칙으로 합니다. 따라서 Time(Energy)-Consuming 연산 증명이 필요한 PoW(Proof of Work, 작업 증명) 합의 방식 대비 신속한 블록 Finality 결정이 가능하며, 넓은 네트워크 대역을 통한 트랜잭션 처리가 가능합니다.
Clique 합의 프로토콜이란?
Clique는 대표적인 PoA 합의 프로토콜로서 Network 운영을 위한 Signer Set 을 가집니다. 사전에 협의된 사용자들이 Signer 로 참여하게 되며, 각 Signer 는 Transaction 과 Block 을 검증하고 차례로 다음 Block 을 생성합니다. Clique 는 즉각적인 완결성을 갖지는 않으며 Byzantine fault tolerant(노드가 실패하거나 잘못된 정보를 피어에게 전파하더라도 블록체인 네트워크가 올바르게 작동하고 합의에 도달할 수 있는 능력)를 위해서 Signer 의 절반 이상의 참여가 필요합니다. 만약 절반 이상의 Signer 가 응답이 없다면 네트워크 오류가 발생합니다.
LPoA 합의 프로토콜
LPoA는 Clique 합의 프로토콜을 개선하여 성능과 보안성을 높이고 가용성을 극대화한 루니버스 만의 합의 프로토콜입니다. LPoA에서는 보편적인 Clique 기반 PoA 방식에서 가용성 보장을 위해 in-turn 노드의 응답 지연시 일부 out-turn 노드들에게 Randomness 기반으로 블록 제안(Proposal) 기회를 제공함으로서 발생하는 불균등(Unfairness) 문제 및 잦은 Fork 발생, 네트워크 지연(Delay) 문제를 해결하고자 세분화된 블록 결정 및 검증 정책을 제공합니다. 이러한 개선을 통해 LPoA는 기존 PoA 방식 대비 높고 안정적인 속도의 블록 생성(최대 1초당 블록 하나) 및 Finality 보장이 가능하며 트랜잭션 기준 최대 약 3200tps 의 성능을 제공할 수 있습니다. LPoA 기반의 블록 생성은 다음과 같은 순서로 진행됩니다.
1. Transaction Propagation
각 Validator 노드는 P2P 네트워크를 통해 전달받은 트랜잭션의 Nonce와 서명을 검증한 뒤 mempool queue에 넣고, 이웃 노드들에게 전파한다.
2. Block Proposal by In-turn Node
앞선 블록이 결정되면 다음 차례의 Validator는 in-turn 노드의 자격으로 블록을 제안할 기회를 얻는다. 블록 제안 기회는 모든 Validator 노드들에게 순차적으로 공평하게 주어진다. 블록 제안 차례로 선정된 in-turn 노드는 블록을 생성하고 서명한 뒤 네트워크에 전파함으로서 블록을 제안할 수 있다. in-turn 노드에 의해 제안되는 블록은 높은 가중치(Difficulty, 2의 가중치)를 가지며, 블록의 크기 및 가스량 제한은 네트워크 파라미터를 따라야 한다.
3. Block Proposal by Out-turn Node
In-turn 노드가 시스템 다운 또는 네트워크 장애로 인해 블록 생성 주기 내 일정 시간동안 블록 제안을 하지 못하는 경우, 나머지 노드들에게도 블록 제안 기회가 주어진다. 동시에 여러 노드로부터 블록 제안이 전파되는 경우 Fork 발생으로 인해 블록 Finality 결정을 위한 추가 과정이 진행되어야 하므로, LPoA에서는 안정적인 블록 생성 보장을 위해 자체 구현한 turn 분배 알고리즘에 따라 나머지 노드들에게 블록 제안의 기회를 부여한다. 기회를 부여받은 노드는 블록을 제안하게 되며, 전파된 블록을 받은 각 노드들은 다음의 블록 검증과정을 통해 다음 블록을 결정한다. 이때 여러 노드가 장애인 상황에서도 안정적으로 Liveness를 회복하기 위해, 각 Candidate 노드로부터의 응답 대기시간은 Turn이 반복될 수록 줄어들며 누적 대기시간은 시간에 대해 지수분포를 따르도록 구현되어 있다. 짧은 시간 내 turn 변경으로 인해 fork가 발생하는 경우 LPoA 블록 컨센서스 정책에 따라 빠른 수렴을 지원한다.
4. Block Validation & Finality Decision
블록 제안을 받은 각 노드들은 해당 블록을 제안한 노드의 서명을 검증한 뒤 검증 결과를 전파해야 한다. 과반수 이상의 노드로부터 검증된 블록은 성공적으로 최종 블록으로 결정된다.
동시에 여러 블록이 제안되는 경우 높은 가중치의 노드가 생성한 블록을 우선으로 채택한다. Out-turn 노드가 제안한 블록은 in-turn 노드가 제안한 블록 대비 낮은 가중치를 가지므로 in-turn 노드가 제안한 블록은 네트워크 지연으로 인해 다소 늦게 전파된 경우에도 유효 시간 내라면 채택될 수 있다. Out-turn 노드가 반복적 제안 또는 순서를 어기고 블록을 제안하는 경우 네트워크 안정성을 위해하는 행위로 간주하여 모니터링을 통한 제재 대상이 될 수 있다.
Updated about 1 year ago