A contract is a legally binding agreement between two or more parties. Smart contracts are digital contracts that use blockchain or distributed ledger technologies to render themselves tamper-proof. That means that once a smart contract is deployed, it cannot be modified without the consent of all parties involved and/or without respecting its programmed predictable behaviors.
In web 3 (decentralized web), smart contracts are a very important piece since they remove the need for intermediation to ensure the execution of a contract.
Alex wants to stake one of his NFT for 20 days in order to get a new NFT in reward.
In a web 2 scenario, Alex will transfer his NFT to an account managed by individuals, maybe through an app, expecting that: 1/ the app will send him back his NFT at the end of the contract, 2/ the app will also be able to send him a new NFT to reward his patience.
That implies that Alex trusts the app. Alex has to trust a third party to be sure he will get the contract executed. But what happens if the owner of the app disappear? or if meanwhile, the owner of the app doesn't have the reward anymore for Alex?
A lot of issues come from the need of trusting people. Centralization is a comfort zone but with a lot of risks too.
In a web 3 scenario, Alex will transfer his NFT to a smart contract account (which once deployed, doesn't require individual actions), maybe through an app, and that way, he ensures that: only him can withdraw his NFT, 2/ that a reward is indeed in the contract waiting for him and that 3/ he will be able to withdraw his reward at the end of the contract.
In this scenario, the contract signed by Alex is programmatically made to be respected.
While it's clear smart contracts are highly valuable for the web 3, still, the users have to be sure they don't sign a blank check, and so, smart contract audits or open source smart contracts are really useful.