Module iota::package_metadata
Package metadata management module An IOTA package can have associated metadata that provides, on-chain, additional information about the package.
- Struct
PackageMetadataKey - Struct
PackageMetadataV1 - Struct
ModuleMetadataV1 - Struct
AuthenticatorMetadataV1 - Constants
- Function
storage_id - Function
runtime_id - Function
package_version - Function
try_get_modules_metadata_v1 - Function
modules_metadata_v1 - Function
try_get_authenticator_metadata_v1 - Function
authenticator_metadata_v1 - Function
account_type
use iota::address;
use iota::hex;
use iota::object;
use iota::tx_context;
use iota::vec_map;
use std::address;
use std::ascii;
use std::bcs;
use std::option;
use std::string;
use std::type_name;
use std::vector;
Struct PackageMetadataKey
Key type for deriving the package metadata object address
public struct PackageMetadataKey has copy, drop, store
Fields
Struct PackageMetadataV1
Represents the metadata of a Move package. This includes information such as the storage ID, runtime ID, version, and metadata for the functions contained within the package.
public struct PackageMetadataV1 has key
Fields
id: iota::object::UIDstorage_id: iota::object::IDStorage ID of the package represented by this metadata The object id of the runtime package metadata object is derived from this value.
runtime_id: iota::object::IDRuntime ID of the package represented by this metadata. Runtime ID is the Storage ID of the first version of a package.
package_version: u64Version of the package represented by this metadata
modules_metadata: iota::vec_map::VecMap<std::ascii::String, iota::package_metadata::ModuleMetadataV1>
Struct ModuleMetadataV1
Represents metadata associated with a module in the package. V1 includes only the authenticator functions information.
public struct ModuleMetadataV1 has copy, drop, store
Fields
authenticator_metadata: vector<iota::package_metadata::AuthenticatorMetadataV1>
Struct AuthenticatorMetadataV1
Represents metadata for an authenticator within the package. It includes the name of the authenticate function and the TypeName of the first parameter (i.e., the account object type).
public struct AuthenticatorMetadataV1 has copy, drop, store
Fields
function_name: std::ascii::Stringaccount_type: std::type_name::TypeName
Constants
#[error]
const EModuleMetadataNotFound: vector<u8> = b"The requested module metadata was not found in the package metadata.";
#[error]
const EAuthenticatorMetadataNotFound: vector<u8> = b"The requested authenticator metadata was not found in the module metadata.";
Function storage_id
Return the storage ID of the package represented by this metadata
public fun storage_id(metadata: &iota::package_metadata::PackageMetadataV1): iota::object::ID
Implementation
public fun storage_id(metadata: &PackageMetadataV1): ID {
metadata.storage_id
}
Function runtime_id
Return the runtime ID of the package represented by this metadata
public fun runtime_id(metadata: &iota::package_metadata::PackageMetadataV1): iota::object::ID
Implementation
public fun runtime_id(metadata: &PackageMetadataV1): ID {
metadata.runtime_id
}
Function package_version
Return the version of the package represented by this metadata
public fun package_version(metadata: &iota::package_metadata::PackageMetadataV1): u64
Implementation
public fun package_version(metadata: &PackageMetadataV1): u64 {
metadata.package_version
}
Function try_get_modules_metadata_v1
Safely get the module metadata list of the package represented by this metadata
public fun try_get_modules_metadata_v1(self: &iota::package_metadata::PackageMetadataV1, module_name: &std::ascii::String): std::option::Option<iota::package_metadata::ModuleMetadataV1>
Implementation
public fun try_get_modules_metadata_v1(
self: &PackageMetadataV1,
module_name: &ascii::String,
): Option<ModuleMetadataV1> {
self.modules_metadata.try_get(module_name)
}
Function modules_metadata_v1
Borrow the module metadata list of the package represented by this metadata. Aborts if the module is not found.
public fun modules_metadata_v1(self: &iota::package_metadata::PackageMetadataV1, module_name: &std::ascii::String): &iota::package_metadata::ModuleMetadataV1
Implementation
public fun modules_metadata_v1(
self: &PackageMetadataV1,
module_name: &ascii::String,
): &ModuleMetadataV1 {
assert!(self.modules_metadata.contains(module_name), EModuleMetadataNotFound);
self.modules_metadata.get(module_name)
}
Function try_get_authenticator_metadata_v1
Safely get the AuthenticatorMetadataV1 associated with the specified
function_name within the module metadata.
public fun try_get_authenticator_metadata_v1(self: &iota::package_metadata::ModuleMetadataV1, function_name: &std::ascii::String): std::option::Option<iota::package_metadata::AuthenticatorMetadataV1>
Implementation
public fun try_get_authenticator_metadata_v1(
self: &ModuleMetadataV1,
function_name: &ascii::String,
): Option<AuthenticatorMetadataV1> {
self.authenticator_metadata.find_index!(|m| m.function_name == *function_name).and!(|index| {
option::some(self.authenticator_metadata[index])
})
}
Function authenticator_metadata_v1
Borrow the AuthenticatorMetadataV1 associated with the specified
function_name.
Aborts if the authenticator metadata is not found for that function.
public fun authenticator_metadata_v1(self: &iota::package_metadata::ModuleMetadataV1, function_name: &std::ascii::String): &iota::package_metadata::AuthenticatorMetadataV1
Implementation
public fun authenticator_metadata_v1(
self: &ModuleMetadataV1,
function_name: &ascii::String,
): &AuthenticatorMetadataV1 {
let mut index = self.authenticator_metadata.find_index!(|m| m.function_name == *function_name);
assert!(index.is_some(), EAuthenticatorMetadataNotFound);
&self.authenticator_metadata[index.extract()]
}
Function account_type
Return the account type of the authenticator represented by this metadata
public fun account_type(self: &iota::package_metadata::AuthenticatorMetadataV1): std::type_name::TypeName
Implementation
public fun account_type(self: &AuthenticatorMetadataV1): TypeName {
self.account_type
}