The Tezos blockchain gives dApp builders two routes: native smart contracts on layer 1, written in a high-level language that compiles to Michelson, or Solidity contracts on Etherlink, the EVM-compatible layer 2 built on Tezos. This guide covers both routes and the points that decide between them.
How the Tezos blockchain works
Tezos uses proof of stake, in which validators, called bakers, stake tez to create blocks. Tez holders can delegate or stake with a baker and keep custody of their tokens.
Tezos changes its protocol through on-chain governance. Bakers propose and vote on upgrades, and the network activates an approved upgrade without a hard fork. The network has used this process many times, and each upgrade carries a city name.
| Protocol | Activated | Minimum block time |
|---|---|---|
| Seoul | September 2025 | 8 seconds |
| Tallinn | January 2026 | 6 seconds |
| Ushuaia (current) | June 2026 | 6 seconds |
The dates and block times come from the TzKT indexer API, and Tezos blocks reach finality after two blocks. The protocol changes often, so pin your tool versions to the current protocol and follow the upgrade schedule.
Native contracts: Michelson and the languages above it
Tezos contracts run Michelson, a strongly typed, stack-based language designed so that tools can analyze and formally verify contracts. Few developers write raw Michelson; most use one of these languages, which compile to Michelson:
| Language | Style | Typical users |
|---|---|---|
| SmartPy | Python syntax with built-in tests and simulation | Teams that know Python |
| LIGO (JsLIGO, CameLIGO) | Syntax close to TypeScript or to OCaml | Web developers use JsLIGO. Functional programmers use CameLIGO. |
| Archetype | Domain-specific language with verification features | Existing projects. The Tezos documentation says Archetype is no longer actively developed but is still maintained. |
The Tezos execution model
Tezos contracts execute differently from Ethereum contracts. A Tezos contract call returns a list of operations, which run after the current contract finishes, so a contract does not call another contract in the middle of its own execution.
This model removes reentrancy in its Ethereum form, but it has its own ordering problems, and developers must reason about the order of the returned operations.
On-chain views let one contract read data from another contract during execution. Contract storage is typed, and big maps store large collections at low cost.
Tokens on Tezos
| Standard | Proposal | Covers |
|---|---|---|
| FA1.2 | TZIP-7 | Fungible tokens only, with allowances |
| FA2 | TZIP-12 | Fungible, non-fungible and multi-asset tokens in one interface, similar to ERC-1155 |
| FA2.1 | TZIP-26 | FA2 plus tickets, on-chain views, events and FA1.2-style allowances. FA2.1 is backward-compatible with FA2. |
Token metadata follows TZIP-16 and TZIP-21. SmartPy ships an FA2 library, and LIGO offers templates in the @ligo/fa package.
NFT platforms on Tezos built a lasting community for generative and digital art. NFT token development covers NFT design in general.
The Tezos dApp front end: Taquito and octez.connect
Taquito is the TypeScript library that reads Tezos state, estimates fees and calls contracts. Wallet connections go through octez.connect, the SDK formerly called Beacon. In February 2026 the Beacon packages moved from the @airgap namespace to @tezos-x/octez.connect-*, and the Tezos documentation has a migration guide and a script for old projects.
octez.connect implements the TZIP-10 wallet standard and supports WalletConnect 2.0 wallets. Common Tezos wallets are Temple, Umami, Kukai, Trust, AirGap and Ledger. The MetaMask browser extension also supports Tezos on mainnet.
For history and analytics, most dApps query an indexer such as TzKT instead of the node. A typical stack has a React front end with Taquito and octez.connect, an indexer API, and a backend for off-chain data.
Etherlink: the EVM route
Etherlink is an EVM-compatible layer 2 built on Tezos smart rollups. Developers write Solidity, use Foundry or Hardhat, and connect MetaMask or other EVM wallets, while the rollup settles on Tezos layer 1.
The Etherlink documentation lists a confirmation time of about 500 milliseconds from the sequencer and settlement on layer 1 in about 6 seconds. The same page says an ERC-20 transfer costs $0.001 or less.
Etherlink suits teams that already work with Ethereum or port an existing dApp, but on Etherlink a team gives up the native FA2 tools and must bridge assets between layer 1 and Etherlink. The practices in Solidity development apply.
Tezos development: testing and deployment
- Write contracts in SmartPy or LIGO and unit-test them with the language's test framework.
- Run integration tests on a local sandbox node, then deploy to a public testnet listed in the Tezos documentation.
- Build the front end with Taquito and octez.connect, and test it with several wallets.
- Order an audit from reviewers who know Michelson's execution model.
- Originate (deploy) the contracts on mainnet, and check that token metadata shows correctly in wallets and indexers.
A dApp of moderate complexity, such as a marketplace or staking app with a few contracts, usually takes two to four engineers for two to four months. This range is an estimate, not a quote. Tezos has fewer auditors and developers than Ethereum, so plan extra lead time for the audit.
When to choose Tezos
Tezos suits projects that need formal verification, on-chain protocol governance, or access to its art and NFT community. Tezos has less DeFi liquidity and fewer developers than Ethereum, so check that the integrations you need exist before you commit.
To compare chains, see Polkadot dApp development, EOS blockchain (Vaulta) or the general dApp development guide.
Frequently asked questions
Do I need to learn Michelson?
Not to write contracts, because SmartPy and LIGO compile to Michelson. Reading Michelson helps during debugging and audits.
Can I deploy Solidity on Tezos?
Yes, on Etherlink, the EVM-compatible layer 2, though Tezos layer 1 runs only Michelson contracts.
What is the Tezos equivalent of ERC-721?
FA2 (TZIP-12) covers non-fungible tokens, fungible tokens and multi-asset tokens in one standard. FA2.1 (TZIP-26) extends FA2 and stays compatible with it.
Is Beacon still used for Tezos wallets?
Beacon was renamed octez.connect, and its packages moved to the @tezos-x namespace in February 2026. Old projects need new package names and imports.