# Create a dApp

You can create your own decentralized apps (dApps) to interface with Decentraland's smart contracts and expose their functionality in more elaborate and friendlier ways.

## What is a dApp

A decentralized application, or dApp, is one that runs on a distributed peer to peer network rather than from a central server.

In the context of blockchain, a dApp uses smart contracts and possibly a P2P network, instead of a Web API service. A dApp may also expose a front end and cache information from the blockchain temporarily, but its output is ultimately reflected on-chain.

See [this site](https://blockchainhub.net/decentralized-applications-dapps/) for a more complete overview about dApps.

## Decentraland smart contracts

Decentraland has written and maintains a number of smart contracts that interact with LAND and MANA tokens.

LAND and MANA tokens themselves are defined by the *LANDregistry* and *MANAtoken* contracts respectively. The list also includes more specific contracts like creating an estate out of several parcels or mortgaging parcels.

* [Decentraland smart contracts](https://contracts.decentraland.org/addresses.json): You can find a full list of each of our contracts and their addresses.

Note that each contract has a production version in *mainnet* and a test version in *sepolia* and that each has a different address.

You can read the full code of each contract, as it's public information on the blockchain. For example, you can find the contract by name on [Etherscan](https://etherscan.io/contractsVerified) to read its contents.

## dApp boilerplate code

* [Boilerplate code](https://github.com/decentraland/dapp-boilerplate): This Boilerplate code can be a great starting point for building your own dApp.

## Helper libraries

While building our own dApps internally, we put together some helper libraries that you might also find useful.

* [Decentraland-eth](https://github.com/decentraland/decentraland-eth): This is a low level library with utility functions to work with the Ethereum blockchain.
* [Decentraland-dapps](https://github.com/decentraland/decentraland-dapps): This is a higher level library with common modules for dApps. The modules in this library are built using `Decentraland-eth`.
* [Decentraland UI](https://ui.decentraland.org/): This library contains a selection of reusable UI elements that are included in Decentraland's projects.

## Sample dApps

Below are links to the full code of several dApps that we built around Decentraland, these might help you build your own:

* [Gate](https://github.com/decentraland/gate): This basic dApp creates an invitation NFT that was used when Decentraland was in a closed beta stage. In the early days, whitelisted players that held this NFT were the only ones able to enter the metaverse.
* [Marketplace](https://github.com/decentraland/marketplace): This is the full application that runs the Decentraland [Marketplace](https://market.decentraland.org/). To make it run fast, it requires a database and a backend server connected to the Ethereum network to create indexes with information about LAND.

## dApp testing framework

Before launching your dApp into production, we recommend testing it first.

* [dAppeteer](https://github.com/decentraland/dappeteer): We put this framework together to help you run tests on your dApp.

## Decentraland smart contracts

In the following link you can find a list of Etherum smart contracts relevant to the Decentraland ecosystem. The list includes the contracts in mainnet as well as in other Ethereum test networks.

[contracts.decentraland.org](https://contracts.decentraland.org/links)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.decentraland.org/creator/scenes-sdk7/blockchain/create-a-dapp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
