jwk_consensus_config - [mainnet]
Structs and functions related to JWK consensus configurations.
use 0x1::config_buffer;use 0x1::copyable_any;use 0x1::error;use 0x1::option;use 0x1::simple_map;use 0x1::string;use 0x1::system_addresses;
Constants
ConfigV1
creation failed with duplicated providers given.
const EDUPLICATE_PROVIDERS: u64 = 1;
Structs
ConfigOff
A JWK consensus config variant indicating JWK consensus should not run.
struct ConfigOff has copy, drop, store
Fields
-
dummy_field: bool
OIDCProvider
struct OIDCProvider has copy, drop, store
Fields
-
name: string::String
-
config_url: string::String
ConfigV1
A JWK consensus config variant indicating JWK consensus should run to watch a given list of OIDC providers.
struct ConfigV1 has copy, drop, store
Fields
-
oidc_providers: vector<jwk_consensus_config::OIDCProvider>
Resources
JWKConsensusConfig
The configuration of the JWK consensus feature.
struct JWKConsensusConfig has drop, store, key
Fields
-
variant: copyable_any::Any
-
A config variant packed as an
Any
. Currently the variant type is one of the following. -ConfigOff
-ConfigV1
Functions
initialize
Initialize the configuration. Used in genesis or governance.
public fun initialize(framework: &signer, config: jwk_consensus_config::JWKConsensusConfig)
Implementation
public fun initialize(framework: &signer, config: JWKConsensusConfig) { system_addresses::assert_aptos_framework(framework); if (!exists<JWKConsensusConfig>(@aptos_framework)) { move_to(framework, config); }}
set_for_next_epoch
This can be called by on-chain governance to update JWK consensus configs for the next epoch. Example usage:
use aptos_framework::jwk_consensus_config;use aptos_framework::aptos_governance;// ...let config = jwk_consensus_config::new_v1(vector[]);jwk_consensus_config::set_for_next_epoch(&framework_signer, config);aptos_governance::reconfigure(&framework_signer);
public fun set_for_next_epoch(framework: &signer, config: jwk_consensus_config::JWKConsensusConfig)
Implementation
public fun set_for_next_epoch(framework: &signer, config: JWKConsensusConfig) { system_addresses::assert_aptos_framework(framework); config_buffer::upsert(config);}
on_new_epoch
Only used in reconfigurations to apply the pending JWKConsensusConfig
, if there is any.
public(friend) fun on_new_epoch(framework: &signer)
Implementation
public(friend) fun on_new_epoch(framework: &signer) acquires JWKConsensusConfig { system_addresses::assert_aptos_framework(framework); if (config_buffer::does_exist<JWKConsensusConfig>()) { let new_config = config_buffer::extract_v2<JWKConsensusConfig>(); if (exists<JWKConsensusConfig>(@aptos_framework)) { *borrow_global_mut<JWKConsensusConfig>(@aptos_framework) = new_config; } else { move_to(framework, new_config); }; }}
new_off
Construct a JWKConsensusConfig
of variant ConfigOff
.
public fun new_off(): jwk_consensus_config::JWKConsensusConfig
Implementation
public fun new_off(): JWKConsensusConfig { JWKConsensusConfig { variant: copyable_any::pack( ConfigOff {} ) }}
new_v1
Construct a JWKConsensusConfig
of variant ConfigV1
.
Abort if the given provider list contains duplicated provider names.
public fun new_v1(oidc_providers: vector<jwk_consensus_config::OIDCProvider>): jwk_consensus_config::JWKConsensusConfig
Implementation
public fun new_v1(oidc_providers: vector<OIDCProvider>): JWKConsensusConfig { let name_set = simple_map::new<String, u64>(); vector::for_each_ref(&oidc_providers, |provider| { let provider: &OIDCProvider = provider; let (_, old_value) = simple_map::upsert(&mut name_set, provider.name, 0); if (option::is_some(&old_value)) { abort(error::invalid_argument(EDUPLICATE_PROVIDERS)) } }); JWKConsensusConfig { variant: copyable_any::pack( ConfigV1 { oidc_providers } ) }}
new_oidc_provider
Construct an OIDCProvider
object.
public fun new_oidc_provider(name: string::String, config_url: string::String): jwk_consensus_config::OIDCProvider
Implementation
public fun new_oidc_provider(name: String, config_url: String): OIDCProvider { OIDCProvider { name, config_url }}
Specification
on_new_epoch
public(friend) fun on_new_epoch(framework: &signer)
requires @aptos_framework == std::signer::address_of(framework);include config_buffer::OnNewEpochRequirement<JWKConsensusConfig>;aborts_if false;