The best intuition about smart contracts in Waves model are locks. There is a default lock for accounts and assets, which checks signatures of transactions. Smart Contracts allow to change that lock to custom, i.e. open lock (every user can send transaction from smart account), multisignature (account can send transactions only if multiple people sign a transaction), time lock (transactions can be send only after specified blockchain height).
Waves smart contract does not have its' own state. There is a smart account state managed by data transactions
Gas and Fees
without “gas”, which means that costs are always known upfront. Transactions from smart account or with smart asset require additional 0.004 WAVES fee .
If we plan to apply constraints on all operations for a specific asset, we cannot use a smart account. In our paradigm, we have smart assets for this purpose: the script will be attached to the asset and will work in a similar way. Transactions for such assets are valid only if the script returns True.
The script for the token is invoked upon the following operations with an asset: