Skip to main content

sui_adapter_latest/data_store/
mod.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4pub mod cached_package_store;
5pub mod transaction_package_store;
6
7use move_core_types::identifier::IdentStr;
8use move_vm_runtime::{
9    shared::types::{OriginalId, VersionId},
10    validation::verification::ast::Package as VerifiedPackage,
11};
12use std::{collections::BTreeMap, sync::Arc};
13use sui_types::{base_types::ObjectID, error::SuiResult};
14
15/// The VM-independent package metadata required for linkage analysis.
16pub trait PackageMetadata {
17    fn version(&self) -> u64;
18    fn version_id(&self) -> ObjectID;
19    fn original_id(&self) -> ObjectID;
20    fn linkage_table(&self) -> BTreeMap<OriginalId, VersionId>;
21}
22
23/// Access to package information needed for linkage analysis.
24pub trait PackageStore {
25    type Package: PackageMetadata;
26
27    fn get_package(&self, id: &ObjectID) -> SuiResult<Option<Self::Package>>;
28
29    fn resolve_type_to_defining_id(
30        &self,
31        module_address: ObjectID,
32        module_name: &IdentStr,
33        type_name: &IdentStr,
34    ) -> SuiResult<Option<ObjectID>>;
35}
36
37/// A package store whose loaded packages have been verified by the Move VM.
38///
39/// Some move packages that can be loaded through this store may not be objects yet (for example,
40/// packages published in the current transaction).
41pub type VerifiedPackageStore<'a> = dyn PackageStore<Package = Arc<VerifiedPackage>> + 'a;
42
43impl PackageMetadata for Arc<VerifiedPackage> {
44    fn version(&self) -> u64 {
45        VerifiedPackage::version(self.as_ref())
46    }
47
48    fn version_id(&self) -> ObjectID {
49        VerifiedPackage::version_id(self.as_ref()).into()
50    }
51
52    fn original_id(&self) -> ObjectID {
53        VerifiedPackage::original_id(self.as_ref()).into()
54    }
55
56    fn linkage_table(&self) -> BTreeMap<OriginalId, VersionId> {
57        VerifiedPackage::linkage_table(self.as_ref()).clone()
58    }
59}