Skip to main content

Rell

Rell (Relational Language) is Chromia's purpose-built programming language for developing decentralized applications (dapps). It combines the power of relational databases with blockchain technology, making it an ideal choice for building secure and efficient dapps.

Why Rell?

Unlike traditional blockchain platforms that use general-purpose virtual machines, Chromia takes a language-first approach. Rell was specifically designed to work seamlessly with Chromia's relational data model, allowing developers to write queries, define data structures, and implement application logic—all in one expressive language.

Key benefits

  • Easy to learn: If you know SQL or languages like JavaScript or Kotlin, you can pick up Rell quickly.
  • Type-safe: Rell ensures that your code is type-safe at compile time, catching errors before they reach production and protecting your application from costly bugs.
  • Concise syntax: Write less code to do more. Rell's clean, readable syntax reduces boilerplate and makes your dapps easier to maintain.
  • Built-in security: Arithmetic operations are overflow-protected, and authorization checks are mandatory, giving you peace of mind when handling sensitive operations.

How does Rell work?

Rell compiles into optimized SQL queries that run on Chromia's PostgreSQL-backed blockchain. This means you get the best of both worlds:

  1. Blockchain guarantees: Immutability, transparency, and decentralization for your data
  2. Database performance: Fast queries and efficient data storage using proven relational database technology

A simple example

Here's what Rell code looks like:

/ Define your data structure
entity user {
key name;
email: text;
created_at: timestamp;
}

/ Create a new user (transaction)
operation create_user(name: text, email: text) {
create user(name, email, created_at = op_context.last_block_time);
}

/ Query users (read-only)
query get_user(name: text) {
return user @? { .name == name };
}

As you can see, Rell is straightforward and intuitive. You define entities (like database tables), operations (for transactions that modify state), and queries (for reading data).

What's next?

Ready to start building? Here's your path forward:

tip

Rell is designed to be familiar. If you've worked with SQL, JavaScript, or Kotlin, you'll feel right at home. Don't worry about learning everything at once—start with the basics and explore more features as you need them.