Thanks for making it clear @fabrice. Just to confirm if I understand you correctly, let me take this use case as an example.
Assuming I have a variable balance that equals 100$. Also, I have a condition that I can only use 80% of my balance. In Solidity, I would have a read function that allows me to read balance and perform calculation 100$ * 0.8 and return the result of this operation. I do not need to trigger a write function and update the state for it, I can just call read function and retrieve the result without paying a fee.
In comparison, if I understand correctly, for Algorand, I need to have a separate variable allowed_to_spend_balance that initially will be 0, and later updated to (balance * 0.8) after I trigger a write function. So, I need to call a write method and pay fee for it, and only then I can read a global/local state of this allowed_to_spend_balance. Please, let me know if I can do it without triggering a write function, and how should I do it.