⌘K

Storage Slots

Icon Link覆盖存储槽

如果您的合约中使用了存储槽,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);