Logic
합의 알고리즘
NFT 소유권 (Ownership) 기반 PoA(Proof of Authority) + pBFT(Practical Byzantine Fault Tolerance) 결합
NFT 소유권(Ownership) 기반 PoA(Proof of Authority) : PoA 는 트랜잭션과 블록이, 검증자라고 알려진 승인된 계정에 의해 검증되는 로직. Bitstar 는 이 검증자 계정을 NFT 소유권을 가진 주소와 그 소유권의 유효기간을 스마트컨트랙트에 저장하고 해당 스마트컨트랙트의 데이터를 가져와서 할당.
pBFT: 프랙티컬 비잔틴 장애 허용(PBFT, Practical Byzantine Fault Tolerance) 은 네오, 질리카, 하이퍼레저, R3, ITC, 텐더민트 등에서 사용하는 합의 알고리즘. 이 기술은 여러 노드로 구성된 네트워크에서 악의적 공격을 방어하기 위해 만들어짐. 비잔틴 장애 허용 에서는 일부 노드(장군)의 결과가 달라도 어느정도 이상의 결과가 동일하면 합의된것으로 간주. 즉, 다수결의 원칙을 따름. 먼저 참가자 1명이 리더가 되고 자신을 포함한 모든 참가자에게 요청을 보냄. 그 요청에 대한 결과를 집계한 뒤 다수의 값을 사용해 블록을 확정. 부정한 노드 수를 n개라고 하면, 노드수는 3n + 1 개 여야 하며, 확정에는 n + 1개 이상의 노드가 필요함. pBFT는 비동기 네트워크에서 배신자 노드 f개 있을 때, 총 노드 개수가 3f + 1개 이상이면 해당 네트워크에서 이루어지는 합의는 신뢰할 수 있다는 것을 수학적으로 증명한 알고리즘. pBFT 방식은 ⅔ 이상의 노드가 합의하면 검증되기 때문에 속도가 향상된다고 볼 수 있으며, 노드수가 적어져 보안에 유리하다는 점이 장점.
검증자 선정 로직
생성하고자 하는 블록 번호가 1 또는 생성하고자 하는 블록 슬롯이 현재 에포크의 마지막 슬롯보다 클 경우 새로 에포크를 계산
에포크 계산 시 스마트 컨트랙트로부터 검증자 목록 수신. 이때 가져온 검증자 목록의 유효기간은 현재보다 크다
스마트 컨트랙트로부터 가져온 검증자 목록을 섞은 후 위원회 당 최대 검증자 수로 나누어 위원회 구성
각 슬롯 번호에 위원회 맵핑
블록 생성 시 블록 번호에 맞는 슬롯의 위원회 반환
위원회의 index 가 중간값인 주소를 제안자 (proposal) 로 선정
제안자는 블록을 제안
제안된 블록에 서명을 첨부하여 전파
제안된 블록을 받을 경우 현재 라운드에 본인이 검증자로 선정된 경우에 도달한 제안 블록을 검증
제안 블록 및 서명이 유효할 경우 본인 서명 첨부하여 전파
만약 누적 서명수가 정족수 (현재 위원회의 검증자 수의 ⅔ )을 초과할 경우 블록체인에 포함 (=pBFT)
체인에 포함될 경우 연결된 노드에게 체인에 포함된 블록을 전파
이후 새로운 slot 시작
Last updated