I noticed that in the current implementation of the ledger rules all transactions outputs must at least contain a certain amount of ada (see https://hydra.iohk.io/build/6433467/download/1/ledger-spec.pdf, tho the current implementation changed this abit with the alonzo HFC). This means that all interactions with smart contracts must result in some ada at the address of the smart contact. This unintentionally results in the fact that ada is deflationary, this because most on-chain plutus scripts do not include the withdraw of this stacking of ada. As an example look at the contract address of naming the lobster (Address addr1w8433zk2shufk42hn4x7zznjjuqwwyfmxffcjszw5l2ulesdt3jff - Cardanoscan). Here these is 2034438 lovelace locked with the main UTXO of the contract (that is consumed by voting). Also there is another problem (this is smaller). People can send ada to the contract with no datum, and thus making them (assuming the smart contact needs a specific datum to unlock) unlockable for ever. Now of course as time progresses people be aware to not send ada in such a way, but still, this “burns” the supply. At the same address of the lobster naming there is now 39768137 lovelace (39 ada) stuck with no datum!
Wouldn’t it be good practise to include in the validator script that UTXO’s at the script address without a datum are 1) claimable by the address that put it there or 2) claimable by anyone (that is the script succeeds if datum is empty. The implementation of both options is not hard and resolves the latter problem. That said, not all scripts benefit from such an addition.
What are your toughts on this matter!