reconfiguration_with_dkg - [devnet]
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;