Home

Awesome

A tool to build distributed applications with data ownership

What is Condensation ?

Overview

Condensation is a open-source general-purpose distributed data system. Its implementation provides conflict-free synchronization, data integrity, and end-to-end security by design. It is a lightweight solution representing around 15000 lines of code, and composed of three modules:

  1. :memo: A client module : the core module allowing to structure the data from a local mutable database into an immutable blockchain. It can be installed in web, mobile, or IoT client application.</br></br>
  2. :floppy_disk: A storage module : this module can be installed on a cloud, on a private server, or on personal device in order to store the data.</br></br>
  3. :closed_lock_with_key: An encryption module : the data is end-to-end encrypted with industry-proven algorithms from existing libraries.</br></br>

Condensation remains simple to learn as it offers an API in the form of a document database. No specific background in blockchain or related technologies is required to be able to build applications with Condensation.

Key features

1. For the user

2. For the infrastructure

What are Condensation's motivations?

While both database and file systems have greatly evolved over time, their main structure has hardly changed. Database systems are based on tables with mutable records (rows), while file systems use a hierarchy of folders with mutable files inside. In both systems, data can be modified with little effort, and this at any time. Data synchronization, however, is notoriously difficult and error-prone. To perform such operations data has always been collected, processed and merged in servers, today organized in clouds, in a centralized manner. With Condensation we believe that we can change this paradigm by providing a solution to share and synchronize data in a distributed manner.

Providing a simple tool for building distributed and scalable infrastructures

Distributing our processes is advantageous for several reasons:

<p align="center"> <img src="/Images/CentralizedDistributed.jpg" alt="distributed" width="480"/> <p align = "center"><em>Today, we lack tools to develop fully distributed applications</em></p> </p>

Providing a tool which maintains the full ownership of the data

Most applications work with data systems that are centralized in clouds, which means that all the data involved flows through "someone else's computers". It is very difficult today for many companies to keep the ownership of their data. These companies need to trust a third party, like cloud companies, and adapt to their constraints and prices. With this project we aim to provide a tool allowing the development of modern and highly scalable applications without needing to trust a third party. </br>

Condensation allows to use clouds as just data storage. In this set up, data remains fully encrypted when in the cloud company's hands. All the processing and more importantly data synchronization in between the different users can be done outside from the cloud, on the users's devices, or on the data owner's servers. </br>

Providing a tool for building collaborative & conflict-free applications

<p align="center"> <img align="left" src="/Images/onlylogosVersion.jpg" alt="version control" width="130"/> </p> </br> On one side, even if they are great for source code management, current revision control systems are not suited as general purpose data systems. In order to benefit from such tools, the user needs to have a minimal understanding of branches, merging and conflict resolution, which is far beyond the knowledge of an average computer user.</br></br> <p align="center"> <img align="right" src="/Images/onlylogosCollab.jpg" alt="collaborative" width="130"/> </p> On the other side, collaborative applications for all still present several drawbacks, for now difficult to overcome. These tools can hardly work offline, because they need to permanently synchronize with a central version that is found on the cloud. Moreover the document size on which users can collaborate is limited by the transport on the network. Documents need to be shared entirely to be compared, which also increases importantly the latency in transport and processing.</br></br>

With Condensation users do not need to share entire documents to synchronize, but only the last changes. They can easily work offline because synchronization can be done in peer-to-peer, there is no need of a central ground-truth that is used to synchronize everybody. The merge algorithm is Condensation's secret sauce. It is highly efficient and allows to avoid latency and conflict issues.

How does it work ?

</br> <p align="center"> <img align="left" src="/Images/freepik-document-icon.png" alt="doc icon" width="55"/> </p> 1. Condensation's user interface works like a database, it organizes the data <b>locally</b> into flexible documents. From a developer's point of view, this makes it easy to get hands on the tool and to develop client applications. </br></br> <p align="center"> <img align="left" src="/Images/kosonicon-blockchain-icon.png" alt="bc icon" width="60"/> </p> 2. Condensation turns each document into a <b>blockchain</b> in order to guaranty its integrity when sharing it on the network.</br></br></br> <p align="center"> <img align="left" src="/Images/freepik-storage-icon.png" alt="storage icon" width="55"/> </p> 3. Because the data integrity is ensured at any time, the data can be stored anywhere, for example on a personal device, on a private server or on a public cloud.</br></br> <p align="center"> <img align="left" src="/Images/dinosoftlabs-lock-icon.png" alt="lock icon" width="60"/> </p> 4. Moreover, Condensation <b>encrypts</b> the data with AES, one of the safest and most widespread algorithms for digital security. Data privacy is ensured from <b>end-to-end</b>. The data sender's identity is controlled with using a <b>digital signature</b> based on the RSA algorithm. </br></br> <p align="center"> <img align="left" src="/Images/webalys-mail-icon.png" alt="mail icon" width="53"/> </p> 5. When synchronizing, users only need to share the last changes that were made instead of the entire document. This is allowed by the blockchain structure of the documents. This reduced amount of shared data deeply improves <b>peer-to-peer</b> synchronization. </br></br> <p align="center"> <img align="left" src="/Images/freepik-venn-icon.png" alt="merge icon" width="55"/> </p> 6. Condensation secret sauce is a very <b>performant merge</b> algorithm, based on join-semilattice, allowing efficient and <b>conflict-free</b> synchronization without any data loss. </br>

Getting started

Condensation Java implementation is stable but we are still packaging it, preparing instructions for the installation, and building the first tutorials. The most advanced developers can already get into the code with the following link. Source code

Do not hesitate to contact us for a POC at info@condensation.io. We would be very happy to collaborate with you.

Contribute

We need you

We need your help for :

Become a contributor

We are actively developing Condensation, if you want to invest, to contribute or to develop a pilot please reach out at community@condensationDB.com, and join our discord CDS - Condensation Data System.

Main links

Who we are

The team

Condensation author : </br> Thomas Lochmatter, PhD, Teacher at EPFL meet him

Early contributors :

Many thanks to our sponsors