reconfiguration_with_dkg - [mainnet]
Reconfiguration with DKG helper functions.
use 0x1::consensus_config;use 0x1::dkg;use 0x1::execution_config;use 0x1::features;use 0x1::gas_schedule;use 0x1::jwk_consensus_config;use 0x1::jwks;use 0x1::keyless_account;use 0x1::option;use 0x1::randomness_api_v0_config;use 0x1::randomness_config;use 0x1::randomness_config_seqnum;use 0x1::reconfiguration;use 0x1::reconfiguration_state;use 0x1::stake;use 0x1::system_addresses;use 0x1::validator_consensus_info;use 0x1::version;
Functions
try_start
Trigger a reconfiguration with DKG. Do nothing if one is already in progress.
public(friend) fun try_start()
Implementation
public(friend) fun try_start() { let incomplete_dkg_session = dkg::incomplete_session(); if (option::is_some(&incomplete_dkg_session)) { let session = option::borrow(&incomplete_dkg_session); if (dkg::session_dealer_epoch(session) == reconfiguration::current_epoch()) { return } }; reconfiguration_state::on_reconfig_start(); let cur_epoch = reconfiguration::current_epoch(); dkg::start( cur_epoch, randomness_config::current(), stake::cur_validator_consensus_infos(), stake::next_validator_consensus_infos(), );}
finish
Clear incomplete DKG session, if it exists.
Apply buffered on-chain configs (except for ValidatorSet, which is done inside reconfiguration::reconfigure()
).
Re-enable validator set changes.
Run the default reconfiguration to enter the new epoch.
public(friend) fun finish(framework: &signer)
Implementation
public(friend) fun finish(framework: &signer) { system_addresses::assert_aptos_framework(framework); dkg::try_clear_incomplete_session(framework); consensus_config::on_new_epoch(framework); execution_config::on_new_epoch(framework); gas_schedule::on_new_epoch(framework); std::version::on_new_epoch(framework); features::on_new_epoch(framework); jwk_consensus_config::on_new_epoch(framework); jwks::on_new_epoch(framework); keyless_account::on_new_epoch(framework); randomness_config_seqnum::on_new_epoch(framework); randomness_config::on_new_epoch(framework); randomness_api_v0_config::on_new_epoch(framework); reconfiguration::reconfigure();}
finish_with_dkg_result
Complete the current reconfiguration with DKG. Abort if no DKG is in progress.
fun finish_with_dkg_result(account: &signer, dkg_result: vector<u8>)
Implementation
fun finish_with_dkg_result(account: &signer, dkg_result: vector<u8>) { dkg::finish(dkg_result); finish(account);}
Specification
pragma verify = true;
try_start
public(friend) fun try_start()
pragma verify_duration_estimate = 120;requires exists<reconfiguration::Configuration>(@aptos_framework);requires chain_status::is_operating();include stake::ResourceRequirement;include stake::GetReconfigStartTimeRequirement;include features::spec_periodical_reward_rate_decrease_enabled() ==> staking_config::StakingRewardsConfigEnabledRequirement;aborts_if false;pragma verify_duration_estimate = 600;
finish
public(friend) fun finish(framework: &signer)
pragma verify_duration_estimate = 1500;include FinishRequirement;aborts_if false;
schema FinishRequirement { framework: signer; requires signer::address_of(framework) == @aptos_framework; requires chain_status::is_operating(); requires exists<CoinInfo<AptosCoin>>(@aptos_framework); include staking_config::StakingRewardsConfigRequirement; requires exists<features::Features>(@std); include config_buffer::OnNewEpochRequirement<version::Version>; include config_buffer::OnNewEpochRequirement<gas_schedule::GasScheduleV2>; include config_buffer::OnNewEpochRequirement<execution_config::ExecutionConfig>; include config_buffer::OnNewEpochRequirement<consensus_config::ConsensusConfig>; include config_buffer::OnNewEpochRequirement<jwks::SupportedOIDCProviders>; include config_buffer::OnNewEpochRequirement<randomness_config::RandomnessConfig>; include config_buffer::OnNewEpochRequirement<randomness_config_seqnum::RandomnessConfigSeqNum>; include config_buffer::OnNewEpochRequirement<randomness_api_v0_config::AllowCustomMaxGasFlag>; include config_buffer::OnNewEpochRequirement<randomness_api_v0_config::RequiredGasDeposit>; include config_buffer::OnNewEpochRequirement<jwk_consensus_config::JWKConsensusConfig>; include config_buffer::OnNewEpochRequirement<keyless_account::Configuration>; include config_buffer::OnNewEpochRequirement<keyless_account::Groth16VerificationKey>;}
finish_with_dkg_result
fun finish_with_dkg_result(account: &signer, dkg_result: vector<u8>)
pragma verify_duration_estimate = 1500;include FinishRequirement { framework: account};requires dkg::has_incomplete_session();aborts_if false;