Skip to main content

Purpose and Scope

This page provides an overview of the five system contracts in StableNet, their fixed addresses, and the genesis deployment and initialization model.
These contracts implement the core governance mechanisms for validator management, mint/burn authorization, and ERC-20 compatibility for the native stablecoin.
For detailed documentation of each contract, refer to the following pages:

The Five System Contracts

StableNet deploys five system contracts directly at predefined addresses during genesis block creation.
These contracts are deployed without owners and do not use common upgrade patterns (such as proxies); they can be replaced only via hard forks.
Contract NameAddressPrimary PurposeVersion
NativeCoinAdapter0x0000000000000000000000000000000000001000ERC-20 wrapper for native stablecoin balances; entry point for mint/burnv1
GovValidator0x0000000000000000000000000000000000001001Validator set management, BLS key registration, gas tip (gasTip) governancev1
GovMasterMinter0x0000000000000000000000000000000000001002Registry of approved minters and global maximum mint allowance capsv1
GovMinter0x0000000000000000000000000000000000001003Creation, voting, and execution of proof-based mint/burn proposalsv1
GovCouncil0x0000000000000000000000000000000000001004Management of blacklists and Authorized account sets; AccountManager integrationv1

Contract Deployment Architecture

System contracts are deployed during genesis block creation via a state transition mechanism that writes both bytecode and initialized storage directly into the genesis state.

Genesis Configuration Structure

System contracts are defined in the genesis file under the config.anzeon.systemContracts section, where the address, version, and initialization parameters for each contract are specified.

Versioning and Bytecode Storage

Contract bytecode is embedded into the node binary at compile time and indexed by contract name and version.
The SystemContractCodes map provides version-controlled access to the deployable bytecode.
The version validation process ensures that only supported contract versions can be deployed.

Contract Initialization Parameters

Each system contract requires specific initialization parameters to construct its storage state at genesis.
These parameters are interpreted and validated by the contract-specific initialization functions.

Contract Dependency Graph

System contracts form a dependency hierarchy in which some contracts reference others.
Understanding these dependencies is essential for correct configuration.

Storage Initialization Process

Each contract’s initialization function writes values to predefined storage slots.
Initialization follows Solidity storage layout rules to compute slot addresses for mappings and dynamic arrays.

Contract Upgrade Mechanism

System contracts are deployed without owners and cannot be upgraded through standard contract mechanisms.
The only supported upgrade path is via a hard fork.