A server-side program recorded on Ethereum or a blockchain with a similar architecture that defines and enforces a predefined arrangement without an intermediary. Smart contracts are typically financial in nature; for example, they enable new cryptocurrencies to be established, as well as certify ownership of non-fungible assets such as art and collectibles (see
fungible token and
NFT).
Source Code to Bytecode
The smart contract is written in a programming language such as Solidity, which is the most popular. The source code is converted into an intermediate language (bytecode) and deployed on the blockchain. See
bytecode and
Solidity.
Immutable Software
Unlike applications running on regular servers, the smart contract is irreversible because it resides on the blockchain. If a smart contract is updated, an entirely new contract is deployed, and the old one becomes inaccessible. Smart contracts are also traceable and verifiable; all attributes of the blockchain architecture. See
Solidity,
blockchain,
Ethereum and
blockchain oracle.
Bitcoin Smart Contracts
Ethereum was designed from scratch to be a programmable smart contract platform whereas Bitcoin was created as a store of digital currency. However, Bitcoin transactions do have some programmability, although very limited in comparison. Nevertheless, they are sometimes called "Bitcoin smart contracts," which Ethereum pundits feel is unjustified (see
Bitcoin smart contract).
Client/Server Architecture
Transactions generated in a desktop application or in a crypto wallet in a smartphone or browser extension activate functions in the contract. This client/server interaction is known as a decentralized app (dApp) because the smart contract resides in multiple nodes (servers) of Ethereum or a similar platform. See
EVM,
bytecode and
client/server.