Smart contracts are computer protocols that facilitate, verify, or enforce the negotiation or performance of a contract. On Ethereum, a smart contract is code and data that resides at a specific address on the blockchain. The Ethereum Virtual Machine is the runtime for smart contracts, which can call other contracts, have storage to store data, and can remove themselves from the blockchain. Smart contracts are defined through transactions and deployed to the blockchain, then users can interact with them through their ABI interface. Developers use languages like Solidity to code smart contracts and tools like Truffle to test contracts locally before deployment.