메인 콘텐츠로 건너뛰기

목적 및 범위

이 문서는 StableNet 블록체인에서 검증자 세트 거버넌스를 관리하는 GovValidator 시스템 컨트랙트를 설명합니다.
GovValidator는 검증자 등록 및 제거, BLS 키 관리, 네트워크 전반의 가스 팁 정책을 담당합니다.
모든 시스템 컨트랙트에 대한 개요는 시스템 컨트랙트 개요을 참조하세요.
민팅 거버넌스는 민팅 거버넌스 (GovMasterMinter 및 GovMinter)를 참조하세요.

개요

GovValidator(0x0000000000000000000000000000000000001001)는 검증자 세트에 대한 온체인 거버넌스를 구현하는 제네시스 배포 시스템 컨트랙트입니다.
전통적인 스테이킹 기반 검증자 시스템과 달리 StableNet은 기존 거버넌스 멤버의 집단 투표를 통해 검증자가 관리되는 Proof-of-Authority(PoA) 모델을 사용합니다.
주요 책임:
  • 검증자 세트 관리: 거버넌스 투표를 통해 검증자 등록 및 제거
  • 키 관리: 각 검증자에 대한 운영 키, 검증자 키, BLS 공개 키 관리
  • 가스 팁 정책: 네트워크 전반의 필수 가스 팁 설정 및 적용
  • 쿼럼 기반 결정: 모든 거버넌스 작업은 쿼럼 임계값을 충족하는 멤버 투표가 필요함

아키텍처 개요

GovValidator 컨트랙트는 WBFT 합의 엔진과 상호 작용하여 검증자 세트 변경과 가스 팁 정책을 적용합니다.

검증자 키 구조

StableNet 검증자는 운영 키(Operator), 검증자 키(Validator), BLS 키의 세 가지 키를 사용합니다.
각 키의 역할, 생성·파생 절차, 제네시스 구성 예시는 운영 가이드의 검증자 작업을 참고하세요.

제네시스 구성

GovValidator는 제네시스에서 다음 매개변수로 초기화됩니다.
ParameterTypeDescription
membersaddress[]운영 키 주소 목록
validatorsaddress[]검증자 키 주소 목록
blsPublicKeysbytes[]BLS 공개 키 목록
quorumuint256거버넌스 작업에 필요한 최소 승인 수
expiryuint256제안 만료 시간(초)
memberVersionuint256멤버/검증자 세트 변경 버전
gasTipuint256초기 네트워크 공통 가스 팁
중요:
init.validators / init.blsPublicKeys첫 번째 에포크에만 사용됩니다.
두 번째 에포크부터는 GovValidator 컨트랙트의 저장소 값이 기준이 됩니다.

검증자 거버넌스 흐름

검증자 추가

검증자 추가는 다음 단계를 따릅니다.
  1. 거버넌스 멤버가 새 검증자 정보를 포함한 제안 생성
  2. 다른 멤버들이 투표
  3. 승인 수가 쿼럼에 도달하면 제안 실행
  4. memberVersion 증가
  5. 다음 에포크부터 새 검증자 활성화

검증자 제거

검증자 제거 역시 동일한 쿼럼 기반 제안/투표/실행 흐름을 따르며, 제거된 검증자는 다음 에포크부터 합의 및 블록 서명에 참여하지 않습니다.

가스 팁 정책 관리

GovValidator는 네트워크 전반에 적용되는 필수 가스 팁을 관리합니다.
일반 계정은 이 값을 반드시 따라야 하며, Authorized 계정만 예외적으로 사용자 지정 팁을 설정할 수 있습니다.

가스 팁 라이프사이클

  1. 거버넌스 멤버가 setGasTip(newTip) 제안
  2. 쿼럼 투표 통과
  3. 컨트랙트 저장소의 gasTip 업데이트
  4. 다음 블록 헤더에 반영
  5. 워커와 TxPool이 새로운 최소값으로 동기화

트랜잭션 선택 시 적용

Transaction TypeGas Tip Rule
Normal Account거버넌스 gasTip 강제
Authorized Account사용자 지정 tip 허용
Below MinimumTxPool에서 거부

WBFT 합의와의 통합

GovValidator는 에포크 블록마다 WBFT 합의 엔진에 활성 검증자 세트를 제공합니다. 에포크 전환 시:
  1. 합의 엔진이 에포크 블록 감지
  2. GovValidator 저장소에서 validators[]blsPublicKeys[] 조회
  3. EpochInfo 구성
  4. 블록 헤더 Extra 데이터에 인코딩
  5. 다음 에포크에서 새 세트 활성화

컨트랙트 저장소 레이아웃

VariableTypeDescription
membersaddress[]거버넌스 운영 키
validatorsaddress[]검증자 키
blsPublicKeysbytes[]BLS 공개 키
memberVersionuint256세트 변경 버전
quorumuint256최소 승인 수
expiryuint256제안 만료 시간
gasTipuint256네트워크 필수 가스 팁

거버넌스 멤버 작업

OperationEffect
Add Validator다음 에포크부터 검증자 추가
Remove Validator다음 에포크부터 검증자 제거
Set Gas Tip네트워크 최소 우선순위 수수료 변경
Query Validators현재 검증자 목록 조회
Query Gas Tip현재 가스 팁 조회
모든 변경 작업은 쿼럼 기반 투표를 통해서만 실행됩니다.

다른 컨트랙트와의 관계

GovValidator는 StableNet 거버넌스 시스템의 일부로,
민팅 정책(GovMasterMinter/GovMinter) 및 계정 정책(GovCouncil)과 역할이 명확히 분리되어 있습니다.
이 분리를 통해 합의·검증자 운영과 통화 정책을 독립적으로 관리할 수 있습니다.