Glossary · Blockchain development
Published 24 May 2025 · Updated 2 Nov 2026 · 16 min read
A smart contract is a program stored at a blockchain address that runs when a transaction or another contract calls it. Every node executing it must get the same result. Its code sets the available actions, while its stored data records the current state of the program.
Nick Szabo described a vending machine in 1996: coins go in, and fixed rules determine which product comes out. Blockchain smart contracts apply programmed rules to digital records and actions. Szabo argued that the till should hold less value than the cost of breaking the machine. The definitions below trace the term from Szabo's 1994 proposal through the 2013 Ethereum white paper, NIST's October 2018 overview, and later legal definitions.
| Source | Date | Definition, in its own words | What it adds |
|---|---|---|---|
| Nick Szabo | Date1994 | Definition, in its own words“A smart contract is a computerized transaction protocol that executes the terms of a contract.” | What it addsCoins the term. The goal is fewer exceptions and less need for trusted intermediaries |
| Nick Szabo | Date1996 | Definition, in its own words“A canonical real-life example, which we might consider to be the primitive ancestor of smart contracts, is the humble vending machine.” | What it addsThe till should hold less than it would cost to break the machine |
| Ethereum white paper | Date2013 | Definition, in its own wordsContracts are “more like "autonomous agents" that live inside of the Ethereum execution environment, always executing a specific piece of code when "poked" by a message or transaction” | What it addsCode runs only when a transaction or a message calls it |
| NIST IR 8202 | DateOctober 2018 | Definition, in its own words“A smart contract is a collection of code and data (sometimes referred to as functions and state) that is deployed using cryptographically signed transactions on the blockchain network” | What it addsExecution must be deterministic, so every node reaches the same result |
| ethereum.org | DateUpdated 25 February 2026 | Definition, in its own words“A "smart contract" is simply a program that runs on the Ethereum blockchain.” | What it addsA contract is a type of account, with a balance, code and state |
| Law Commission of England and Wales | Date25 November 2021 | Definition, in its own wordsSmart contracts are “computer programs which run automatically, in whole or in part, without the need for human intervention.” | What it addsA smart legal contract is one specific type, and current law can support it |
| EU Data Act, Article 2(39) | DateApplies from 12 September 2025 | Definition, in its own words“'smart contract' means a computer program used for the automated execution of an agreement or part thereof, using a sequence of electronic data records and ensuring their integrity and the accuracy of their chronological ordering” | What it addsArticle 36 adds duties for vendors of contracts that execute data sharing agreements |
Ethereum's developer documentation, updated 25 February 2026, describes a smart contract as an account containing code and state. It executes only when called. Deterministic execution means every executing node reaches the same result from the same inputs. A contract cannot fetch off-chain facts itself. Those arrive through signed transactions or an oracle. Contracts are not deletable by default, and interactions are irreversible. NIST IR 8202, published in October 2018, also makes clear that these programs need not perform financial functions.
The smart contract label does not make a program a legal agreement, an independent actor or a guarantee of correct behavior. A smart contract can follow flawed instructions exactly. Its logic may be replaceable, and visibility depends on the platform. Daml on Canton restricts what each party sees. Many contracts publish no verified source code. Ethereum's nontechnical documentation, updated 1 July 2026, calls blind signing a major risk: a user approves an interaction without understanding its effect.
The escrow below holds ether for a buyer, a seller and an arbiter. It moves through funded, released and refunded states. Follow each transaction to compare the caller, function, result, event or custom error selector, gas used, and remaining balance. These are local measurements, not Ethereum mainnet averages.
Wrong callers and invalid states revert. After alice deposits 1 ETH, carol releases it to bob, leaving the escrow in its Released state.
After the seven-day deadline, alice can recover the deposit. The successful refund returns 1 ETH and changes the escrow state to Refunded.
The seller rejects ETH, so release reverts without changing the Funded state. The escrow keeps 1 ETH until carol refunds alice.
A small escrow ran with solc 0.8.38 on a local EVM using Osaka rules on 2 November 2026.
Compiling Solidity source or Vyper produces EVM bytecode and a JSON ABI describing functions. Calls start with a 4-byte function selector. A deployment transaction sends initcode without a recipient, not to the zero address. Initcode returns runtime code. CREATE uses creator and nonce, while CREATE2 uses creator, salt and initcode. Ethereum mainnet limits on 2 November 2026 are 24,576 runtime bytes and 49,152 initcode bytes. In the 2 November 2026 lab, storing code accounts for 81.6% of deployment gas.
Each transaction incurs gas costs, even when a revert undoes state changes. An event writes a log that contracts cannot read. STATICCALL invokes a view function without allowing state changes. DELEGATECALL runs another contract's code against the caller's storage. Since Dencun on 13 March 2024, SELFDESTRUCT deletes code only within its creating transaction under EIP-6780. ERC-4337 uses bundlers and EntryPoint, with optional paymasters covering fees. EIP-7702 has let accounts with keys set code since Pectra on 7 May 2025. The EVM cannot access networks or files.
An EVM compiler target is tied to network rules, not just a language version. The timeline tracks changes to calls, deployment and deletion. EIP-170 and EIP-3860 set different limits for runtime code and initcode. Ethereum's current mainnet rules on 2 November 2026 follow Fusaka, activated on 3 December 2025.
| Mainnet date | Upgrade | What changed for contracts | Proposal |
|---|---|---|---|
| 14 March 2016 | UpgradeHomestead | What changed for contractsDELEGATECALL runs another contract's code in the caller's storage | ProposalEIP-7 |
| 20 July 2016 | UpgradeDAO fork, block 1,920,000 | What changed for contractsMoved The DAO's ether to a contract with one function, withdraw | ProposalIrregular state change |
| 22 November 2016 | UpgradeSpurious Dragon | What changed for contractsRuntime code capped at 24,576 bytes | ProposalEIP-170 |
| 16 October 2017 | UpgradeByzantium | What changed for contractsREVERT stops a call and undoes its changes. STATICCALL forbids state changes | ProposalEIP-140, EIP-214 |
| 28 February 2019 | UpgradeConstantinople | What changed for contractsCREATE2 fixes a contract's address from a salt before it exists | ProposalEIP-1014 |
| 5 August 2021 | UpgradeLondon | What changed for contractsNew code may not start with the byte 0xEF | ProposalEIP-3541 |
| 12 April 2023 | UpgradeShapella | What changed for contractsInitcode capped at 49,152 bytes and charged per 32-byte word | ProposalEIP-3860 |
| 13 March 2024 | UpgradeDencun | What changed for contractsSELFDESTRUCT deletes code only in the creating transaction. Transient storage added | ProposalEIP-6780, EIP-1153 |
| 7 May 2025 | UpgradePectra | What changed for contractsAccounts with keys can set code through a delegation | ProposalEIP-7702 |
| 3 December 2025 | UpgradeFusaka | What changed for contractsThe rules mainnet runs on 2 November 2026 | ProposalEIP-7607 |
| No mainnet date | UpgradeGlamsterdam | What changed for contracts64 KiB code limit, logs for ETH transfers, new state creation pricing. On Sepolia since 6 October 2026 | ProposalEIP-7954, EIP-7708, EIP-8037 |
EIP-7954 raises runtime code to 65,536 bytes and initcode to 131,072 bytes, or 64 KiB and 128 KiB. This Ethereum improvement proposal is scheduled for Glamsterdam, live on Sepolia since 6 October 2026. On 22 October 2026, the Ethereum Foundation said core developers had postponed Glamsterdam on the Hoodi testnet to investigate EIP-8037 interactions with mainnet smart contracts. There is no mainnet date on 2 November 2026. Solidity's unreleased 0.8.39 already warns about these limits when targeting the Amsterdam EVM version.
Keeping an address does not mean keeping its behavior. An Ethereum smart contract can route calls to replaceable logic while retaining stored data. The figure compares four storage-box designs and their permissions. Its deployment and call costs come from the same local lab, rather than from a survey of mainnet contracts.
The fixed version deploys for 90,199 gas and cannot upgrade. Replacing it requires a new address and migration, rather than an admin action.
Only the ProxyAdmin owner can upgrade this proxy. Stored values survive a compatible change, but swapping variable order succeeds and corrupts how the value is read.
The implementation authorizes upgrades. Unauthorized callers and non-UUPS replacements revert, while an owner-approved change preserves the stored value in this lab.
One authorized beacon change updates both proxies, preserving their separate values of 43 and 7. A stranger's attempt reverts without replacing their logic.
The same local lab uses OpenZeppelin Contracts 5.7.0, with gas measured on 2 November 2026.
Ethereum documentation calls deployed code immutable by design, but distinguishes upgradeability from mutability. Migration, data separation, strategy contracts and proxies change how later behavior is reached. ERC-1967 reserves slots for implementation, admin and beacon addresses. UUPS puts upgrade logic in the implementation. A beacon changes several proxies in one transaction. ERC-2535 diamonds distribute functions across facets, while ERC-7201 defines namespaced storage. In OpenZeppelin Contracts 5.7.0, checked on 2 November 2026, the stated recommendation shifts toward UUPS. None of these mechanisms edits the original deployed code.
Users must trust whoever controls future logic. A multi-signature wallet or DAO governance process can distribute upgrade authority. A timelock gives users time to exit but delays urgent fixes. Initialization needs checks, and existing variable order and types must stay unchanged. The 2 November 2026 lab accepts a reordered layout, then reads an owner's address as a number. An uninitialized implementation also admits a stranger as owner. That takeover does not affect the UUPS proxy in this run, because its context check rejects the attempted upgrade.
Different networks give smart contracts different execution and data models. The table compares those mechanics, not platform quality. It includes Solidity and Vyper on Ethereum, Cairo on Starknet, Plutus on Cardano, Bitcoin Script, Clarity on Stacks and Rust through CosmWasm. Release details are a snapshot checked on 2 November 2026.
| Platform | Languages | How code and state work | Latest release seen, 2 November 2026 |
|---|---|---|---|
| Ethereum and EVM chains | LanguagesSolidity, Vyper, Yul | How code and state workA contract account keeps code and state at one address. Proxies can point it to new logic | Latest release seen, 2 November 2026Solidity 0.8.38, 22 October 2026. Vyper 0.4.3, 19 June 2025 |
| Solana | LanguagesRust with Anchor, Pinocchio or native Rust | How code and state workPrograms are stateless and keep data in separate accounts. Upgradeable while an upgrade authority is set | Latest release seen, 2 November 2026Anchor 1.2.2, 22 October 2026 |
| Aptos | LanguagesMove | How code and state workAssets are typed resources stored under accounts. Abilities decide if a value can be copied or dropped | Latest release seen, 2 November 2026Docs updated 5 October 2026 |
| Sui | LanguagesMove | How code and state workStorage is a set of objects with unique IDs. A published package is immutable | Latest release seen, 2 November 2026mainnet-v1.82.3, 21 October 2026 |
| Starknet | LanguagesCairo | How code and state workProvable programs on an L2 verified over Ethereum. Every account is a contract | Latest release seen, 2 November 2026Cairo 2.21.0, latest GitHub release |
| Canton | LanguagesDaml | How code and state workEach party's validator runs the contract and sees only its part of a transaction. Contracts are archived, not edited | Latest release seen, 2 November 2026Canton 3.7.1, 30 October 2026 |
| Cardano | LanguagesPlutus, Aiken | How code and state workValidators return true or false for a transaction that spends an output, and the result can be checked before sending | Latest release seen, 2 November 2026Aiken 1.1.24, 26 September 2026 |
| Stacks | LanguagesClarity | How code and state workInterpreted exactly as written, with reentrancy disallowed. Contracts can read Bitcoin state | Latest release seen, 2 November 2026stacks-core 4.0.5, 13 October 2026 |
| Bitcoin | LanguagesScript, Tapscript | How code and state workA script locks an output and the spender supplies data that satisfies it. No loops | Latest release seen, 2 November 2026Taproot active since block 709,632 |
| Tezos | LanguagesMichelson, SmartPy, LIGO | How code and state workA strongly typed, stack-based, Turing-complete language | Latest release seen, 2 November 2026Michelson docs updated 15 February 2024 |
| Cosmos chains | LanguagesRust compiled to Wasm | How code and state workCosmWasm, a Cosmos SDK module, runs contracts in its own virtual machine | Latest release seen, 2 November 2026CosmWasm 3.0.11, 8 October 2026 |
| Polkadot | Languagesink! | How code and state workRust contracts for RISC-V and PolkaVM. The project has not been maintained since January 2026 | Latest release seen, 2 November 2026v6.0.0-beta.1, a pre-release |
EVM contracts keep code and state at one address. Solana programs, including those written with Anchor, keep mutable state in separate accounts. Move's typed resources constrain how assets are handled. Sui organizes storage around objects with unique IDs. Cardano and Bitcoin check spending conditions. Canton runs Daml smart contracts, exposing only each party's part of a transaction. Clarity disallows reentrancy at language level. Polkadot's Rust contract language project has not been maintained since January 2026. Token interfaces also differ, including ERC-20 token contracts on Ethereum.
Usage figures measure different things. Etherscan counts 939,820 verified contracts on 2 November 2026. Blockscout records 2,245,546 new contracts in October 2026, without clarifying whether creation by other contracts is included. DefiLlama showed $85.094 billion in total value locked on the evening of 2 November 2026, and $44.41 billion on Ethereum in its chain data. TVL measures deposits in tracked DeFi protocols, not every asset held by a smart contract. These counts therefore describe different slices of activity, rather than a shared measure of adoption.
A valid execution can still produce an unwanted outcome. Examples echo The DAO, Parity, Qubit QBridge and Harvest Finance. Choose a bug class and compare vulnerable and corrected versions, or old and new EVM rules. The contracts are simplified examples, so their balances and costs do not reproduce the original incidents.
Sending before updating balances permits repeated withdrawals. Updating first preserves other users' 10 ETH, while a reentrancy guard makes the re-entering call revert.
An unchecked initializer gives a stranger ownership through the wallet's delegated call. The corrected version rejects initialization and keeps the existing ownership.
The toy Parity library loses code under older rules. Under EIP-6780, the code remains and the wallet can still pay 1 ETH.
Ignoring a failed payment erases the depositor's balance without paying. Checking the result reverts instead, preserving the balance for a later attempt.
The toy lender trusts a price manipulated within one transaction. It lends 20 ETH against collateral worth 10 ETH once the price returns.
Toy contracts, not original code, are replayed in the same lab, with incident dates drawn from public sources.
The OWASP Smart Contract Top 10 for 2025 covers access control, price oracle manipulation, logic errors, reentrancy and other failure classes. The 2026 edition, current on 2 November 2026, uses 2025 incidents and survey data. It adds arithmetic errors and proxy and upgradeability vulnerabilities, while dropping insecure randomness and denial of service. The SWC registry is no longer actively maintained, with no new entries since 2020. Its content entered the EEA EthTrust Security Levels specification.
The DAO's recursive withdrawal drained over 3.6 million ETH in June 2016. Ethereum's fork on 20 July 2016 moved funds into a withdrawal contract. Parity's 19 July 2017 incident exposed unchecked initialization through DELEGATECALL. Its 6 November 2017 library deletion froze dependent wallets. Under today's EIP-6780 rules, the same kill would leave the library's code in place. Curve pools lost over $50 million on 30 July 2023 (LlamaRisk). A Vyper compiler bug defeated reentrancy protection, so correct source code cannot rule out compiler faults.
The table keeps each provider's totals separate. These are crypto theft figures, not a count of losses caused only by smart contract bugs. Chainalysis values stolen funds in dollars at the time of theft. Reporting windows and later revisions also matter, so a yearly total needs its source and publication date.
| Year | Chainalysis, funds stolen | CertiK, losses | Costliest vector named |
|---|---|---|---|
| 2023 | Chainalysis, funds stolen$1.7 billion stolen, January 2024 report | CertiK, losses$1.84 billion across 751 incidents | Costliest vector namedCertiK: private key compromises, $880.9 million in 47 incidents |
| 2024 | Chainalysis, funds stolen$2.2 billion across 303 incidents, December 2024 report | CertiK, losses$2.36 billion across 760 incidents, restated as $2.45 billion in December 2025 | Costliest vector namedChainalysis: private key compromises, 43.8% of stolen funds. CertiK: phishing, $1.05 billion |
| 2025 | Chainalysis, funds stolenOver $3.4 billion to early December, Bybit $1.5 billion of it | CertiK, losses$3.35 billion | Costliest vector namedCertiK: supply chain attacks, $1.45 billion in 2 incidents |
Sources use different methods and revise earlier years. Chainalysis attributes 43.8% of 2024 theft value to private key compromises. From CertiK's original figures, phishing and compromised keys account for 80.6% of 2024 losses. Supply chain attacks and phishing account for 64.8% in 2025. These calculations attribute most losses to causes other than smart contract code bugs. Chainalysis' December 2025 report includes Bybit's $1.5 billion theft. CertiK's 2025 report uses a separate supply chain category, so labels should stay attached to sources.
Review covers the published program and the people who can control it. Different checks answer different questions, from matching deployed code to testing proposed changes. They also have limits. A smart contract audit needs to distinguish evidence about code behavior from evidence about permissions, signatures and the handling of future upgrades.
Source verification matches published code to deployed code. Etherscan contract verification and Sourcify expose this evidence. Partial matches ignore metadata hashes, while exact matches establish byte-for-byte equality, not freedom from flaws.
Foundry's Forge fuzzes test functions that take parameters, 256 runs by default in v1.8.6. Echidna is a fuzzer, and Halmos provides symbolic testing for EVM contracts. Fuzzing exercises inputs beyond handpicked cases.
Formal verification can prove agreement with a specification, not that the specification is correct. Certora, KEVM and Solidity's SMTChecker support this work. An incomplete specification can still leave incorrect business assumptions untested.
Audits are time-boxed, and their findings are not comprehensive. Reports and bug bounty programs provide evidence, not a guarantee. Neither removes the responsibility to write high-quality code or address the flaws found.
Identify who holds the admin key and which actions need multiple signatures. A timelock adds an exit window but slows emergency changes. Check ownership, initialization permissions and storage compatibility together before changing logic.
A leaked key can expose all associated funds, according to Immunefi's Q1 2025 report. Review who signs and what they approve. Blind signing authorizes an interaction without understanding its effect.
Programmed execution and legal enforceability answer different questions. A smart contract can perform part of an agreement without replacing the surrounding legal framework. The sources below address different jurisdictions and different uses. Their definitions should not be read as a universal rule for every blockchain program or every agreement expressed partly through code.
The Law Commission of England and Wales published its advice to government on 25 November 2021. It treats a smart legal contract as a specific type of smart contract, rather than treating every program as an agreement. Its conclusion is jurisdiction-specific: the existing framework in England and Wales can facilitate and support smart legal contracts without statutory reform. That finding does not say that code eliminates courts or external enforcement. Automated performance and legal obligations remain distinct parts of the discussion.
The EU Data Act applies from 12 September 2025. Article 2(39) defines smart contracts as programs automating agreements through electronic records with integrity and accurate chronological ordering. Article 36 covers vendors and third-party deployers of smart contracts for data sharing agreements, not every blockchain program. It requires access controls, safe termination and interruption, archiving, continuity and agreement consistency. Internal functions must stop, interrupt or reset operation. Vendors assess conformity and issue an EU declaration. Recital 104 excludes contracts used only internally.
PixelPlex is a software engineering company founded in 2007, with blockchain work dating to 2013. We treat smart contract development as a set of linked decisions about permissions, change, costs and release evidence. The same questions also shape a review of an existing system. The five areas below show what needs to be settled, rather than assuming that writing code settles the design.
In the 2025 Coindepo case, we built an ERC-20 ecosystem covering token, vesting, reserve and sale distribution contracts. The implementation used audited OpenZeppelin contracts, and CertiK audited the ecosystem. The case records mainnet deployment of the tokenomics infrastructure in three weeks. That is a dated project result, not a promised schedule for another system.
Discuss the decisions behind your contract design
We can discuss the scope of a build or review, including permissions, upgrade plans and the evidence needed for deployment.
Discuss your projectGet updates about blockchain, technologies and our company
We will process the personal data you provide in accordance with our Privacy policy. You can unsubscribe or change your preferences at any time by clicking the link in any email.Services
Blockchain
Blockchain consultingStrategy, architecture, feasibility
Crypto wallet developmentSelf-custody, MPC, cards on top
Cryptocurrency exchange developmentTrading venues, liquidity and protocols
Tokenization servicesRWA, funds, collateral
Crypto payments developmentAccept, settle and pay out in crypto
Smart contracts developmentDesign, build, audit
Blockchain integration dApp development DeFi development NFTs Tokens Web3 development All blockchain services All servicesNetworks
Canton developmentDaml apps, wallets, settlement, validators
Official Partner
Ethereum developmentSmart contracts, L2s and dApps
Solana developmentHigh-throughput programs and dApps
TON developmentMini apps, wallets, Telegram ecosystem
Official Partner
Hedera developmentHashgraph apps and token services
Exclusive Partner
Hyperledger developmentPermissioned networks for enterprises
Certified Partner
Cardano Algorand Stellar Avalanche Bitcoin Polygon All networks All servicesAI & ML
AI agents developmentConnect tools and automate multi-step workflows
RAG developmentFind answers across your company’s documents and systems
AI copilot developmentAdd useful assistance to your product or internal tools
LLM developmentCustom and fine-tuned models for your domain
Private AI deploymentRun models in your own environment
AI consultingUse cases, feasibility and a roadmap
Generative AI development Machine learning development Computer vision Chatbot development ChatGPT integration Deep learning development All AI services All servicesData & analytics
Data engineeringPipelines that keep your data reliable
Data platform developmentOne source of truth for analytics
Analytics & dashboards developmentBI your teams actually use
Predictive analyticsForecasts built on your own history
Data strategyWhere data can pay off first
Data visualizationDashboards and visual stories from your data
Data science development Development of data marts All data services All servicesSoftware
Product discoveryValidate scope and cost before you build
MVP developmentA launch-ready first release
Web application developmentPlatforms, portals and internal tools
Mobile app developmentiOS, Android and cross-platform
SaaS developmentMulti-tenant products that scale
Software integrationConnect the systems you already run
Infrastructure & cloud cost UI/UX design IT consulting QA & software testing R&D Serverless development All software services All servicesSecurity & compliance
Smart contract auditsFind vulnerabilities before launch
Transaction monitoring developmentIntercepta inside your systems and processes
Security assessmentsTest apps, infrastructure and processes
Data security servicesProtect sensitive data across its lifecycle
Cloud security servicesSecure cloud workloads and configurations
DAML smart contract auditReview DAML contracts before they go live
All security services All servicesSolutions
Products, APIs and platforms
New
Products and engineering to build and operate on Canton.
In production 55M API requests served in 8 months
Crypto APIBlockchain data for your applications.
Power in numbers 6 TB Data storage. 500K Tokens indexed
RWA platformA foundation for your asset tokenization platform.
Time to launch 2–4 weeks Branding & setup. 90% more cost-efficient
DocFlowBlockchain-based document management.
Use case & value 100% Secure workflows. Zero third-party risks.
OTC Hawk Arbitrage Bot Book a solution consultWork
450+ projects. 250+ clients. 3 unicorns in portfolio
The first non-custodial wallet built natively for Canton
TON ecosystemA series of improvements for The Open Network
Mining platformEnvironmentally friendly web platform for Bitcoin pool mining
Mantra DAOCommunity-governed DeFi: 60+ staking pools, $23M TVL
Canton TON Web3 & DeFi Digital Assets & Tokenization AI & Data Intelligence IoT & Edge Computing Consulting See all projectsIndustries
Trusted by startups, small businesses, and enterprises
Banking, payments, lending, insurance, capital markets
Real estate software developmentInvestment, property operations, tokenization
Retail & commerce software developmentCommerce, loyalty and fulfillment
Supply chain software developmentTraceability and connected operations
Healthcare software developmentPatient services, data and connected systems
Banking software developmentCore banking, digital channels, payments
Fitness Education Oil & Gas Insurance Construction TravelCompany
From R&D to launch, we bring any of your ideas to life
Engineering partner. Product builder. Since 2007.
Technical experience 19+ years All competencies on board. Scalable team.
AchievementsIndustry recognition & awards.
Delivering real value 4.9 Clutch ratings. 150+ awards
Contact usDiscuss your project.
Quick response 30 min Average reply time. Offices in 6 countries
BlogDive into the latest software trends.
Fresh insights 500+ Articles in blockchain, AI, big data, AR/VR
Team Careers Social responsibility Glossary