1. Background

Building a successful social app is a complex process of iterating fast over different ‘user interaction’ patterns. These interaction patterns define the app, which makes them unique. But these apps also share many building blocks. Reusing these building blocks can accelerate these iterations.

A new breed of social apps are emerging around the social utility of a network, which got lost in the age of “social media”. A common trait of these apps is going beyond monetisation - via data hoarding - by providing users control of their data.

Users controlling their data, shorten the time-to-market by reducing the cold-start issue of building critical mass of friends/ followers as the users themselves carry their social graph across apps. This user-control of data also protects app builders from impediments of success such as data compliance requirements for PII (Personally Identifiable Information).

Screenshot 2024-02-20 at 8.11.32 PM.png

2. Introduction

DCN (Decentralised Contact Network) is a peer-to-peer network, on which each participant gets a ‘Personal Information Store’ through which their ‘agents’ can exchange contact information via handshakes such as ‘join, ‘follow’, etc. DCN provides seamless people search to the participants across the network and also provides a low-code stack to developers for building user-centric social utility apps.

3. Design

The fundamental unit of DCN is Account, whose actions are executed through their Agents. Each device of an Account is represented on the network as an Agent.

The network can be visualised as three layers, with distinct capabilities and responsibilities, namely:

User-level Network (4).png

3.1 Account-FS

User-Controlled Identity, Account & Storage Layer. Account-fs is a user-controlled account system with a personal information store that is portable across apps and and also syncs across devices. It is local-first so “You own your data, in spite of the cloud”.

All the data is encrypted at rest and on wire, ensuring privacy in an open network. Users can selectively provide data access to different apps.

Account-fs is built on content-addressed data storage. It uses WNFS for providing an encrypted filesystem with locally running Helia nodes. These nodes are synced with the Hubs by the agents.

The data is “encrypted at rest” with AES-GCM cipher suite. The encryption keys are stored locally with the agent. Hubs always store the encrypted data, which can only be decrypted with keys that are owned by the agent.

3.2 Handshakes

Communication & Data Exchange Layer

The agents can perform handshakes for accounts, through an E2EE messaging channel. Handshakes are used to acquire connections and contacts and share user personal information from account-fs with other users and apps. The network currently supports Join, Relate, Invite & Link handshakes