Question for people who are familiar with how Algorand structures smart contracts. In the Ethereum world, interacting with smart contracts requires giving permissions (allowances) to smart contracts to interact with your wallet. You can see these on blockchain scanners and also have the option of editing them. How do smart contracts work in Algorand? And if we do give allowances to dApps, how can we see the permissions that we can given to the assets/contracts to which we have opted-in?