sui_adapter_latest/static_programmable_transactions/linkage/
mod.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4pub mod analysis;
5pub mod config;
6pub mod resolution;
7pub mod resolved_linkage;
8pub mod single_linkage;
9
10use crate::{
11    data_store::PackageStore,
12    execution_mode::ExecutionMode,
13    static_programmable_transactions::{
14        linkage::analysis::LinkageAnalyzer, loading::ast as loading,
15    },
16};
17use sui_protocol_config::ProtocolConfig;
18
19/// Refine the transaction's per-call linkages into a single, unified linkage for the whole
20/// transaction (when enabled by the protocol config).
21pub fn refine_linkage<Mode: ExecutionMode>(
22    mut txn: loading::Transaction,
23    linkage_analysis: &LinkageAnalyzer,
24    package_store: &dyn PackageStore,
25    protocol_config: &ProtocolConfig,
26) -> Result<loading::Transaction, Mode::Error> {
27    if !protocol_config.enable_unified_linkage() {
28        return Ok(txn);
29    }
30
31    single_linkage::refine_to_single_linkage::<Mode::Error>(
32        &mut txn,
33        linkage_analysis,
34        package_store,
35    )?;
36
37    Ok(txn)
38}