Documentation Index
Fetch the complete documentation index at: https://docs.stablenet.network/llms.txt
Use this file to discover all available pages before exploring further.
Anzeon WBFT는 StableNet의 스테이블코인 아키텍처에 맞게 조정된, WBFT(QBFT의 발전형)에서 파생된 PoA BFT 합의 엔진입니다.
프로토콜 계보
| 프로토콜 | 기반 | 주요 차이 |
|---|
| QBFT | BFT | 허가형 밸리데이터, 스테이킹 없음 |
| WBFT | QBFT | 스테이킹, 성실도 점수, 슬래싱 추가 |
| Anzeon WBFT | WBFT | 스테이킹과 블록 보상 제거; GovValidator로 밸리데이터 관리 |
Anzeon WBFT는 StableNet 밸리데이터가 경제적 스테이커가 아닌 승인된 거버넌스 참여자이기 때문에 스테이킹과 블록 보상을 제거합니다. 밸리데이터는 트랜잭션 수수료(BaseFee 분배)만 받습니다.
합의 속성
| 속성 | 값 |
|---|
| 블록 시간 | ~1초 (BlockPeriodSeconds) |
| 내결함성 | f = ⌊(n−1)/3⌋ 비잔틴 밸리데이터 |
| 최종성 | 즉각적, 결정론적 — 롤백 없음 |
| 에포크 길이 | 10 블록 (기본값, 설정 가능) |
| 제안자 선택 | 라운드 로빈 (기본값) |
| 서명 방식 | BLS12-381 집계 |
블록 생성 흐름
Anzeon WBFT는 타이머 기반 채굴 루프를 합의 이벤트 기반 루프로 대체합니다. 이전 블록이 최종 확정될 때만 새 블록이 생성됩니다.
[제안자 선택됨]
│
▼
PROPOSE ──► 제안자가 서명된 블록 제안을 브로드캐스트
│
▼
PREPARE ──► 밸리데이터들이 제안 검증 후 PREPARE-VOTE 브로드캐스트
│ (2f+1 PREPARE-VOTE 수집)
▼
COMMIT ──► 밸리데이터들이 COMMIT-VOTE 브로드캐스트
│ (2f+1 COMMIT-VOTE 수집)
▼
FINALIZE ──► 블록 봉인, 체인에 추가 — 영구적으로 확정
RequestTimeoutSeconds 내에 쿼럼에 도달하지 못하면 라운드가 실패합니다. 프로토콜은 지수적으로 증가하는 타임아웃(MaxRequestTimeoutSeconds까지)으로 다음 라운드로 진행하고, 새 제안자가 선택됩니다.
BLS 서명 집계
각 단계에서 밸리데이터들은 BLS12-381 키로 서명합니다. 한 단계의 2f+1 서명 모두가 블록 헤더에 포함되기 전에 단일 컴팩트 서명으로 집계됩니다. 효과:
- 단계별 네트워크 메시지 크기 감소
- 각 노드의 검증 비용 감소
집계 서명은 블록 헤더의 WBFTExtra 필드에 저장됩니다 (PREPARE는 PreparedSeal, COMMIT은 CommittedSeal).
밸리데이터 세트 관리
활성 밸리데이터 세트는 에포크 (기본값: 10 블록)별로 저장됩니다. 각 에포크 경계에서:
- 합의 엔진이 GovValidator 컨트랙트(
0x…1001)에서 현재 밸리데이터 목록을 읽음
- 새
EpochInfo가 구성되어 에포크의 첫 번째 블록 헤더에 포함됨
- 새 밸리데이터 세트가 다음 에포크부터 활성화됨
밸리데이터 세트 변경(추가, 제거)은 다음 에포크 경계에서 적용됩니다 — 에포크 중간 변경은 불가능합니다.
가스 팁 동기화
각 블록 이후, 워커는 GovValidator에서 현재 gasTip 값을 조회하고 트랜잭션 풀 필터를 업데이트합니다. 거버넌스 적용 팁 미만의 트랜잭션은 블록 포함 전에 거부됩니다.
블록 헤더 추가 데이터
WBFT 메타데이터는 블록 헤더의 Extra 필드에 RLP 인코딩되어 저장됩니다:
| 필드 | 목적 |
|---|
Round | 이 블록을 생성한 합의 라운드 |
EpochInfo | 이 에포크의 밸리데이터 세트 (에포크 블록에만) |
GasTip | 거버넌스 적용 최소 우선순위 수수료 |
PreparedSeal | PREPARE 단계의 집계 BLS 서명 |
CommittedSeal | COMMIT 단계의 집계 BLS 서명 |
개발자 이점
- 블록 1개 = 확정 — 정상 운영 중 재편성 없음
- 재편성 처리 불필요 — 블록 번호가 있는
eth_getTransactionReceipt로 충분
- PoA 밸리데이터 — 밸리데이터 세트는 개방형 스테이킹이 아닌 거버넌스로 제어됨
관련 문서