Universal Lookup upgrade flow
- Governance authorizes
propose_upgrade(wasm_hash)for one exact code hash. - The proposal records
execute_afteras the current ledger timestamp. It is immediately eligible. - Anyone may call
execute_upgrade(expected_hash). The hash must equal the pending proposal. - A successful execution replaces the contract’s Wasm at the same contract address and consumes the proposal. A failed replacement rolls back the transaction.
cancel_upgrade() while a proposal is pending, but there is no guaranteed time in which cancellation can beat immediate execution. Read governance(), upgrade_delay() and pending_upgrade() when assessing a deployment.
A stable Lookup address makes integration routing consistent. Its Registry/version checks establish reported wiring and ABI compatibility, not a pin of the executable code. Integrators requiring reviewed code need their own current-code verification policy.
Other contracts
Replacing a Resolver with a different contract creates separate storage. Its records do not migrate automatically. An in-place upgrade preserves the address, but compatible storage and access rules are still required. A permanently locked old Resolver cannot be upgraded to gain memo support.
The fresh testnet rollout uses a new setup and does not change the existing deployment in place. See release status.