What a smart contract is, for people who do not write code
Why USDT is a contract and ETH is not, what that means for transfers and fees, and why token approvals deserve attention.
A smart contract is a program stored on a blockchain. It runs when someone sends it a transaction, it always runs the same way, and nobody can stop it mid-execution.
That is more relevant to ordinary users than it sounds, because most of the tokens people hold are smart contracts.
Why USDT is a contract and ETH is not
ETH is the native coin of Ethereum: the chain itself tracks who holds it. Sending ETH is a basic operation.
USDT is a contract that keeps its own ledger of balances. Sending USDT means asking that contract to update two rows. The chain does not know about USDT except as a program it is running.
This is the technical reason a token transfer costs more gas than sending the native coin — a program has to execute — and the reason you need ETH to move USDT on Ethereum even if you hold no ETH otherwise.
Approvals: the part worth understanding
To let an application spend your tokens, you grant the contract an allowance. Many ask for an unlimited one, because it saves the user from approving again later.
An unlimited allowance is a standing permission. If that application is later compromised, or was malicious to begin with, the permission is still there and the tokens can be taken without you doing anything further.
This is how a great many wallet drains happen — not a stolen key, a signed approval. Grant the amount you are actually using, and revoke old allowances you no longer need.
Why this does not affect a plain deposit
Sending USDT to a deposit address is a transfer, not an approval. You are not granting anyone permission to anything.
Approvals only come up when you connect a wallet to an application and it asks for access. A deposit address never needs that, and anything calling itself a deposit that asks you to approve a contract is worth stopping to examine.