FBA란?
개인 노드간이 아닌, 복수 노드로 구성된 쿼럼 슬라이스간 합의를 이루는 방식
쿼럼슬라이스란?
블록이 유효한지 아닌지 결정하는 여러 사람(노드)들의 모임
사람(노드)들은 자신이 어떤 모임(쿼럼 슬라이스)에 들어갈지 선택한다.
쿼럼이란?
합의를 이루기에 충분한 수의 쿼럼 슬라이스(모임)
많은 노드(사람)들이 모여서 쿼럼슬라이스(모임)을 이루고,
많은 쿼럼슬라이스(모임)이 다시 한번 모여서 블록의 유효성(믿을만한지)을 결정한다.
블로킹 셋이란?
다른 쿼럼슬라이스(모임)의 서명 없이, 합의가 불가능한 쿼럼슬라이스(모임)
합의에 대한 임계값이 3인 4개 쿼럼이 있을때,
( 4개 노드중 3개 노드 이상만 동의시 합의가 완료됨 )
어떠한 쿼럼슬라이스든지 그것이 2개 뿐이라면, 블로킹셋이 된다.
( 3개의 모임이 모여야 합의를 할 수 있으므로 )
FBA가 나오게된 이유
BTF상에서는 합의에 참여하는 전체 인원의 2/3이 내려 최종블록을 결정한다.
따라서, 악의적인 사람이 1/3 이상의 비중을 차지할때, 네트워크가 보안에 취약해진다.
( 다수의 악의적인 사람이 블록데이터를 조작할 가능성이 있음 )
반면, FBA 상에서는 악의적 사람이
정직한 인원으로 구성된 쿼럼슬라이스에 포함되지 않는 이상
해당 쿼럼 슬라이스 내 합의 과정에 영향을 끼칠 수 없다.
악의적 노드가 네트워크 공격에 성공하기 위해서는,
정직한 노드로 구성된 다수의 쿼럼 슬라이스가
다수의 악의적 계정을 골고루 편입시킬 수 있도록 해야한다.
FBA는 쿼럼 슬라이스간 서로 다른 합의 결과를 도출하는 불상사를 방지하기 위해
쿼럼간 교차를 사용한다.
반면, 교차 지점에 속한 노드가 악의적인 노드 일시,
해당 노드가 속해있는 두 쿼럼 슬라이스는 합의를 이루지못하고,
올바른 트랙잭션 처리가 중단되는 문제가 발생한다. (stoped!)
SCP는 FBA상에서 트랜잭션 처리가 중단되지 않도록 하기 위해서
노미네이션(nomination) 프로토콜과, 밸럿(ballo) 프로토콜을 기반으로한
스텔라 자체 합의 메커니즘이다.
의문점
악의적 노드와, 정직한 노드란 무엇인가?
정직한 노드 : 자신의 이익과 관계없이 진실된 정보를 블록으로 만드려는 노드
악의적 노드 : 자신의 이익을 위해 왜곡된 정보를 블록으로 만드려는 노드
- 정직한 노드도 언제나 악의적인 노드로 변질될 가능성이 있지 않은가?
쿼럼이, 쿼럼슬라이스의 합의 결과를 모은 것이고,쿼럼슬라이스가 여러 노드들을 모은 모임이라면,악의적 노드들이 모여 쿼럼슬라이스를 이루고,악의적인 쿼럼슬라이스들의 합의결과를 모아 쿼럼을 만든다면,애초부터 BTF의 문제점을 해결하지 못한 것이 아닌가?