Skip to main content

Decentralized applications (dApps)

One of the main features of blockchains is decentralization: each transaction is verified by multiple nodes and its validation process does not rely on a single trusted third party. Decentralized applications (dApps or Dapps) take advantage of these features to create applications that are independent, transparent, and trustless.

In general, dApps have these parts:

  • Frontend: An off-chain component that can act as a user interface to simplify interaction with the on-chain component, run off-chain processing, and get information from sources that are not available to the on-chain component
  • Middleware: Optionally, an indexer to interpret the backend information and provide it in a more convenient format for the front-end component
  • Backend: An on-chain component that consists of one or more smart contracts

The off-chain component can be nearly any kind of program, including a web application, mobile or desktop app, or command-line interface. It relies on wallets and tools to interact with the smart contracts on behalf of a user's Tezos account.

Fundamental diagram of dApps, showing the frontend, indexer, and backend

Some of these tools that allow an off-chain component to interact with smart contracts include:

The next pages in this section illustrate dApps with examples, detail the main steps when developing dApps such as Connecting to wallets and Sending transactions, and introduce some best practices


These tutorials cover dApps of different complexities: