Welcome to the developer preview of Rell! This is a milestone in the development of Chromapolis, and one of the first opportunities to get your hands on the latest tools that have been developed for the platform. In line with our mission to make mainstream dapps a practical reality, we have decided to prioritise providing a rich and usable toolset for dapp developers right from the outset. We aim to have enough infrastructure in place for serious dapp development before we launch our mainnet or generate any tokens. With actual dapps ready at mainnet launch Chromapolis will have the best possible start and the best hope of attracting a diverse range of providers, bootstrapping a healthy ecosystem.
This developer preview is an important step, we want to give the dapp developer community an early look at what they will be able to achieve with Chromapolis and Rell, and to solicit vital feedback about how to make them as good as possible. As a previewer you are:
- Interested in decentralised systems.
- A builder. Perhaps you have already tried out Ethereum, EOS, or something else, and you found the experience to be limiting.
- Unhappy with current economic systems in software. Inefficient and niche open-source platforms or hyper-centralised information networks in which you are ultimately the product.
- Ready to get involved! You have the chance to become a core part of this project in the future, but even simple feedback is very valuable at this stage.
Rell is built for Chromapolis. Chromapolis is a new blockchain platform for decentralized applications, conceived in response to the shortcomings of existing platforms and designed to enable a new generation of dapps to scale beyond what is currently possible
While platforms such as Ethereum allow any kind of application to be implemented in theory, in practice they have many limitations: bad user experience, high fees, frustrating developer experience, poor security. This prevents decentralized apps (dapps) from going mainstream.
We believe that to address these problems properly we need to seriously rethink the blockchain architecture and programming model with the needs of decentralized applications in mind. Our priorities are to:
- Allow dapps to scale to millions of users.
- Improve the user experience of dapps to achieve parity with centralized applications.
- Allow developers to build secure applications with using familiar paradigms.
Most dapp blockchain platforms use virtual machines of various kinds. But a traditional virtual machine architecture doesn’t work very well with the Chromapolis relational data model, as we need a way to encode queries as well as operations. For this reason, we are taking a more language-centric approach: a new language called Rell (Relational language) will be used for dapp programming. This language allows programmers to describe the data model/schema, queries, and procedural application code.
Rell code is compiled to an intermediate binary format which can be understood as code for a specialized virtual machine. Chromapolis nodes will then translate queries contained in this code into SQL (while making sure this translation is safe) and execute code as needed using an interpreter or compiler.
Rell will have the following features:
- Type safety / static type checks. It’s very important to catch programming errors at the compilation stage to prevent financial losses. Rell will be much more type-safe than SQL, and it will make sure that types returned by queries match types used in procedural code.
- Safety-optimized. Arithmetic operations are safe right out of the box, programmers do not need to worry about overflows. Authorization checks are explicitly required.
- Concise, expressive and convenient. Many developers dislike SQL because it is highly verbose. Rell doesn’t bother developers with details which can be derived automatically. As a data definition language, Rell is up to 7x more compact than SQL.
- Allows meta-programming. We do not want application developers to implement the basics from scratch for every dapp. Rell will allow functionality to be bundled as templates.
Our research indicated that no existing language or environment has this feature set, and thus development of a new language was absolutely necessary.
We designed Rell in such a way that it is easy to learn for programmers:
- Programmers can use relational programming idioms they are already familiar with. However, they don’t have to go out of their way to express everything through relational algebra: Rell can seamlessly merge relational constructs with procedural programming.