ISAAC+는 PBFT(Practical Byzantine Fault Tolerance) 알고리즘을 기반으로 개발한 합의 프로토콜으로, 블록의 Finality를 보장하고 제한된 Fault Tolerance 안에서 Liveness와 Safety를 보장합니다.

Features

  • 특정 조건을 만족하는 노드들을 Consensus Node에서 자동으로 탈퇴 시키거나 가입시켜 탈중앙화 네트워크를 유지하고 PBFT 모델의 취약점인 Liveness 보완
  • Suffrage Group은 오롯이 Consensus와 모델 데이터 처리에만 집중함으로써 불필요한 트래픽을 줄여 처리 성능 상승
  • Non-Consensus Node Group을 도입해 커뮤니티 참여 활성화

Phases of Consensus Protocol

ISAAC+는 이전의 합의 프로토콜의 명칭인ISAAC를 개선한 버전이라는 의미에서 붙인 명칭입니다.

이전 합의 프로토콜의 합의단계를 Init - Sign - Accept - All Confirm 이라는 4단계로 PBFT의 4단계와 유사하며,각 단계의 첫 글자를 따서 I-S-A-AC을 붙여 만든 명칭입니다.현재 ISAAC+는 Init - Sign - Accept 3단계로 구성되어 있습니다.

Init 단계

  • 합의에 참여하는 모든 노드(Suffrage Group)는 이전 Round에서 생성된 블록에 대한 합의를 검증하여 그 결과를 ballot에 담아 Suffrage Group에 전송
  • 합의에 이르지 못하면, 다음 Round의 Init 단계를 새롭게 시작하여 다시 한번 해당 블록에 대해 voting을 진행
  • 합의에 성공하면 이전 라운드의 생성된 블록을 블록체인에 기록하고 새로운 라운드를 시작합니다. 이때 Suffrage Group은 합의된 블록을 블록체인에 기록하고 Sign 단계로 진입

Sign 단계

  • Random 함수에 의해서 이번 라운드의 블록 생성을 제안할 Proposer와 Acting Suffrage Group 멤버를 선택
  • Acting Suffrage Group은 Proposer의 Proposal에 대해서 검증하고 그 결과를 전체 Suffrage Group에 전송. Sign 단계에서 Acting Suffrage 그룹의 합의가 성공하지 못하더라도, Acting Suffrage Group에서 Suffrage Group에 전송한 내용을 바탕으로 Accept 단계에서 합의에 성공한다면 Init 단계로 진입

Accept 단계

  • Acting Suffrage Group에서 Suffrage Group에 전송한 내용을 바탕으로 Accept 단계에서 합의에 성공한다면 다음 Round의 Init 단계로 진입

Node Structure

ISAAC+는 합의에 참여한 노드를 Suffrage와 Acting Suffrage Group으로 나누고,새로운 블록을 쌓는 과정(Round)마다 새로운 리더를 선출하는 방식을 채택합니다.

Non-Consensus Node Group:
  • 노드 운영이 가능한 수준의 기술 지식을 가진 일반인들이 참여하는 그룹 
  • 합의된 블록을 백업하고 외부에서 데이터 조회 요청이 올 경우 데이터를 제공하는 역할을 담당합니다.
Suffrage Group:
  • 일정 수준 이상의  처리 성능과 안정적인 네트워크 대역폭을 확보한 노드 그룹
  • 특정 시점에 Consensus에 참여하여 블록(block) 생성에 기여합니다.
Acting Suffrage Group:
  • Suffrage Group 중 Round가 바뀔 때마다 Random하게 선택되는 그룹
  • 그룹의 멤버 중 하나가 Proposer가 되어 나머지 노드들에게 메세지를 전송하는 역할을 합니다.