Docs Menu

Understanding Bonafide

What is Bonafide?

Bonafide is an open protocol for building applications where people control their own data and connections, rather than leaving those things in the hands of each app.

Instead of creating a separate network of relationships for every application, Bonafide gives people a common foundation that different apps can use.

Each person has their own database, which holds their data, connections, and access permissions. Applications work with this information through the protocol rather than owning it themselves.

Bonafide is designed to support many kinds of applications, from messaging and sharing to marketplaces, payments, and other services.

We've also tried to make decentralized applications easier to build by handling much of the underlying complexity in the protocol and the Bonafide agent library.

Two layers

Bonafide separates the mechanics of connecting and sharing from the content that applications actually exchange.

Layer 1 handles connections and access control.

It defines how two parties establish a private, encrypted connection and how access is granted and managed.

There are no public addresses or universal identities identifying people across their connections. Each connection is independent, and the protocol doesn't need to understand the content being exchanged.

Layer 2 handles content and domains.

A domain defines what information applications can exchange and how that information is organized and shared.

For example, the Pools domain defines concepts such as pools and posts. Other domains can define the information needed for messaging (we're releasing this one next), marketplaces, or entirely different kinds of applications.

Applications that implement the same domain can understand and work with the same kinds of information.

What this makes possible

The two layers mean developers don't have to rebuild the mechanics of identity, connections, and access control every time they create an application.

They can focus on the particular problem they're trying to solve, using existing domains where appropriate or defining new ones when needed.

For users, it means their relationships and data don't have to belong to any one application. Different apps can work with the same underlying network, and people can choose the ones they prefer.