메인 콘텐츠로 건너뛰기

목적 및 범위

이 페이지는 StableNet의 5개 시스템 컨트랙트와 그 고정 주소, 제네시스 배포·초기화 방식을 개략적으로 설명합니다.
이 컨트랙트들은 검증자 관리, 민팅/소각 승인, 네이티브 스테이블코인 ERC-20 호환성을 위한 핵심 거버넌스 메커니즘을 구현합니다.
개별 컨트랙트에 대한 자세한 문서는 다음을 참조하세요:

5개의 시스템 컨트랙트

StableNet은 제네시스 블록 생성 시 미리 정해진 주소에 5개의 시스템 컨트랙트를 직접 배포합니다.
이 컨트랙트들은 소유자 없이 배포되며, 일반적인 업그레이드 패턴(프록시 등)을 사용하지 않고 하드 포크를 통해서만 교체할 수 있습니다.
Contract NameAddressPrimary PurposeVersion
NativeCoinAdapter0x0000000000000000000000000000000000001000네이티브 스테이블코인 잔액에 대한 ERC-20 래퍼, mint/burn 진입점v1
GovValidator0x0000000000000000000000000000000000001001검증자 세트 관리, BLS 키 등록, 가스 팁(gasTip) 거버넌스v1
GovMasterMinter0x0000000000000000000000000000000000001002승인된 민터 레지스트리 및 전역 최대 민터 허용량 상한 관리v1
GovMinter0x0000000000000000000000000000000000001003증명 기반 민트/번 제안 생성·투표·실행v1
GovCouncil0x0000000000000000000000000000000000001004블랙리스트 및 Authorized 계정 세트 관리, AccountManager 연동v1

컨트랙트 배포 아키텍처

시스템 컨트랙트는 바이트코드와 초기화된 저장소를 모두 제네시스 상태에 쓰는 상태 전환 메커니즘을 통해 제네시스 블록 생성 중에 배포됩니다.

제네시스 구성 구조

시스템 컨트랙트는 제네시스 파일의 config.anzeon.systemContracts 섹션에 정의되며, 각 컨트랙트에 대해 주소·버전·초기화 매개변수를 지정합니다.

버전 관리 및 바이트코드 저장

컨트랙트 바이트코드는 컴파일 시 바이너리에 포함되며 컨트랙트 이름과 버전으로 인덱싱됩니다. SystemContractCodes 맵은 배포된 바이트코드에 대한 버전 제어 액세스를 제공합니다. 버전 검증 프로세스는 지원되는 컨트랙트 버전만 배포할 수 있도록 보장합니다.

컨트랙트 초기화 매개변수

각 시스템 컨트랙트는 제네시스에서 저장소 상태를 구성하기 위한 특정 초기화 매개변수를 필요로 하며, 매개변수는 컨트랙트별 초기화 함수에서 해석·검증됩니다.

컨트랙트 종속성 그래프

시스템 컨트랙트는 일부 컨트랙트가 다른 컨트랙트를 참조하는 종속성 계층 구조를 형성합니다. 이러한 종속성을 이해하는 것은 올바른 구성을 위해 중요합니다.

저장소 초기화 프로세스

각 컨트랙트의 초기화 함수는 미리 정해진 저장소 슬롯에 특정 값을 씁니다. 초기화는 Solidity 저장소 레이아웃 규칙을 사용하여 매핑 및 동적 배열에 대한 슬롯 주소를 계산합니다.

컨트랙트 업그레이드 메커니즘

시스템 컨트랙트는 소유자 없이 배포되며 일반 컨트랙트 메커니즘을 통해 업그레이드할 수 없습니다. 유일한 업그레이드 경로는 하드 포크를 통한 것입니다.