Skip to main content
IntentionBFT는 Intention의 합의 프로토콜로, 금융 인프라를 위해 확장한 HotStuff 계열 BFT 프로토콜입니다. 안전성은 장애 임계값 아래에서 무조건 유지되고, 활성은 네트워크가 안정화된 뒤에 유지됩니다. 여기서 합의는 범용 체인의 합의가 하지 않는 두 가지를 합니다. 순서를 일급 객체로 커밋하고, 같은 사건 안에서 인증된 가격 벡터를 함께 커밋합니다. 커널이 실행에 대해 보장할 수 있는 모든 것은 이 둘이 실행 전에 확정되는 데 달려 있습니다.

모델

IntentionBFT는 전체 지분의 3분의 1까지를 통제하는 비잔틴 공격자를 견딥니다. 따라서 정직한 지분은 언제나 3분의 2를 넘고, 표준 정족수는 합산 지분이 3분의 2를 넘는 검증자 집합입니다. 이 문서에서 2f+12f+1 지분 가중 정족수라고 부르는 것이 이 집합입니다. 네트워크는 부분 동기입니다. 안정화 시점 이전에는 지연이 임의적이고, 그 이후에는 정직한 검증자 사이의 지연에 상한이 있습니다.
오라클 sidecar검증자별 하나
검증자가 검증하고 서명설정된 임계값 대비 신선도 포함
검증자 간 gossip 전파합의 네트워크 메시지로
인증 가격에포크 · 라운드별
가격 가용성이 블록 생성을 좌우검증자는 현재 라운드의 유효한 가격 관측을 제시할 수 있을 때만 블록을 제안할 자격을 갖습니다. 따라서 트랜잭션을 커밋하는 서명이 그 트랜잭션이 결제되는 가격까지 함께 커밋합니다.
이것이 주장하지 않는 것가격을 트랜잭션에 묶을 뿐, 가격이 옳다는 뜻은 아닙니다. 합의가 인증하는 것은 검증자 정족수가 이 라운드에 이 관측값을 제출했다는 사실, 그뿐입니다.
라운드마다 지정된 리더가 있습니다. 한 라운드 안에서 제안은 연속된 2f+12f+1 서명 집계를 모으고, 각 단계는 인접한 라운드에 걸쳐 파이프라인으로 겹쳐 돌아갑니다. 그래서 일반적인 경우 블록은 두 번의 네트워크 왕복 만에 최종성에 이릅니다. 낙관적 응답성 아래에서는 실제 메시지 지연이 진행 속도를 정하고, pacemaker의 백오프는 네트워크가 적대적이거나 분할되었을 때만 개입합니다.

순서를 커밋하기

블록 안의 트랜잭션 순서는 실행의 부산물로 남지 않고 합의가 커밋하는 객체로 격상됩니다. 블록 해시가 순서 지어진 페이로드까지 포괄하므로, 합의 이후에 순서를 다시 바꾸면 그 순서를 커밋한 서명이 곧바로 무효가 됩니다. 그 효과는 이렇습니다. 블록이 최종화되고 나면 2f+12f+1 지분 가중 정족수가 바로 그 순서에 대한 약속에 서명한 상태이고, 정직한 검증자라면 같은 라운드에서 같은 트랜잭션 집합의 다른 순서에 서명했을 리가 없습니다. 커밋된 순서를 따르는 순차 실행과 결합되면, 이것이 결정론적 재실행을 구현상의 관행에서 누구나 검사할 수 있는 성질로 바꿉니다.
하나의 제안 안에서 리더가 갖는 재량, 즉 가용한 배치 중 무엇을 넣고 어떻게 배열할지는 여전히 남아 있는 표면입니다. 리더 평판과, 유효한 가격 관측 없이는 리더가 애초에 블록을 만들 수 없다는 사실이 이를 완화합니다. 더 강한 공정 순서 구성은 향후 업그레이드 후보로 관리되고 있습니다.

배치 가용성

소박한 프로토콜에서는 리더가 그 라운드의 트랜잭션 전부를 페이로드에 담아 블록을 제안하고, 그 결과 합의 메시지 크기가 처리량에 묶입니다. IntentionBFT는 데이터 전파와 순서 결정을 분리합니다. 검증자는 배경에서 트랜잭션 배치를 계속 전파합니다. 각 배치는 원 발신자가 2f+12f+1 지분 가중 가용성을 증명할 수 있을 때까지 확인을 받고, 그 뒤에야 제안이 그 배치를 참조할 수 있습니다. 내용이 아니라 다이제스트로 참조합니다. 합의 메시지는 처리량과 무관하게 작게 유지되고, 커밋된 블록은 언제나 재실행할 수 있습니다. 비잔틴 소수만 쥐고 있던 데이터를 어떤 블록도 참조할 수 없기 때문입니다.

가격 인증

검증자는 가격 관측자이기도 하며, 블록은 자신이 실행 기준으로 삼은 가격을 함께 담고 갑니다.
검증자합의 · 멤풀 · 오라클 sidecar · 커널 · 저장소
투표하는 참여자는 이들뿐
검증자 풀 노드커밋된 블록을 따라가며 실행 · 투표하지 않음
차단 — 공개 읽기 트래픽과 피어 연결을 대신 받아 검증자가 열린 인터넷에 직접 노출되지 않게 함
퍼블릭 풀 노드누구나 운영 가능 · 따라가고, 실행하고, 읽기에 응답
개방된 계층
클라이언트프런트엔드 · 거래 에이전트 · 마켓 메이커 · 인덱서
검증자가 아니라 풀 노드에 연결합니다. 가장 낮은 지연과 가장 완전한 뷰가 필요하면 자기 노드를 운영합니다.
합의에서 바깥으로, 네 개 계층
그 계층이 존재하는 이유
검증자는 각자 자신의 오라클 sidecar를 실행하며, 이 sidecar는 거래소 데이터를 수집해 종목별 인덱스 가격을 만듭니다. 검증자는 그 가격을 가져와 설정된 임계값 대비 신선도를 포함해 검증하고, 서명한 뒤, 서명된 제출을 합의 네트워크 메시지로 다른 검증자에게 gossip으로 전파합니다. 인증 가격은 에포크와 라운드별로 취합되어 블록에 실리며, 그래서 트랜잭션을 커밋하는 서명이 그 트랜잭션이 결제되는 가격까지 함께 커밋합니다. 검증자는 현재 라운드에 대한 유효한 가격 관측을 제시할 수 있을 때만 블록을 제안할 자격을 갖습니다. 따라서 가격 가용성은 실행이 있기를 바라며 찾는 입력이 아니라 블록 생성의 전제 조건입니다.
이것은 가격을 트랜잭션에 묶을 뿐, 가격이 옳다는 뜻은 아닙니다. 합의가 인증하는 것은 검증자 정족수가 이 라운드에 이 관측값을 제출했다는 사실입니다. 기반이 되는 거래소가 정확했는지는 별개의 문제이며, 오라클 페이지의 집계 규칙이 다루고 리스크 고지가 그 한계를 밝힙니다.

리더 평판

리더는 결정론적 지분 가중 순환으로 라운드마다 선정되며, 여기에 슬라이딩 윈도 기반 평판 휴리스틱이 더해집니다. 제안에 반복해서 실패하는 검증자는 가용하지 않거나 적대적으로 행동한다는 신호이므로, 이후 선정에서 강등되고 그 슬롯은 최근 응답이 좋은 검증자에게 재분배됩니다. 그래서 가용하지 않은 검증자가 자기 몫의 슬롯에 대한 리더 자리를 붙들고 진행을 멈춰 세우지 못합니다. 가격 관측이 제안 자격을 좌우하므로, 평판 역시 시장 데이터 연결이 가장 좋은 검증자에게 리더 자리가 몰리는 일을 피해야 합니다. 종목마다 여러 독립 소스에서 관측을 가져오도록 하는 거래소 다양성 요건이 그 경로를 막습니다.

에포크와 재구성

시간은 에포크 단위로 조직됩니다. 한 에포크 안에서 검증자 집합과 대부분의 파라미터는 고정입니다. 에포크 경계에서는 거버넌스가 승인한 재구성을 거쳐 이 값이 바뀔 수 있습니다. 검증자 집합 변경, 합의 파라미터 변경, 리스크 파라미터 갱신, 긴급 조치가 여기에 해당합니다. 전환은 원자적입니다. 정직한 검증자는 모두 같은 블록 높이에서 같은 전환을 봅니다.

네트워크 토폴로지

리더
검증자
체인
2f+1 지분 가중 집계
이제 순서와 가격은 바뀌지 않습니다
블록 제안 — 배치 다이제스트와 인증 가격
가용성 · 순서 · 가격 검증
투표
라운드 인증
커밋
검증자는 합의에 참여합니다. 각 검증자는 합의, 멤풀, 오라클 sidecar, 커널 실행, 저장소까지 전체 스택을 운영합니다. 투표하는 참여자는 이들뿐입니다. 검증자 풀 노드는 검증자 바로 뒤에 놓입니다. 커밋된 블록을 따라가며 실행하지만 투표하지는 않습니다. 이 계층의 목적은 차단입니다. 공개 읽기 트래픽과 피어 연결을 대신 받아 내어 검증자가 열린 인터넷에 직접 노출되지 않게 합니다. 퍼블릭 풀 노드는 개방된 계층입니다. 누구나 운영할 수 있습니다. 체인을 따라가고, 커밋된 블록을 실행하고, 읽기 요청에 응답하며, 하위 시스템에 데이터를 공급합니다. 클라이언트, 즉 프런트엔드와 거래 에이전트, 마켓 메이커, 인덱서는 검증자가 아니라 풀 노드에 연결합니다. 가장 낮은 지연과 가장 완전한 뷰가 필요한 클라이언트는 남의 노드에 의존하는 대신 자기 풀 노드를 운영합니다. 네트워크에 새로 합류하는 노드는 기본적으로 제네시스부터 재실행하지 않습니다. 새 노드가 따라잡는 방식은 상태 동기화를 참고하십시오.

다음으로 읽을 문서

멤풀

무엇이 어떤 순서로 합의에 도달하고, 무엇이 버려지는지 설명합니다.

IntentionKernel

순서와 가격이 커밋된 뒤 블록에 무슨 일이 일어나는지 설명합니다.

오라클

검증자가 서명하기 전에 인덱스 가격이 만들어지는 과정입니다.

노드 운영

검증자 집합이 닫혀 있는 이유와, 합류를 문의하는 방법입니다.