목적 및 범위
이 문서는 StableNet 블록체인에서 검증자 세트 거버넌스를 관리하는 GovValidator 시스템 컨트랙트를 설명합니다.GovValidator는 검증자 등록 및 제거, BLS 키 관리, 네트워크 전반의 가스 팁 정책을 담당합니다. 모든 시스템 컨트랙트에 대한 개요는 시스템 컨트랙트 개요을 참조하세요.
민팅 거버넌스는 민팅 거버넌스 (GovMasterMinter 및 GovMinter)를 참조하세요.
개요
GovValidator(0x0000000000000000000000000000000000001001)는 검증자 세트에 대한 온체인 거버넌스를 구현하는 제네시스 배포 시스템 컨트랙트입니다.전통적인 스테이킹 기반 검증자 시스템과 달리 StableNet은 기존 거버넌스 멤버의 집단 투표를 통해 검증자가 관리되는 Proof-of-Authority(PoA) 모델을 사용합니다. 주요 책임:
- 검증자 세트 관리: 거버넌스 투표를 통해 검증자 등록 및 제거
- 키 관리: 각 검증자에 대한 운영 키, 검증자 키, BLS 공개 키 관리
- 가스 팁 정책: 네트워크 전반의 필수 가스 팁 설정 및 적용
- 쿼럼 기반 결정: 모든 거버넌스 작업은 쿼럼 임계값을 충족하는 멤버 투표가 필요함
아키텍처 개요
GovValidator 컨트랙트는 WBFT 합의 엔진과 상호 작용하여 검증자 세트 변경과 가스 팁 정책을 적용합니다.검증자 키 구조
StableNet 검증자는 운영 키(Operator), 검증자 키(Validator), BLS 키의 세 가지 키를 사용합니다.각 키의 역할, 생성·파생 절차, 제네시스 구성 예시는 운영 가이드의 검증자 작업을 참고하세요.
제네시스 구성
GovValidator는 제네시스에서 다음 매개변수로 초기화됩니다.| Parameter | Type | Description |
|---|---|---|
members | address[] | 운영 키 주소 목록 |
validators | address[] | 검증자 키 주소 목록 |
blsPublicKeys | bytes[] | BLS 공개 키 목록 |
quorum | uint256 | 거버넌스 작업에 필요한 최소 승인 수 |
expiry | uint256 | 제안 만료 시간(초) |
memberVersion | uint256 | 멤버/검증자 세트 변경 버전 |
gasTip | uint256 | 초기 네트워크 공통 가스 팁 |
init.validators / init.blsPublicKeys는 첫 번째 에포크에만 사용됩니다.두 번째 에포크부터는 GovValidator 컨트랙트의 저장소 값이 기준이 됩니다.
검증자 거버넌스 흐름
검증자 추가
검증자 추가는 다음 단계를 따릅니다.- 거버넌스 멤버가 새 검증자 정보를 포함한 제안 생성
- 다른 멤버들이 투표
- 승인 수가 쿼럼에 도달하면 제안 실행
memberVersion증가- 다음 에포크부터 새 검증자 활성화
검증자 제거
검증자 제거 역시 동일한 쿼럼 기반 제안/투표/실행 흐름을 따르며, 제거된 검증자는 다음 에포크부터 합의 및 블록 서명에 참여하지 않습니다.가스 팁 정책 관리
GovValidator는 네트워크 전반에 적용되는 필수 가스 팁을 관리합니다.일반 계정은 이 값을 반드시 따라야 하며, Authorized 계정만 예외적으로 사용자 지정 팁을 설정할 수 있습니다.
가스 팁 라이프사이클
- 거버넌스 멤버가
setGasTip(newTip)제안 - 쿼럼 투표 통과
- 컨트랙트 저장소의
gasTip업데이트 - 다음 블록 헤더에 반영
- 워커와 TxPool이 새로운 최소값으로 동기화
트랜잭션 선택 시 적용
| Transaction Type | Gas Tip Rule |
|---|---|
| Normal Account | 거버넌스 gasTip 강제 |
| Authorized Account | 사용자 지정 tip 허용 |
| Below Minimum | TxPool에서 거부 |
WBFT 합의와의 통합
GovValidator는 에포크 블록마다 WBFT 합의 엔진에 활성 검증자 세트를 제공합니다. 에포크 전환 시:- 합의 엔진이 에포크 블록 감지
- GovValidator 저장소에서
validators[]와blsPublicKeys[]조회 EpochInfo구성- 블록 헤더 Extra 데이터에 인코딩
- 다음 에포크에서 새 세트 활성화
컨트랙트 저장소 레이아웃
| Variable | Type | Description |
|---|---|---|
members | address[] | 거버넌스 운영 키 |
validators | address[] | 검증자 키 |
blsPublicKeys | bytes[] | BLS 공개 키 |
memberVersion | uint256 | 세트 변경 버전 |
quorum | uint256 | 최소 승인 수 |
expiry | uint256 | 제안 만료 시간 |
gasTip | uint256 | 네트워크 필수 가스 팁 |
거버넌스 멤버 작업
| Operation | Effect |
|---|---|
| Add Validator | 다음 에포크부터 검증자 추가 |
| Remove Validator | 다음 에포크부터 검증자 제거 |
| Set Gas Tip | 네트워크 최소 우선순위 수수료 변경 |
| Query Validators | 현재 검증자 목록 조회 |
| Query Gas Tip | 현재 가스 팁 조회 |
다른 컨트랙트와의 관계
GovValidator는 StableNet 거버넌스 시스템의 일부로,민팅 정책(GovMasterMinter/GovMinter) 및 계정 정책(GovCouncil)과 역할이 명확히 분리되어 있습니다. 이 분리를 통해 합의·검증자 운영과 통화 정책을 독립적으로 관리할 수 있습니다.

