Schema example: Non-Inflatable Assets
fn nia_schema() -> Schema {
// definitions of libraries and variables
Schema {
ffv: zero!(), // --+
name: tn!("NonInflatableAsset"), // | (1)
meta_types: none!(), // --+
global_types: tiny_bmap! { // --+
GS_NOMINAL => GlobalDetails { // |
global_state_schema: GlobalStateSchema::once(types.get("RGBContract.AssetSpec")), // |
name: fname!("spec"), // |
}, // |
GS_TERMS => GlobalDetails { // |
global_state_schema: GlobalStateSchema::once(types.get("RGBContract.ContractTerms")), // | (2)
name: fname!("terms"), // |
}, // |
GS_ISSUED_SUPPLY => GlobalDetails { // |
global_state_schema: GlobalStateSchema::once(types.get("RGBContract.Amount")), // |
name: fname!("issuedSupply"), // |
}, // |
}, // --+
owned_types: tiny_bmap! { // --+
OS_ASSET => AssignmentDetails { // |
owned_state_schema: OwnedStateSchema::Fungible(FungibleType::Unsigned64Bit), // |
name: fname!("assetOwner"), // | (3)
default_transition: TS_TRANSFER, // |
} // |
}, // --+
genesis: GenesisSchema { // --+ -------> Contract declaration start here
metadata: none!(), // |
globals: tiny_bmap! { // |
GS_NOMINAL => Occurrences::Once, // |
GS_TERMS => Occurrences::Once, // |
GS_ISSUED_SUPPLY => Occurrences::Once, // |
}, // | (4)
assignments: tiny_bmap! { // |
OS_ASSET => Occurrences::OnceOrMore, // |
}, // |
validator: Some(LibSite::with(FN_NIA_GENESIS_OFFSET, alu_id)), // |
}, // --+
transitions: tiny_bmap! {
TS_TRANSFER => TransitionDetails { // --+
transition_schema: TransitionSchema { // |
metadata: none!(), // |
globals: none!(), // |
inputs: tiny_bmap! { // |
OS_ASSET => Occurrences::OnceOrMore // |
}, // | (5)
assignments: tiny_bmap! { // |
OS_ASSET => Occurrences::OnceOrMore // |
}, // |
validator: Some(LibSite::with(FN_NIA_TRANSFER_OFFSET, alu_id)// |
}, // |
name: fname!("transfer"), // |
} // --+
},
default_assignment: Some(OS_ASSET), // --+ (6)
}
}Last updated