如果您的合约中使用了存储槽,Sway 编译器将生成默认的存储值,并以 JSON 文件(例如 my_contract-storage_slots.json
)的形式提供。当您加载合约二进制文件时,这些值将自动加载。如果您希望覆盖某些默认值,则需要手动提供相应的存储槽:
use fuels::{programs::contract::Contract, tx::StorageSlot};
let slot_override = StorageSlot::new([1; 32].into(), [2; 32].into());
let storage_config =
StorageConfiguration::default().add_slot_overrides([slot_override]);
let load_config =
LoadConfiguration::default().with_storage_configuration(storage_config);
let _: Result<Contract> = Contract::load_from("...", load_config);
如果由于某种原因您没有存储槽文件(例如上述示例中的 my_contract-storage_slots.json
),或者您不希望加载任何默认值,则可以禁用自动加载存储槽:
use fuels::programs::contract::Contract;
let storage_config = StorageConfiguration::default().with_autoload(false);
let load_config =
LoadConfiguration::default().with_storage_configuration(storage_config);
let _: Result<Contract> = Contract::load_from("...", load_config);