diff --git a/contracts/split/src/lib.rs b/contracts/split/src/lib.rs index 27a9b1f..32e3e1b 100644 --- a/contracts/split/src/lib.rs +++ b/contracts/split/src/lib.rs @@ -89,6 +89,26 @@ pub struct SplitContract; #[contractimpl] impl SplitContract { + /// Set the contract admin. Can only be called once. + pub fn initialize(env: Env, admin: Address) { + assert!( + !env.storage().instance().has(&admin_key()), + "already initialized" + ); + env.storage().instance().set(&admin_key(), &admin); + } + + /// Upgrade the contract WASM. Requires admin auth. + pub fn upgrade(env: Env, new_wasm_hash: BytesN<32>) { + let admin: Address = env + .storage() + .instance() + .get(&admin_key()) + .expect("not initialized"); + admin.require_auth(); + env.deployer().update_current_contract_wasm(new_wasm_hash); + } + /// Create a new invoice. /// /// # Arguments