Module sui_system::genesis
- Struct GenesisValidatorMetadata
- Struct GenesisChainParameters
- Struct TokenDistributionSchedule
- Struct TokenAllocation
- Constants
- Function create
- Function allocate_tokens
use std::address;
use std::ascii;
use std::bcs;
use std::internal;
use std::option;
use std::string;
use std::type_name;
use std::u128;
use std::u64;
use std::vector;
use sui::accumulator;
use sui::accumulator_settlement;
use sui::address;
use sui::bag;
use sui::balance;
use sui::bcs;
use sui::coin;
use sui::config;
use sui::deny_list;
use sui::dynamic_field;
use sui::dynamic_object_field;
use sui::event;
use sui::funds_accumulator;
use sui::hash;
use sui::hex;
use sui::object;
use sui::party;
use sui::priority_queue;
use sui::protocol_config;
use sui::sui;
use sui::table;
use sui::table_vec;
use sui::transfer;
use sui::tx_context;
use sui::types;
use sui::url;
use sui::vec_map;
use sui::vec_set;
use sui::versioned;
use sui_system::stake_subsidy;
use sui_system::staking_pool;
use sui_system::storage_fund;
use sui_system::sui_system;
use sui_system::sui_system_state_inner;
use sui_system::validator;
use sui_system::validator_cap;
use sui_system::validator_set;
use sui_system::validator_wrapper;
use sui_system::voting_power;
Struct GenesisValidatorMetadata
public struct GenesisValidatorMetadata has copy, drop
Click to open
Fields
- name: vector<u8>
- description: vector<u8>
- image_url: vector<u8>
- project_url: vector<u8>
- sui_address: address
- gas_price: u64
- commission_rate: u64
- protocol_public_key: vector<u8>
- proof_of_possession: vector<u8>
- network_public_key: vector<u8>
- worker_public_key: vector<u8>
- network_address: vector<u8>
- p2p_address: vector<u8>
- primary_address: vector<u8>
- worker_address: vector<u8>
Struct GenesisChainParameters
public struct GenesisChainParameters has copy, drop
Click to open
Fields
- protocol_version: u64
- chain_start_timestamp_ms: u64
- epoch_duration_ms: u64
- stake_subsidy_start_epoch: u64
- Stake Subsidy parameters
- stake_subsidy_initial_distribution_amount: u64
- stake_subsidy_period_length: u64
- stake_subsidy_decrease_rate: u16
- max_validator_count: u64
- Validator committee parameters
- min_validator_joining_stake: u64
- validator_low_stake_threshold: u64
- validator_very_low_stake_threshold: u64
- validator_low_stake_grace_period: u64
Struct TokenDistributionSchedule
public struct TokenDistributionSchedule
Click to open
Fields
- stake_subsidy_fund_mist: u64
- allocations: vector<sui_system::genesis::TokenAllocation>
Struct TokenAllocation
public struct TokenAllocation
Click to open
Fields
- recipient_address: address
- amount_mist: u64
- staked_with_validator: std::option::Option<address>
- Indicates if this allocation should be staked at genesis and with which validator
Constants
The create function was called at a non-genesis epoch.
const ENotCalledAtGenesis: u64 = 0;
The create function was called with duplicate validators.
const EDuplicateValidator: u64 = 1;
Function create
This function will be explicitly called once at genesis.
It will create a singleton SuiSystemState object, which contains
all the information we need in the system.
fun create(sui_system_state_id: sui::object::UID, sui_supply: sui::balance::Balance<sui::sui::SUI>, genesis_chain_parameters: sui_system::genesis::GenesisChainParameters, genesis_validators: vector<sui_system::genesis::GenesisValidatorMetadata>, token_distribution_schedule: sui_system::genesis::TokenDistributionSchedule, ctx: &mut sui::tx_context::TxContext)
Function allocate_tokens
fun allocate_tokens(sui_supply: sui::balance::Balance<sui::sui::SUI>, allocations: vector<sui_system::genesis::TokenAllocation>, validators: &mut vector<sui_system::validator::Validator>, ctx: &mut sui::tx_context::TxContext)