Smart contracts provide a way to bring computational integrity to executing more or less general-purpose programs. While proposed a long time ago, they have only become popular with the advent of newer blockchain-based systems such as Ethereum with its associated Ethereum Virtual Machine (EVM), and several other similar systems. Smart contracts give the hope of being able to capture complex financial interactions and relationships with the help of executing code. As a result, we have seen a multitude of projects in areas as diverse as law and what is frequently referred to as decentralized finance (DeFi) based on smart contracts.
Somewhat notoriously, smart contracts, because they often directly manage financial transactions, wallets, and transfers, have been subject to vulnerability discovery, with many high-profile vulnerabilities, such as the DAO hack, a highly impactful exploit from mid-2016, where a hacker found a loophole in a smart contract that has led to the theft of about $70 million. This attack and some of the others have generated a great deal of interest in using static analysis and verification techniques to find bugs and vulnerabilities in contracts before they are allowed to be deployed onto a blockchain (since, after all, contracts are generally immutable as well, making bugs fairly difficult to fix after the fact).