목적 및 범위
이 문서는 StableNet에서 사용되는 Anzeon WBFT 합의 프로토콜에 대한 심층적인 기술 설명을 제공합니다.비잔틴 장애 허용 메커니즘, 에포크 기반 검증자 관리, BLS 서명 집계, 블록 생성 통합, 합의 컴포넌트와 시스템 컨트랙트 간의 관계를 다룹니다. 검증자 거버넌스 및 투표를 통한 검증자 세트 관리에 대한 정보는 검증자 거버넌스 (GovValidator),
블록 생성 및 트랜잭션 선택에 대한 세부사항은 블록 생성 및 마이닝를 참조하세요.
개요
Anzeon WBFT는 StableNet의 Proof-of-Authority 아키텍처에 맞게 조정된 WEMIX Byzantine Fault Tolerance(WBFT) 합의 엔진의 특수 변형입니다.WBFT는 QBFT(Quorum Byzantine Fault Tolerance)를 기반으로 발전한 합의 알고리즘으로, 비잔틴 장애 허용 특성을 유지하면서도 운영 환경에 맞춘 확장성을 제공합니다.
WBFT 및 QBFT와의 관계
| Protocol | Characteristics | Target Network |
|---|---|---|
| QBFT | 기본 BFT, 허가형 검증자 | Private / PoA 네트워크 |
| WBFT | QBFT + 스테이킹 + 성실도 + 슬래싱 | Public / Hybrid 네트워크 |
| Anzeon WBFT | WBFT에서 스테이킹·보상 제거, PoA 최적화 | StableNet |
Anzeon WBFT의 주요 수정사항
Anzeon WBFT는 StableNet의 스테이블코인 중심 설계에 맞추어 표준 WBFT에서 다음 요소를 제거하거나 단순화합니다.- 스테이킹 메커니즘 제거: 검증자 자격은 토큰 예치가 아닌 GovValidator 거버넌스를 통해 결정됩니다
- 블록 보상 제거: 신규 토큰 발행이 없으며 검증자는 트랜잭션 수수료만 획득합니다
- 레거시 WPoA 제거: 하위 호환 레이어 없이 순수 WBFT 엔진만 사용합니다
- **성실도 보상 **: 성실도 정보를 기반으로 Basefee를 검증자에게 분배합니다
- 거버넌스 기반 구성: 검증자 세트, 가스 팁이 시스템 컨트랙트로 관리됩니다
합의 속성
| Property | Value |
|---|---|
| Byzantine Fault Tolerance | 최대 f = ⌊(n-1)/3⌋ 비잔틴 검증자 허용 |
| Finality | 즉시(final), 롤백 불가 |
| Block Time | 구성 가능, 기본 1초 |
| Epoch Length | 구성 가능, 기본 10블록 |
| Signature Scheme | BLS12-381 집계 서명 |
| Proposer Selection | 기본 Round-robin, 설정 가능 |
구성 및 초기화
AnzeonConfig 구조
체인 구성의AnzeonConfig 구조는 WBFT 합의에 필요한 모든 파라미터를 정의합니다.
WBFT 구성 필드
| Field | Type | Description |
|---|---|---|
EpochLength | uint64 | 에포크당 블록 수 |
BlockPeriodSeconds | uint64 | 블록 간 목표 시간 |
RequestTimeoutSeconds | uint64 | 초기 합의 라운드 타임아웃 |
MaxRequestTimeoutSeconds | *uint64 | 최대 타임아웃 값 |
ProposerPolicy | *uint64 | 제안자 선택 정책 |
Init 구성
Init 섹션은 첫 번째 에포크 동안 활성화되는 초기 검증자 세트를 정의합니다.이 세트는 블록 1부터 첫 번째 에포크 블록까지 적용되며, 이후에는 GovValidator 컨트랙트에서 관리되는 검증자 세트가 사용됩니다.
제네시스 구성 예제
초기 검증자 세트와 WBFT 파라미터는 제네시스 블록에 명시적으로 포함되어야 하며, 에포크 1 이후의 검증자 관리 책임은 GovValidator로 이전됩니다.합의 아키텍처
라운드 및 에포크
Anzeon WBFT는 합의 과정을 에포크와 라운드라는 두 계층으로 나눕니다. 에포크는 고정된 블록 수로 구성되며, 에포크 블록에서만 검증자 세트 변경이 가능합니다.라운드는 특정 블록에 대한 합의 시도를 의미하며, 실패 시 타임아웃 증가와 함께 다음 라운드로 전환됩니다.
블록 기간 및 타임아웃
| Timer | Purpose |
|---|---|
BlockPeriodSeconds | 블록 생성 주기 |
RequestTimeoutSeconds | 초기 합의 타임아웃 |
MaxRequestTimeoutSeconds | 최대 타임아웃 |
비잔틴 장애 허용 메커니즘
Anzeon WBFT는 PREPARE와 COMMIT 두 단계로 구성된 커밋 프로토콜을 사용하며, 각 단계에서 BLS 서명 집계를 활용합니다.BLS 서명 집계
BLS 집계 서명은 다수 검증자의 서명을 하나로 결합하여 네트워크 오버헤드와 검증 비용을 크게 줄입니다.- 서명 크기 감소
- 단일 검증 연산
- 2f+1 서명 확보 시 안전성 보장
쿼럼 요구사항
n명의 검증자 중 f = ⌊(n-1)/3⌋를 허용할 때 필요한 서명 수는 다음과 같습니다.| Phase | Quorum Size |
|---|---|
| PREPARE | 2f + 1 |
| COMMIT | 2f + 1 |
검증자 세트 관리
EpochInfo 구조
EpochInfo는 특정 에포크에서 유효한 검증자 세트 정보를 담으며, 블록 헤더의 WBFTExtra 필드에 인코딩됩니다.
에포크 전환 프로세스
에포크 전환 시 다음 절차가 수행됩니다.- 블록 번호가 에포크 블록인지 확인
- GovValidator 컨트랙트에서 최신 검증자 목록 조회
- 새로운 EpochInfo 구성
- 에포크 첫 블록 헤더에 반영
- 새 검증자 세트 활성화
블록 생성 통합
Anzeon WBFT는 표준 Ethereum 합의와 달리 워커가 합의 엔진에 의해 트리거됩니다.WBFT용 워커 루프
WBFT 모드에서는readyToCommitCh 이벤트를 통해서만 블록 생성이 시작되며, 주기적 재커밋은 수행되지 않습니다.
| Aspect | Standard Mining | WBFT Mining |
|---|---|---|
| Trigger | 타이머 기반 | 합의 이벤트 기반 |
| Seal | 비동기 | 동기(BFT) |
| Reorg | 허용 | 제한적 |
가스 팁 업데이트
워커는 매 블록 후 GovValidator 컨트랙트를 조회하여 네트워크 전역 가스 팁을 동기화하고, 트랜잭션 풀 필터 기준을 갱신합니다.블록 헤더 Extra 데이터
WBFTExtra 구조
WBFT 관련 메타데이터와 서명은 블록 헤더의Extra 필드에 RLP 인코딩되어 저장됩니다.
| Field | Genesis | Creation | PREPARE | COMMIT | Final |
|---|---|---|---|---|---|
| VanityData | ✓ | ✓ | ✓ | ✓ | ✓ |
| Round | 0 | Set | ✓ | ✓ | ✓ |
| EpochInfo | ✓ | Boundary | ✓ | ✓ | ✓ |
| GasTip | ✓ | ✓ | ✓ | ✓ | ✓ |
| PreparedSeal | Empty | Empty | Set | ✓ | ✓ |
| CommittedSeal | Empty | Empty | Empty | Set | ✓ |
프로토콜 메시지
WBFT는 블록 합의를 위해 다음 메시지 타입을 사용합니다.| Message | Purpose |
|---|---|
| PREPARE | 블록 제안 |
| PREPARE-VOTE | 제안 승인 |
| COMMIT | 준비 완료 블록 전파 |
| COMMIT-VOTE | 최종 승인 |
| ROUND-CHANGE | 라운드 전환 요청 |
아키텍처 요약
Anzeon WBFT는 제네시스 설정, 합의 엔진, 워커, 시스템 컨트랙트가 긴밀하게 연동되는 구조를 가집니다.- 제네시스에서 합의 파라미터와 초기 검증자 정의
- 합의 엔진이 워커의 블록 생성을 제어
- 블록 헤더에 합의 결과와 검증자 정보 인코딩
- 에포크 블록에서 GovValidator를 통한 검증자 세트 갱신
- 가스 팁 정책이 트랜잭션 처리에 즉시 반영

