> For the complete documentation index, see [llms.txt](https://chainedx.gitbook.io/chainedx-protocol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chainedx.gitbook.io/chainedx-protocol/2.-solution-overview.md).

# 2. Solution Overview

The <mark style="color:yellow;">ChainedX Protocol</mark> is composed of three major elements. The first is <mark style="color:yellow;">identity</mark>, which creates a representation of users. The second is a <mark style="color:yellow;">social graph</mark>, which models relationships between user identities. The final element is <mark style="color:yellow;">messaging</mark>, which facilitates communication between the users based on their social graph connections.&#x20;

We considered many different design aspects when creating the elements of this protocol. Six core aspects we address are:&#x20;

<mark style="color:yellow;">**Ownership:**</mark> Who owns and controls the data?

&#x20;<mark style="color:yellow;">**Privacy:**</mark> How and when is data private, and how is that privacy managed?&#x20;

<mark style="color:yellow;">**Authenticity:**</mark> How can protocol actions be verified and attributed?&#x20;

<mark style="color:yellow;">**Portability:**</mark> How can users make use of their personal data in different contexts? What data is available to third parties and how is it obtained?&#x20;

<mark style="color:yellow;">Usability:</mark> What options exist for user interaction?

<mark style="color:yellow;">**Extensibility:**</mark> How is functionality changed or upgraded over time?&#x20;

Most social networking products solve only some of these aspects, whether through technical limitations or explicit choices. Vertically integrated products inherently struggle with portability, and many choose not to enforce privacy or ownership standards. Federated protocols, with their dependence on shared servers, generally can’t provide strong user data ownership guarantees. Existing decentralized networks have limited privacy and private communication capabilities and struggle with usability. We believe the optimal approach to address these six core aspects is a protocol that leverages an existing public blockchain as a neutral, decentralized platform for data and communications, while defining a standard format for data interaction and employing strong encryption for privacy, allowing any number of different user experiences to be created.&#x20;

<mark style="color:yellow;">**ChaiendX Protocol**</mark> models the identity of a user as an individually owned smart contract on a public blockchain. This smart contract allows the user to maintain complete control of their data, and ensures that no third party can revoke their access. This smart contract also acts as the root for other protocol actions, allowing user relationships, messages, and content to have a common attribution. The smart contract enables users to delegate permissions for certain actions in the protocol to third parties, such as user agents or applications, without sacrificing ownership and control. Delegation allows for cost shifting, so authorized delegates can pay for the calls they invoke on the user’s behalf. A “design by contract” approach allows for functional upgrades and multiple different implementations, while preserving user discretion on when or if to make changes.&#x20;

The social graph is composed of events emitted on a blockchain, modeling a directed graph of “follow” relationships. Users have direct control to make changes on the graph independent of the provider they are using. Relationships can be public or private, including the indication of whether the event is starting or ending a relationship. By using a common data format on a blockchain, the data has inherent portability. Users decide whom they share their data with, instead of being locked in to a third-party system. As with identity, users can delegate permissions to a user agent or third party, allowing them to emit relationship events on their behalf. In addition, users can share encryption keys to give third parties the ability to read private graph data. The protocol also supports extending relationship types to support other use cases, such as friends, fans, or group membership.

&#x20;Messaging is modeled as broadcast event announcements on a blockchain that link to content stored off the blockchain. The solution supports options for both message and recipient privacy. All message data, whether stored on or off the chain, has a cryptographic chain of trust back to the originating identity. Since all messages are announced on chain, the common data format allows messages to be retrieved by any conforming client or third party, although private messages require the appropriate keys to decrypt them. Users can also delegate permissions to send messages on their behalf, whether for usability or costshifting reasons. Finally, the types and formats of messages and message announcements can be expanded over time to support additional use cases, such as reactions, spam scoring, curated topics, or tag-based discovery.

&#x20;Combined, these elements represent an unbundling of social networks as they currently exist, and create a unified, universally accessible, and decentralized ecosystem for social graphs.&#x20;


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://chainedx.gitbook.io/chainedx-protocol/2.-solution-overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
