Unfinished Labs
IntroductionVersion 1.0.0Goals & PurposeHow to Read This SpecificationImplementation StatusLanguage InterfacesContracts and InterfacesDSNP SDKsRoadmap
Identity
IdentifiersGraph
Batch Publications
Announcements
Activity Content
Reference
Draft Specifications
↩ Developer Portal

DSNP Specification

Version 1.0.0

Welcome to the Decentralized Social Networking Protocol (DSNP) specification! Here you can find a detailed documentation regarding the current state of the protocol and proposals for future extensions.

Goals & Purpose

The free communication of users on the internet faces a variety of problems in the modern day. These challenges include censorship from state and corporate actors, the amplification of misinformation through viral content, and an ever-shrinking collection of near monopolies with absolute power over social interaction in the 21st century. Through the DSNP, we hope mitigate and ideally solve these challenges in the way social interaction operates online.

How to Read This Specification

The specification is divided into several modules. Each module describes a mostly self-contained aspect of the DSNP and includes documents detailing the function and intended use the module.

Proposals for some of these future extensions can be found in the Draft Specifications section and on GitHub, however these proposals should be regarded with caution as they are largely incomplete and may be subject to change or deletion without notice.

Implementation Status

Versions

DSNP Specification Versions follow Semantic Versioning 2.0 for releases. Draft Specifications do NOT effect the version number until they are included. Reference and Roadmap changes do NOT effect the version number.

NameDescriptionDate
1.0.0Initial Release2021-09-08

Draft Specifications

NameStatusDescription
ArchivistDRAFTLong term DSNP Announcement Storage

Draft Status Definitions

NameDescription
DraftOpen for comment and major changes.
ProposedReady for formal review. It should be done except for minor changes.
TentativeThis is the accepted plan. The specification should not change unless there are blocking issues.

Language Interfaces

Solidity

All included Solidity interfaces are targeting the Solidity language version 0.8.x. Other versions may be available in the official contracts code repository.

Contracts and Interfaces

Official DSNP interfaces and implementations code may be found in GitHub.

DSNP SDKs

  • Official TypeScript/JavaScript

Roadmap

Last Updated: 2021-09-08

Completed

WorkStatus
WhitepaperDone (2020 Q4)
Spec OutlineDone (2021 Q1)
Batch Announce First DraftDone (2021 Q1)
Spec Live!Done (2021 Q1)
Identity Contract & DelegationDone (2021 Q2)
Batch Announce File FormatDone (2021 Q3)
Identity FactoryDone (2021 Q2)
Graph Handle RegistryDone (2021 Q2)
Batch Announce Filter SystemDone (2021 Q3)
Graph DataDone (2021 Q3)
Announcement/Publishing RevisionDone (2021 Q3)
Stabilize 1.0Done (2021 Q3)

Future

Below is a tentative roadmap to what protocol features are being developed next! Items are ordered by current priority.

Chain Migration

Status: In progress

Ethereum's cost is too high. Migrate the DSNP architecture to another chain.

Private Graph

Status: Whitepaper

Keep some graph connections private with permissioned access.

Direct Messaging

Status: Whitepaper

One-to-one messaging with metadata privacy.

Public Friends

Status: Not Started

Graph connections are currently limited to one-way follow relationships. Build support for other forms of relationships that require all parties to opt-in.

Social Account Recovery

Status: Not Started

Use the social graph to leverage safe account recovery and protect against private key losses.

Private Friends

Status: Not Started

Expand private graph to other relationships while maintaining metadata protection.

Verified Attributes

Status: Not Started

Some users and applications need social identities with additional layers of validation. How can these be created while being privacy preserving and support an open system.

Distributed Content Moderation

Status: Not Started

Content moderation is hard because it means different things to different people. Make customizing content moderation easier through distributing the work and results.

Namespace and Multichain support

Status: Not Started

Identity and content from other systems could be used without needing to understand the originating system. Support DSNP across multiple chains to increase user choice and avoid locking data to one chain or network.

Content Bridges

Status: Not Started

Open social network bridges would allow more content and users to be accessible to all via DSNP.

Service-Node Protocols

Status: Not Started

Sub-specifications targeted at ecosystem services to promote interoperability.

Private Group Messaging

Status: Not Started

Secure many-to-many conversions. Group chat style still with metadata privacy.

Private Posts to Friends

Status: Not Started

Secure one-to-many posts that still allow for commenting.

Third-party Identity Bridges

Status: Not Started

Create ways for users to be able to bring their own identities or connect a DSNP Identity with outside identities.

Archivists

Status: Draft

Long-term storage for announcements and perhaps expanding to content storage.

Peer-to-Peer publishing

Status: Not Started

Build a peer-to-peer system for announcement publishing for faster routing and message delivery.

Learning More

In addition to this document, more resources regarding our project can be found at DSNP.org, including our blog, forum, code repository and SDK.