The smart contract deployment process consists of two steps that are outlined below:
User creates a new smart contract and posts it on chain. The provided
WASM bincode will initialize all the database trees required by the
smart contract. The contract state definition consinst of the current
contract WASM bincode and its database opened trees.
The smart contract state definition can be updated, as long as its unlocked.
User can finalize their smart contract state definition on chain, locking down the contract, preventing further state changes. This action is irreversible and the smart contract state definitions cannot be modified afterwards.