#[skip_serializing_none]
#[derive(Clone, Serialize, Debug, ProtocolConfigAccessors, ProtocolConfigOverride)]
pub struct ProtocolConfig {
pub version: ProtocolVersion,
feature_flags: FeatureFlags,
max_tx_size_bytes: Option<u64>,
max_input_objects: Option<u64>,
max_size_written_objects: Option<u64>,
max_size_written_objects_system_tx: Option<u64>,
max_serialized_tx_effects_size_bytes: Option<u64>,
max_serialized_tx_effects_size_bytes_system_tx: Option<u64>,
max_gas_payment_objects: Option<u32>,
max_modules_in_publish: Option<u32>,
max_package_dependencies: Option<u32>,
max_arguments: Option<u32>,
max_type_arguments: Option<u32>,
max_type_argument_depth: Option<u32>,
max_pure_argument_size: Option<u32>,
max_programmable_tx_commands: Option<u32>,
move_binary_format_version: Option<u32>,
min_move_binary_format_version: Option<u32>,
binary_module_handles: Option<u16>,
binary_struct_handles: Option<u16>,
binary_function_handles: Option<u16>,
binary_function_instantiations: Option<u16>,
binary_signatures: Option<u16>,
binary_constant_pool: Option<u16>,
binary_identifiers: Option<u16>,
binary_address_identifiers: Option<u16>,
binary_struct_defs: Option<u16>,
binary_struct_def_instantiations: Option<u16>,
binary_function_defs: Option<u16>,
binary_field_handles: Option<u16>,
binary_field_instantiations: Option<u16>,
binary_friend_decls: Option<u16>,
binary_enum_defs: Option<u16>,
binary_enum_def_instantiations: Option<u16>,
binary_variant_handles: Option<u16>,
binary_variant_instantiation_handles: Option<u16>,
max_move_object_size: Option<u64>,
max_move_package_size: Option<u64>,
max_publish_or_upgrade_per_ptb: Option<u64>,
max_tx_gas: Option<u64>,
max_gas_price: Option<u64>,
max_gas_computation_bucket: Option<u64>,
gas_rounding_step: Option<u64>,
max_loop_depth: Option<u64>,
max_generic_instantiation_length: Option<u64>,
max_function_parameters: Option<u64>,
max_basic_blocks: Option<u64>,
max_value_stack_size: Option<u64>,
max_type_nodes: Option<u64>,
max_push_size: Option<u64>,
max_struct_definitions: Option<u64>,
max_function_definitions: Option<u64>,
max_fields_in_struct: Option<u64>,
max_dependency_depth: Option<u64>,
max_num_event_emit: Option<u64>,
max_num_new_move_object_ids: Option<u64>,
max_num_new_move_object_ids_system_tx: Option<u64>,
max_num_deleted_move_object_ids: Option<u64>,
max_num_deleted_move_object_ids_system_tx: Option<u64>,
max_num_transferred_move_object_ids: Option<u64>,
max_num_transferred_move_object_ids_system_tx: Option<u64>,
max_event_emit_size: Option<u64>,
max_event_emit_size_total: Option<u64>,
max_move_vector_len: Option<u64>,
max_move_identifier_len: Option<u64>,
max_move_value_depth: Option<u64>,
max_move_enum_variants: Option<u64>,
max_back_edges_per_function: Option<u64>,
max_back_edges_per_module: Option<u64>,
max_verifier_meter_ticks_per_function: Option<u64>,
max_meter_ticks_per_module: Option<u64>,
max_meter_ticks_per_package: Option<u64>,
object_runtime_max_num_cached_objects: Option<u64>,
object_runtime_max_num_cached_objects_system_tx: Option<u64>,
object_runtime_max_num_store_entries: Option<u64>,
object_runtime_max_num_store_entries_system_tx: Option<u64>,
base_tx_cost_fixed: Option<u64>,
package_publish_cost_fixed: Option<u64>,
base_tx_cost_per_byte: Option<u64>,
package_publish_cost_per_byte: Option<u64>,
obj_access_cost_read_per_byte: Option<u64>,
obj_access_cost_mutate_per_byte: Option<u64>,
obj_access_cost_delete_per_byte: Option<u64>,
obj_access_cost_verify_per_byte: Option<u64>,
max_type_to_layout_nodes: Option<u64>,
gas_model_version: Option<u64>,
obj_data_cost_refundable: Option<u64>,
obj_metadata_cost_non_refundable: Option<u64>,
storage_rebate_rate: Option<u64>,
storage_fund_reinvest_rate: Option<u64>,
reward_slashing_rate: Option<u64>,
storage_gas_price: Option<u64>,
max_transactions_per_checkpoint: Option<u64>,
max_checkpoint_size_bytes: Option<u64>,
buffer_stake_for_protocol_upgrade_bps: Option<u64>,
address_from_bytes_cost_base: Option<u64>,
address_to_u256_cost_base: Option<u64>,
address_from_u256_cost_base: Option<u64>,
config_read_setting_impl_cost_base: Option<u64>,
config_read_setting_impl_cost_per_byte: Option<u64>,
dynamic_field_hash_type_and_key_cost_base: Option<u64>,
dynamic_field_hash_type_and_key_type_cost_per_byte: Option<u64>,
dynamic_field_hash_type_and_key_value_cost_per_byte: Option<u64>,
dynamic_field_hash_type_and_key_type_tag_cost_per_byte: Option<u64>,
dynamic_field_add_child_object_cost_base: Option<u64>,
dynamic_field_add_child_object_type_cost_per_byte: Option<u64>,
dynamic_field_add_child_object_value_cost_per_byte: Option<u64>,
dynamic_field_add_child_object_struct_tag_cost_per_byte: Option<u64>,
dynamic_field_borrow_child_object_cost_base: Option<u64>,
dynamic_field_borrow_child_object_child_ref_cost_per_byte: Option<u64>,
dynamic_field_borrow_child_object_type_cost_per_byte: Option<u64>,
dynamic_field_remove_child_object_cost_base: Option<u64>,
dynamic_field_remove_child_object_child_cost_per_byte: Option<u64>,
dynamic_field_remove_child_object_type_cost_per_byte: Option<u64>,
dynamic_field_has_child_object_cost_base: Option<u64>,
dynamic_field_has_child_object_with_ty_cost_base: Option<u64>,
dynamic_field_has_child_object_with_ty_type_cost_per_byte: Option<u64>,
dynamic_field_has_child_object_with_ty_type_tag_cost_per_byte: Option<u64>,
event_emit_cost_base: Option<u64>,
event_emit_value_size_derivation_cost_per_byte: Option<u64>,
event_emit_tag_size_derivation_cost_per_byte: Option<u64>,
event_emit_output_cost_per_byte: Option<u64>,
object_borrow_uid_cost_base: Option<u64>,
object_delete_impl_cost_base: Option<u64>,
object_record_new_uid_cost_base: Option<u64>,
transfer_transfer_internal_cost_base: Option<u64>,
transfer_freeze_object_cost_base: Option<u64>,
transfer_share_object_cost_base: Option<u64>,
transfer_receive_object_cost_base: Option<u64>,
tx_context_derive_id_cost_base: Option<u64>,
types_is_one_time_witness_cost_base: Option<u64>,
types_is_one_time_witness_type_tag_cost_per_byte: Option<u64>,
types_is_one_time_witness_type_cost_per_byte: Option<u64>,
validator_validate_metadata_cost_base: Option<u64>,
validator_validate_metadata_data_cost_per_byte: Option<u64>,
crypto_invalid_arguments_cost: Option<u64>,
bls12381_bls12381_min_sig_verify_cost_base: Option<u64>,
bls12381_bls12381_min_sig_verify_msg_cost_per_byte: Option<u64>,
bls12381_bls12381_min_sig_verify_msg_cost_per_block: Option<u64>,
bls12381_bls12381_min_pk_verify_cost_base: Option<u64>,
bls12381_bls12381_min_pk_verify_msg_cost_per_byte: Option<u64>,
bls12381_bls12381_min_pk_verify_msg_cost_per_block: Option<u64>,
ecdsa_k1_ecrecover_keccak256_cost_base: Option<u64>,
ecdsa_k1_ecrecover_keccak256_msg_cost_per_byte: Option<u64>,
ecdsa_k1_ecrecover_keccak256_msg_cost_per_block: Option<u64>,
ecdsa_k1_ecrecover_sha256_cost_base: Option<u64>,
ecdsa_k1_ecrecover_sha256_msg_cost_per_byte: Option<u64>,
ecdsa_k1_ecrecover_sha256_msg_cost_per_block: Option<u64>,
ecdsa_k1_decompress_pubkey_cost_base: Option<u64>,
ecdsa_k1_secp256k1_verify_keccak256_cost_base: Option<u64>,
ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_byte: Option<u64>,
ecdsa_k1_secp256k1_verify_keccak256_msg_cost_per_block: Option<u64>,
ecdsa_k1_secp256k1_verify_sha256_cost_base: Option<u64>,
ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_byte: Option<u64>,
ecdsa_k1_secp256k1_verify_sha256_msg_cost_per_block: Option<u64>,
ecdsa_r1_ecrecover_keccak256_cost_base: Option<u64>,
ecdsa_r1_ecrecover_keccak256_msg_cost_per_byte: Option<u64>,
ecdsa_r1_ecrecover_keccak256_msg_cost_per_block: Option<u64>,
ecdsa_r1_ecrecover_sha256_cost_base: Option<u64>,
ecdsa_r1_ecrecover_sha256_msg_cost_per_byte: Option<u64>,
ecdsa_r1_ecrecover_sha256_msg_cost_per_block: Option<u64>,
ecdsa_r1_secp256r1_verify_keccak256_cost_base: Option<u64>,
ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_byte: Option<u64>,
ecdsa_r1_secp256r1_verify_keccak256_msg_cost_per_block: Option<u64>,
ecdsa_r1_secp256r1_verify_sha256_cost_base: Option<u64>,
ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_byte: Option<u64>,
ecdsa_r1_secp256r1_verify_sha256_msg_cost_per_block: Option<u64>,
ecvrf_ecvrf_verify_cost_base: Option<u64>,
ecvrf_ecvrf_verify_alpha_string_cost_per_byte: Option<u64>,
ecvrf_ecvrf_verify_alpha_string_cost_per_block: Option<u64>,
ed25519_ed25519_verify_cost_base: Option<u64>,
ed25519_ed25519_verify_msg_cost_per_byte: Option<u64>,
ed25519_ed25519_verify_msg_cost_per_block: Option<u64>,
groth16_prepare_verifying_key_bls12381_cost_base: Option<u64>,
groth16_prepare_verifying_key_bn254_cost_base: Option<u64>,
groth16_verify_groth16_proof_internal_bls12381_cost_base: Option<u64>,
groth16_verify_groth16_proof_internal_bls12381_cost_per_public_input: Option<u64>,
groth16_verify_groth16_proof_internal_bn254_cost_base: Option<u64>,
groth16_verify_groth16_proof_internal_bn254_cost_per_public_input: Option<u64>,
groth16_verify_groth16_proof_internal_public_input_cost_per_byte: Option<u64>,
hash_blake2b256_cost_base: Option<u64>,
hash_blake2b256_data_cost_per_byte: Option<u64>,
hash_blake2b256_data_cost_per_block: Option<u64>,
hash_keccak256_cost_base: Option<u64>,
hash_keccak256_data_cost_per_byte: Option<u64>,
hash_keccak256_data_cost_per_block: Option<u64>,
poseidon_bn254_cost_base: Option<u64>,
poseidon_bn254_cost_per_block: Option<u64>,
group_ops_bls12381_decode_scalar_cost: Option<u64>,
group_ops_bls12381_decode_g1_cost: Option<u64>,
group_ops_bls12381_decode_g2_cost: Option<u64>,
group_ops_bls12381_decode_gt_cost: Option<u64>,
group_ops_bls12381_scalar_add_cost: Option<u64>,
group_ops_bls12381_g1_add_cost: Option<u64>,
group_ops_bls12381_g2_add_cost: Option<u64>,
group_ops_bls12381_gt_add_cost: Option<u64>,
group_ops_bls12381_scalar_sub_cost: Option<u64>,
group_ops_bls12381_g1_sub_cost: Option<u64>,
group_ops_bls12381_g2_sub_cost: Option<u64>,
group_ops_bls12381_gt_sub_cost: Option<u64>,
group_ops_bls12381_scalar_mul_cost: Option<u64>,
group_ops_bls12381_g1_mul_cost: Option<u64>,
group_ops_bls12381_g2_mul_cost: Option<u64>,
group_ops_bls12381_gt_mul_cost: Option<u64>,
group_ops_bls12381_scalar_div_cost: Option<u64>,
group_ops_bls12381_g1_div_cost: Option<u64>,
group_ops_bls12381_g2_div_cost: Option<u64>,
group_ops_bls12381_gt_div_cost: Option<u64>,
group_ops_bls12381_g1_hash_to_base_cost: Option<u64>,
group_ops_bls12381_g2_hash_to_base_cost: Option<u64>,
group_ops_bls12381_g1_hash_to_cost_per_byte: Option<u64>,
group_ops_bls12381_g2_hash_to_cost_per_byte: Option<u64>,
group_ops_bls12381_g1_msm_base_cost: Option<u64>,
group_ops_bls12381_g2_msm_base_cost: Option<u64>,
group_ops_bls12381_g1_msm_base_cost_per_input: Option<u64>,
group_ops_bls12381_g2_msm_base_cost_per_input: Option<u64>,
group_ops_bls12381_msm_max_len: Option<u32>,
group_ops_bls12381_pairing_cost: Option<u64>,
group_ops_bls12381_g1_to_uncompressed_g1_cost: Option<u64>,
group_ops_bls12381_uncompressed_g1_to_g1_cost: Option<u64>,
group_ops_bls12381_uncompressed_g1_sum_base_cost: Option<u64>,
group_ops_bls12381_uncompressed_g1_sum_cost_per_term: Option<u64>,
group_ops_bls12381_uncompressed_g1_sum_max_terms: Option<u64>,
hmac_hmac_sha3_256_cost_base: Option<u64>,
hmac_hmac_sha3_256_input_cost_per_byte: Option<u64>,
hmac_hmac_sha3_256_input_cost_per_block: Option<u64>,
check_zklogin_id_cost_base: Option<u64>,
check_zklogin_issuer_cost_base: Option<u64>,
vdf_verify_vdf_cost: Option<u64>,
vdf_hash_to_input_cost: Option<u64>,
nitro_attestation_parse_base_cost: Option<u64>,
nitro_attestation_parse_cost_per_byte: Option<u64>,
nitro_attestation_verify_base_cost: Option<u64>,
nitro_attestation_verify_cost_per_cert: Option<u64>,
bcs_per_byte_serialized_cost: Option<u64>,
bcs_legacy_min_output_size_cost: Option<u64>,
bcs_failure_cost: Option<u64>,
hash_sha2_256_base_cost: Option<u64>,
hash_sha2_256_per_byte_cost: Option<u64>,
hash_sha2_256_legacy_min_input_len_cost: Option<u64>,
hash_sha3_256_base_cost: Option<u64>,
hash_sha3_256_per_byte_cost: Option<u64>,
hash_sha3_256_legacy_min_input_len_cost: Option<u64>,
type_name_get_base_cost: Option<u64>,
type_name_get_per_byte_cost: Option<u64>,
string_check_utf8_base_cost: Option<u64>,
string_check_utf8_per_byte_cost: Option<u64>,
string_is_char_boundary_base_cost: Option<u64>,
string_sub_string_base_cost: Option<u64>,
string_sub_string_per_byte_cost: Option<u64>,
string_index_of_base_cost: Option<u64>,
string_index_of_per_byte_pattern_cost: Option<u64>,
string_index_of_per_byte_searched_cost: Option<u64>,
vector_empty_base_cost: Option<u64>,
vector_length_base_cost: Option<u64>,
vector_push_back_base_cost: Option<u64>,
vector_push_back_legacy_per_abstract_memory_unit_cost: Option<u64>,
vector_borrow_base_cost: Option<u64>,
vector_pop_back_base_cost: Option<u64>,
vector_destroy_empty_base_cost: Option<u64>,
vector_swap_base_cost: Option<u64>,
debug_print_base_cost: Option<u64>,
debug_print_stack_trace_base_cost: Option<u64>,
execution_version: Option<u64>,
consensus_bad_nodes_stake_threshold: Option<u64>,
max_jwk_votes_per_validator_per_epoch: Option<u64>,
max_age_of_jwk_in_epochs: Option<u64>,
random_beacon_reduction_allowed_delta: Option<u16>,
random_beacon_reduction_lower_bound: Option<u32>,
random_beacon_dkg_timeout_round: Option<u32>,
random_beacon_min_round_interval_ms: Option<u64>,
random_beacon_dkg_version: Option<u64>,
consensus_max_transaction_size_bytes: Option<u64>,
consensus_max_transactions_in_block_bytes: Option<u64>,
consensus_max_num_transactions_in_block: Option<u64>,
consensus_voting_rounds: Option<u32>,
max_accumulated_txn_cost_per_object_in_narwhal_commit: Option<u64>,
max_deferral_rounds_for_congestion_control: Option<u64>,
max_txn_cost_overage_per_object_in_commit: Option<u64>,
allowed_txn_cost_overage_burst_per_object_in_commit: Option<u64>,
min_checkpoint_interval_ms: Option<u64>,
checkpoint_summary_version_specific_data: Option<u64>,
max_soft_bundle_size: Option<u64>,
bridge_should_try_to_finalize_committee: Option<bool>,
max_accumulated_txn_cost_per_object_in_mysticeti_commit: Option<u64>,
max_accumulated_randomness_txn_cost_per_object_in_mysticeti_commit: Option<u64>,
consensus_gc_depth: Option<u32>,
gas_budget_based_txn_cost_cap_factor: Option<u64>,
gas_budget_based_txn_cost_absolute_cap_commit_count: Option<u64>,
sip_45_consensus_amplification_threshold: Option<u64>,
use_object_per_epoch_marker_table_v2: Option<bool>,
}