Quickstart
Welcome to Quickstart. Here is a step-by-step guide to building a decentralized application quickly.
Set up your environment
The primary requirements for building on Cartesi are Docker Desktop and the Cartesi CLI.
If you use Windows, you must have WSL2 installed and configured for building. In Docker Desktop settings, confirm that the WSL2-based engine configurations are enabled.
Install Docker Desktop and Cartesi CLI
Install Docker Desktop for your operating system.
To install Docker RISC-V support without using Docker Desktop, run the following command:
docker run --privileged --rm tonistiigi/binfmt:riscv
Cartesi CLI is an easy-to-use tool to build and deploy your dApps. To install it, run:
npm i -g @cartesi/cli
Create an application
To create the backend application from scratch, run:
cartesi create <dapp-name> --template <language>
This creates a new directory with template code in the language you specify.
$ cartesi create js-dapp --template javascript
✔ Application created at /js-dapp
Your application entry point will be the src/index.js
file.
Build the application
To build your application, ensure you have Docker Desktop running.
After that, you can run the command provided below:
cartesi build
The cartesi build
command builds a Cartesi machine and compiles your application so that it is ready to receive requests and inputs.
Run the application
Running your application starts a local Anvil node on port 8545
.
To run your application:
cartesi run
Send inputs to the application
You have some options available for sending inputs to your application. One option is the cartesi send
command.
Another option is Cast, a command-line tool enabling you to make Ethereum RPC calls.
Additionally, you can build a custom web interface to input data into your application.
Using Cartesi CLI
Here is how you can send input to your dApp:
cartesi send
This guides you through sending inputs with the CLI interactively.
? Select the send sub-command (Use arrow keys)
❯ Send DApp address input to the application.
Send ERC-20 deposit to the application.
Send ERC-721 deposit to the application.
Send ether deposit to the application.
Send generic input to the application.
Using Cast
Here is how you can send input to your dApp with Cast:
cast send <InputBoxAddress> "addInput(address,bytes)" <DAppAddress> <EncodedPayload> --mnemonic <MNEMONIC>
This command sends an input payload to your application through the InputBox
contract.
Replace placeholders like <InputBoxAddress>
, <DAppAddress>
, <EncodedPayload>
, and <MNEMONIC>
with the actual addresses, payload, and mnemonic for your specific use case.
You can obtain the relevant addresses by running cartesi address-book
.
Using a custom web interface
You can create a custom frontend that interacts with your application.
Here are frontend templates created by the community with all the significant functionalities to build on Cartesi.
Deploy the application
There are two methods to deploy an application:
Self-hosted deployment: Deploy the application node using your infrastructure.
Third-party service provider: Outsource running the application node to a service provider.
Deployment with a third-party service provider is under development and will be available in a future release.
Community tools
Several tools created and maintained by the community streamline the dApp creation process on Cartesi Rollups.
- Deroll: TypeScript framework for building on Cartesi.
- NoNodo: NoNodo is a lightweight development tool that runs the backend application without requiring Docker or a node.
- python-cartesi: Python framework for building on Cartesi.
- cartesi-ts-sqlite: A TypeScript + SQLite template.
- Rollmelette: Go framework for building on Cartesi.
- Cartesify: A web3 client to interact with the Cartesi machine.
- cartesi-router: TypeScript-based Router Implementation for Cartesi dApps.
- cartesi-wallet: TypeScript-based Wallet Implementation for Cartesi dApps.
- python-wallet: Python-based Wallet Implementation for Cartesi dApps.