목적 및 범위
이 문서는 StableNet의 합의 메커니즘과 블록 생성 프로세스를 설명합니다. Anzeon WBFT 합의 프로토콜, 블록 생성 파이프라인, 검증자 관리, 가스 팁 정책 적용을 다룹니다. 검증자 거버넌스 컨트랙트에 대한 자세한 내용은 검증자 거버넌스 (GovValidator)를 참조하세요. 블록 내 트랜잭션 처리에 대한 내용은 트랜잭션 처리를 참조하세요.합의 아키텍처 개요
StableNet은 Anzeon WBFT 합의 엔진을 사용하며, 이는 Wemix Byzantine Fault Tolerance 프로토콜의 Proof-of-Authority(PoA) 변형입니다. 합의 레이어는 블록 생성 레이어(Worker)와 조정하여 블록을 생성, 검증, 최종화합니다.시스템 컴포넌트
Anzeon WBFT 합의 프로토콜
프로토콜 특성
Anzeon WBFT는 StableNet의 WBFT 합의 알고리즘 적용입니다. 주요 특성:| Property | Value |
|---|---|
| Type | Byzantine Fault Tolerant (BFT) |
| Model | Proof-of-Authority (PoA) |
| Block Time | 1 second (configurable) |
| Finality | Deterministic, immediate |
| Signature Scheme | BLS (Boneh-Lynn-Shacham) |
| Fault Tolerance | Up to f = ⌊(n-1)/3⌋ Byzantine validators |
| Epoch Length | 10 blocks (configurable) |
WBFT와의 차이점
Anzeon WBFT는 StableNet의 스테이블코인 중심 설계에 맞추기 위해 원래 WBFT 구현에서 여러 기능을 제거했습니다: 주요 수정사항:- 스테이킹 불필요: 검증자는 토큰 예치 없이 순수하게 거버넌스 투표를 통해 관리됩니다
- 블록 보상 없음: 검증자는 트랜잭션 수수료만 획득합니다(1:1 스테이블코인 페그 유지)
- Anzeon 포크 활성화: Anzeon은 제네시스 블록부터 활성화됩니다
- BLS 키 저장소:
GovStaking에서GovValidator컨트랙트로 이동 - 제거된 거버넌스 컨트랙트:
GovStaking,GovConfig,GovNCP,GovRewardeeImp가 없습니다
합의 구성
Anzeon 구성은 제네시스 블록에 지정됩니다: 구성 구조 :anzeon.wbft: 핵심 합의 매개변수(에포크 길이, 블록 주기, 타임아웃)anzeon.init: 에포크 0에서 활성화 되는 초기 검증자 세트anzeon.systemContracts.govValidator: 에포크 1+의 검증자 세트를 포함한 검증자 거버넌스 매개변수
init.validators는 첫 번째 에포크에만 적용됩니다. govValidator.validators 매개변수는 에포크 1부터 활성 세트를 정의합니다.
블록 최종화 흐름
WBFT 합의는 효율성을 위해 BLS 서명 집계가 있는 2단계 커밋 프로토콜(PREPARE 및 COMMIT)을 따릅니다.2f+1 검증자(f는 허용 가능한 최대 비잔틴 장애 수)가 두 단계를 모두 서명하면 블록이 최종화된 것으로 간주되며 되돌릴 수 없습니다.
블록 생성 파이프라인
Worker 컴포넌트(miner/worker.go)는 블록을 조립하고 생성하는 역할을 합니다. 트랜잭션 선택, 상태 전환, 합의 엔진 통합을 조정합니다.
Worker 아키텍처
Worker 이벤트 루프(WBFT 모드)
WBFT 모드에서 worker는 표준 Ethereum 마이닝과 비교하여 단순화된 이벤트 루프를 사용합니다: 표준 마이닝과의 주요 차이점- 주기적 재커밋 없음: 표준 Ethereum 마이너는 더 높은 수수료 트랜잭션을 포함하기 위해 주기적으로 블록을 재생성합니다. WBFT는 합의 엔진의 타이밍에 의존합니다.
- 합의 주도 타이밍:
readyToCommitCh는 블록을 생성할 시간이 되면 WBFT 엔진에 의해 신호됩니다. - 라운드 기반: 각 합의 라운드는 하나의 블록 생성 시도를 트리거합니다.
블록 조립 프로세스
commitWork() 함수는 전체 블록 조립 프로세스를 조정합니다:
핵심 함수
commitWork(interrupt, timestamp): 메인 조정자, 인터럽트 신호 처리generateWork(params): 작업 환경 및 상태 구축commitTransactions(txs, coinbase): 가스 제한을 준수하면서 트랜잭션을 순차적으로 적용commit(env, interval): finalize를 위해 합의 엔진에 작업 제출
트랜잭션 선택 및 순서 지정
트랜잭션 선택 알고리즘- 대기 중인 트랜잭션 가져오기: 최소 가스 팁 요구사항을 충족하는 풀의 모든 트랜잭션 검색
- 로컬 우선순위: 로컬 트랜잭션을 먼저 처리합니다
- 가스 팁 적용: Anzeon 모드에서 일반 계정은
GovValidator에서 정해진 가스 팁을 사용해야 합니다. 단, 승인된 계정은 사용자 정의 팁을 지정할 수 있습니다 - Nonce 순서 지정: 각 계정 내에서 트랜잭션은 nonce별로 순차적이어야 합니다
- 가격 순서 지정: 계정 간에 더 높은 유효 가스 가격 트랜잭션이 우선순위를 가집니다
- 가스 제한: 블록 가스 제한에 도달하면 중지합니다
가스 팁 관리
StableNet의 가스 팁 정책은 Worker의GovValidator 컨트랙트 통합을 통해 적용됩니다:
구현 세부사항
- 초기화: Worker 생성 시 가스 팁은
GovValidator에서 읽습니다 - 콜백 등록: 블록체인은 각 블록 가져오기 후 호출되는
updateGasTipFromContract를 콜백으로 등록합니다 - 동기화: Worker의 내부
tip필드와 트랜잭션 풀의 최소 가격이 함께 업데이트됩니다 - 락 없는 업데이트: 콜백은 상태만 수신하여 worker의 메인 루프와의 락 경합을 피합니다
검증자 관리
키 관리
StableNet 검증자는 거버넌스, 블록 생성, 합의 메시지를 위해 세 가지 키(운영 키, 검증자 키, BLS 키)를 사용합니다.각 키의 역할, 사용 위치, 파생 방식에 대한 자세한 설명은 운영 가이드의 검증자 운영을 참고하세요.
검증자 등록 및 순환
검증자 세트 업데이트- 에포크 블록: 검증자 세트 변경은 에포크 블록에서만 적용됩니다
- 컨트랙트 읽기: 에포크 블록 생성 시 WBFT 엔진은
GovValidator에서 현재 검증자 목록을 읽습니다 - 멤버 버전:
memberVersion필드는 변경사항을 추적하며, WBFT 엔진은 버전을 비교하여 업데이트를 감지합니다 - 즉시 효과: 에포크가 새 검증자 세트로 시작되면 해당 세트는 에포크 기간 동안 변경할 수 없습니다
제네시스 vs 런타임 검증자 세트
StableNet은 제네시스 구성에 두 가지 검증자 세트 사양을 가집니다: 중요한 구성 참고사항- 에포크 0: 블록 1부터 첫 번째 에포크까지 활성인 검증자 세트는
anzeon.init.validators에 의해 결정됩니다 - 에포크 1+:
epochLength + 1블록부터 검증자 세트는GovValidator컨트랙트의validators매개변수에서 읽습니다 - 모범 사례: 제어된 검증자 마이그레이션을 수행하지 않는 한 이 두 목록은 동일해야 합니다
통합 지점
Worker-WBFT 통합
Worker와 WBFT 엔진은 콜백 메커니즘을 통해 조정됩니다: 코드 흐름- 시작:
eth.StartMining()이miner.Start()를 호출하고, 이는worker.start()를 호출합니다 - 엔진 시작:
worker.start()는readyToCommit콜백을 전달하여wbftEngine.Start()를 호출합니다 - 합의 트리거: WBFT 코어가 블록을 제안할 시간이라고 판단하면
readyToCommit(round)를 호출합니다 - 블록 생성: 콜백은
readyToCommitCh에 신호를 보내commitWork()를 트리거합니다 - 봉인: 조립된 블록은 합의 처리를 위해
engine.Seal()로 전송됩니다
마이너 초기화
마이너는 Ethereum 백엔드 설정 중에 초기화됩니다: Anzeon 특정 설정- 강제 Etherbase: Anzeon 모드에서 etherbase는 자동으로 노드키 주소로 설정됩니다(사용자 구성 불가)
- 가스 팁 초기화: Worker는 구성 중에
GovValidator에서 초기 가스 팁을 읽습니다
요약
StableNet의 합의 및 블록 생성 시스템은 다음 특징을 가집니다:- 결정적 최종성: Anzeon WBFT는 BFT 합의를 통해 즉각적이고 되돌릴 수 없는 최종성을 제공합니다
- 거버넌스 주도 검증자: 검증자 세트는 온체인 거버넌스(GovValidator 컨트랙트)를 통해 완전히 관리됩니다
- 스테이블코인 정렬 경제학: 블록 보상 없음, 토큰 소각 없음, 수수료만 검증자 수입
- 동적 가스 팁 정책: GovValidator에서 적용되는 네트워크 전체 가스 팁, 자동 업데이트
- 키 보안 모델: 거버넌스, 블록 생성, 합의 서명 키의 분리
- 에포크 기반 순환: 검증자 세트 변경은 안정성을 위해 에포크 블록에서만 적용됩니다

