fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
wasm_hashes: WasmHashes,
) -> Result<(), AccountFactoryError>
fn contract_name(env: soroban_sdk::Env) -> soroban_sdk::Symbol
Deploys and wires a complete, ready-to-use treasury stack in one
call. See the module doc comment for the authorization model and
what "ready to use" means (adapters already bound, no timelock;
intent_registry already initialized).
salt only needs to be unique per caller — sub-contract addresses
are derived from sha256(caller || salt || per-contract tag), so one
caller-chosen salt is enough to place all six deployments
deterministically and collision-free against each other, and two
different callers can safely choose the identical raw salt value
with no cross-caller collision or squatting risk (see sub_salt's
doc comment for the security review finding this closed).
executor is intent_registry's scheduled-payment relayer address
(see smart_account::initialize's doc comment on initial_executor
for why this needs to be explicit rather than defaulted). Pass
caller again if there is no separate relayer identity yet.
fn deploy_account(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
salt: soroban_sdk::BytesN<32>,
initial_signers: soroban_sdk::Vec,
initial_policies: soroban_sdk::Map,
guardian_threshold: u32,
executor: soroban_sdk::Address,
) -> Result
fn get_wasm_hashes(env: soroban_sdk::Env) -> Result
Updates the WASM hashes used for every future deploy_account
call. Admin-gated and deliberately mutable — unlike smart_account's
own pinned subordinate-module addresses (which protect one already
-deployed treasury's established trust), this only ever affects
treasuries deployed after the update; already-deployed treasuries
are unaffected, since their addresses were already fixed at their
own deploy time. Shared infrastructure code getting patched over
time is the ordinary case, not a residual risk to name.
fn set_wasm_hashes(
env: soroban_sdk::Env,
wasm_hashes: WasmHashes,
) -> Result<(), AccountFactoryError>
Permissionless TTL maintenance — extending TTL creates no authority,
matching the reasoning already used by every other contract in this
workspace (docs/TECHNICAL_ARCHITECTURE.md §16.1).
fn extend_instance_ttl(env: soroban_sdk::Env)