radix_engine/system/
system_substate_schemas.rs1use crate::internal_prelude::*;
2use crate::kernel::kernel::*;
3use crate::system::system_callback::*;
4use crate::system::type_info::TypeInfoSubstate;
5use crate::transaction::SystemFieldKind;
6use crate::updates::*;
7use crate::vm::*;
8use lazy_static::lazy_static;
9use radix_transactions::validation::TransactionValidationConfigurationSubstate;
10use sbor::*;
11
12fn generate<S: ScryptoDescribe + ScryptoCheckedBackwardsCompatibleSchema>(
13) -> ScryptoSingleTypeSchema {
14 generate_single_type_schema::<S, _>()
15}
16
17pub fn resolve_system_field_schema(
18 system_field: SystemFieldKind,
19) -> &'static ScryptoSingleTypeSchema {
20 match system_field {
21 SystemFieldKind::TypeInfo => &TYPE_INFO_SUBSTATE_SCHEMA,
22 SystemFieldKind::VmBoot => &VM_BOOT_SUBSTATE_SCHEMA,
23 SystemFieldKind::SystemBoot => &SYSTEM_BOOT_SUBSTATE_SCHEMA,
24 SystemFieldKind::KernelBoot => &KERNEL_BOOT_SUBSTATE_SCHEMA,
25 SystemFieldKind::TransactionValidationConfiguration => {
26 &TRANSACTION_VALIDATION_CONFIGURATION_SUBSTATE_SCHEMA
27 }
28 SystemFieldKind::ProtocolUpdateStatusSummary => {
29 &PROTOCOL_UPDATE_STATUS_SUMMARY_SUBSTATE_SCHEMA
30 }
31 }
32}
33
34pub fn resolve_system_schema_schema() -> &'static ScryptoSingleTypeSchema {
35 &SCHEMA_SUBSTATE_SCHEMA
36}
37
38#[derive(ScryptoSbor, ScryptoSborAssertion)]
39#[sbor_assert(backwards_compatible(cuttlefish = "FILE:schema_substate_cuttlefish_schema.bin"))]
40#[sbor(transparent, transparent_name)]
41struct SchemaEntrySubstate(PackageSchemaEntrySubstate);
42
43lazy_static! {
45 static ref TYPE_INFO_SUBSTATE_SCHEMA: ScryptoSingleTypeSchema = generate::<TypeInfoSubstate>();
46 static ref KERNEL_BOOT_SUBSTATE_SCHEMA: ScryptoSingleTypeSchema =
47 generate::<KernelBootSubstate>();
48 static ref SYSTEM_BOOT_SUBSTATE_SCHEMA: ScryptoSingleTypeSchema =
49 generate::<SystemBootSubstate>();
50 static ref VM_BOOT_SUBSTATE_SCHEMA: ScryptoSingleTypeSchema = generate::<VmBootSubstate>();
51 static ref TRANSACTION_VALIDATION_CONFIGURATION_SUBSTATE_SCHEMA: ScryptoSingleTypeSchema =
52 generate::<TransactionValidationConfigurationSubstate>();
53 static ref PROTOCOL_UPDATE_STATUS_SUMMARY_SUBSTATE_SCHEMA: ScryptoSingleTypeSchema =
54 generate::<ProtocolUpdateStatusSummarySubstate>();
55 static ref SCHEMA_SUBSTATE_SCHEMA: ScryptoSingleTypeSchema = generate::<SchemaEntrySubstate>();
56}