What software are we using and why?

Image for post
Image for post

This text introduces the software set to build the Cambiatus platform (former BeSpiral).

The platform has three layers: Distributed Ledger Technology (DLT), backend, and front-end. Currently, the DLT layer is represented by blockchain software that handles the deployment of smart contracts, and registers certain operations made on the blockchain such as transactions of tokens and voting.

The backend serves as a bridge between the blockchain software, the core functionalities of the Cambiatus platform, and the front-end. The later is the layer visible to users. Through it, they interact with the functionalities of the Cambiatus platform. The software technologies enable Cambiatus to be scalable, more maintainable and bug-free, and user-friendly.

We are testing the Cambiatus prototype in several pilots projects in different countries (Costa Rica, Brazil and Spain) while also developing additional functionalities which will be integrated into the platform.

What is Cambiatus?

Cambiatus is an open source platform built with DLT (currently using the EOSIO blockchain) and functional programming languages to help humanity to solve environmental, social and economic challenges through the creation of complementary currencies.

Cambiatus is a powerful tool for implementing several of the Sustainable Development Goals promoted by the United Nations.

Cambiatus is a dApp (Decentralized Application). Indeed, it is the first Brazilian dApp built using the EOSIO blockchain. We intend Cambiatus to become a Decentralized Autonomous Community (DAC) by the end of 2020.

Cambiatus functionalities are being designed on the basis of solid and pragmatic scientific knowledge to help people to take decisions in decentralized systems, increase community engagement, and establish bottom-up governance based on values. We will describe each of these in futures posts.

The Cambiatus platform has functionalities for both makers (community, organization leaders) and users (people that will only use the Cambiatus webapp). The functionalities designed for makers have the following aims:

1) Help anyone to learn faster how to design social currency systems to solve their problems, challenges, whatever their concerns;

2) Once the design is done, to help test the design of the complementary system in a simulator before implementing it in real life;

3) Facilitate the implementation of social currencies and provide the means to incentivize community engagement and governance.

The functionalities designed for users have the following aims:

  1. To be user-friendly;
  2. To incentivize the engagement with other users;
  3. To facilitate transactions between people using local complementary currencies.

We expect people to start using the Cambiatus platform frequently because of its functionality, open-source code, and user-friendly interface. Assuming this, Cambiatus needs to be scalable, resilient and its code need to be written using languages that facilitate maintainability and bug-free deployment. That is why we chose to use functional programming languages to implement both the front-end and backend layers.

Image for post
Image for post

Functional programming languages

Since 2007, humanity entered the Shift Age (Houle, 2013), a period in which technology change — language programming paradigms, governance models, the way money is created, among other things — is mainstream, i.e., is the status quo. Not only change itself but the speed of those changes are greater than ever. This is one of the main characteristics of the Shift Age. In hardware technology, we see the advent of multi-core machines, whose advantages can only be fully exploited with new languages that facilitate concurrent programming.

The still prevailing computational language paradigm, object-oriented programming, unfortunately, is not well-suited to the development of concurrent programs. Changes in hardware and the growing complexity of software are forcing us to rethink the foundations of programming (Milewski, 2018). Functional programming languages allow programmers to more easily develop concurrent programs.

Taking into account this trend, we decided to use functional languages to support our backend and front-end layers.

Elixir is built on top of Erlang which excels in building real-time, distributed, and concurrent systems. These are characteristics needed to build a web-app such as a Cambiatus platform.

Visionary companies like Ericsson stayed ahead of their time and developed the Erlang programming language together with the Erlang VM in the 1980s. Erlang is a powerful concurrent programming language which is still evolving. Because of its use-friendliness and clean syntax, we chose the Elixir functional and meta-programming language to support the backend layer of the Cambiatus platform.

According to Hao (2017), Elixir describes itself as a functional, meta-programming-aware language built on top of the Erlang virtual machine. As a functional programming language Elixir has modern features such as immutable state, higher-order functions, lazy evaluation, and pattern matching. As a meta-programming aware, Elixir generates code from pieces of code.

More details about Elixir programming language: https://elixir-lang.org/.

Although JavaScript is the most-used front-end language, we decided to use Elm, since it helps the programmer to create cleaner, less error-prone and more maintainable code with its strict type system.

Elm is a functional programming language designed to support front-end web development. It uses only pure functions, that is, functions without side effects. Elm produces no runtime errors; all errors are caught at compile time. This saves an enormous amount of developer time.

Elm is declarative. You can find more details about the Elm: https://elm-lang.org/.

We use Haskell to implement algorithms that come from scientific fields such as social network analysis (SNA) which will help people better interact with each other and participate in gamification processes, among other functionalities.

Haskell is a purely functional programming language with a strict type system. More details about Haskell: https://www.haskell.org/.

Image for post
Image for post

Why does Cambiatus use the EOSIO blockchain?

These are the characteristics why we chose the EOSIO blockchain:

  • It is scalable, i.e., since the launch of the main net (June 2018), it has processed almost 4.000 tps (transactions per second).
  • It has no transaction fee.
  • It allows the user to recover funds in case of a cyber-attack or if the user has lost its active key.
  • Its community members incentivize collaboration instead of competition.

The EOSIO blockchain is more environmentally friendly than other blockchains, consuming far less energy than Bitcoin. This is possible because EOSIO uses the delegated proof of stake (DPoS) method instead of the proof of work consensus mechanism.

More info about EOSIO: https://eos.io/.

Since DLT’s are evolving quickly, we are analyzing other technologies. If some of them prove to be better than EOSIO, we will probably adopt it. Thus Cambiatus platform will run over different DLTs, not just one. And if in the future, there will be DLT software written with a functional programming language, other than the existing ones, Cambiatus probably will adopt it as well.

Cambiatus is being built with these blockchain software and functional programming languages, thanks to a brilliant group of developers that are part of our team. Meet them here. And join them on Github!


Houle, D. 2013. Entering the shift age: the end of the information age and the new era of transformation. Sourcebooks.

Milewski, B. 2017. Category theory for programmers. https://github.com/hmemcpy/milewski-ctfp-pdf.


Cambiatus Blog | New Organizations.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store