# Getting Started

## What is beoble?

{% embed url="<https://youtu.be/EAzkZuOAUZg>" %}
Introduction to beoble
{% endembed %}

## Intro

> "Messanger of the web3 people, by the web3 people, for the web3 people"  - beoble

beoble is a communication infrastructure and ecosystem that allows users to chat between wallets. Our product includes a web-based chat app, as well as a toolkit that allows Dapps to integrate. Our chat app supports most major wallets and all messages are end-to-end encrypted.

## beoble as an ecosystem / platform

beoble provides a high-quality Web 3.0 messaging experience to end users. So far, in the Web 3.0 industry, there have been several attempts to provide a messaging feature for users, while most of them failed to continuously retain users, due to a lack of quality, compared to those in Web 2.0. Thus, beoble aims to provide a Web 3.0 messaging experience to all Web 3.0 users with below objectives:

* No compromise on privacy and security.
* No compromise on user experience compared to those of Web 2.0.
* Appropriately reward users as a user-owned Web 3.0 product.
* Leverage Web 3.0 data as much as possible to provide a unique Web 3.0 messaging experience

Check out beoble's features in the [Features section](/features/overview).

{% content-ref url="/pages/axh0EWMPVxjicW4hPC4s" %}
[FEATURES](/features/overview)
{% endcontent-ref %}

## beoble as an infrastructure

beoble provides messaging & social modules with APIs and SDKs for Web 3.0. With beoble, Web 3.0 services can easily integrate messaging and social profile functionalities into their services in 5 minutes.&#x20;

beoble's core features as an infrastructure include:

* modularized wallet-to-wallet messaging
* modularized social profile and DID
* modularized CS tool (web3 Zendesk / Intercom)

beoble offers seamless integration with any native dApps with our API/SDK modules with the following benefits:

* effortless UI integration with our API/SDK modules with native social features and improved user experience
* adds in-app organic engagement to native dApps, which improves user retention & user acquisition

## beoble links

You may check out all the social media links for beoble in the [External Links section](/additional-resources/external-links).

{% content-ref url="/pages/YvsvsWbwMSCnwaBZAzHq" %}
[External Links](/additional-resources/external-links)
{% endcontent-ref %}


# FAQ

<figure><img src="/files/SXkWE29I1DbH0iRWQ8hf" alt=""><figcaption><p>Ask us anything!</p></figcaption></figure>

## Basics

### 1. What is beoble?

In short, beoble is the Whatsapp for Web3. Our chat app allows crypto wallet owners to message each other, and our integration toolkit allows Dapps to add a great communication experience to their products fast.

### 2. What is beoble labs?

beoble labs is a team of talented web3 people that contributes to beoble. beoble labs team consists of ex-employees of prominent companies like Citadel, Goldman Sachs, J.P. Morgan, Microsoft, and Meta. Our only ambition is to "make people chat in web3".

### 3. Which blockchain can I use to log in to beoble?

beoble is currently supporting all EVM (e.g., Ethereum, Binance Smart Chain, Polygon, etc.), and we have plans to expand to other blockchains like Solana, Cosmos, Flow, Aptos, and Sui in the coming future.&#x20;

## Network

### 4. Does beoble aim to build a fully decentralized messaging ecosystem?

Yes, we are building a decentralized, end-to-end-encrypted, and peer-to-peer messaging ecosystem with the greatest user experience for web3 users by leveraging web3 data. Further details can be found in the [Architecture section](/architecture/overview).

### 5. Where will my data be stored?

We use both decentralized storage (e.g. IPFS, Arweave, etc.) and your local device. No messaging data will be stored on-chain due to security risks.

### 6. How does the network actually work?

We deliver messages via "Communication Delivery Graph", which is a decentralized encryption network designed to protect the privacy of our users. More details are in the [Communication Delivery Graph (CDG) section](/architecture/communication-delivery-graph-cdg).

### 7. Will I be able to run my own beoble node?

Yes, our nodes are planned to become public; thus, we are conducting loads of safety testing and going through multiple rounds of audits.

## Security

### 8. How does end-to-end encryption (E2EE) work in beoble?&#x20;

End-to-end encryption is pretty straightforward in Web3, given everyone owns a wallet. beoble leverages ECIES (Ethereum-based encryption) to encrypt every message that is being delivered so that only the recipient of the DM or member of a group chatroom will be able to decrypt the contents using the wallet.

### 9. How does token-gated / transaction-gated privacy setting work?

As there are too many scammers in Web3, beoble provides certain ways to prevent them, and one of them being the token-gated / transaction-gated privacy setting. Users can limit who can DM them or invite them to chatrooms so that they can set it in a way that "only someone with at least 0.5 ETH in their wallet and 20 transactions can send me DMs." You can figure out further details in the [Feature Highlight: Chat section](/features/feature-highlight-chat#spam-filtering-by-on-chain-data).

## User Experience & Features

### 10. Can I send images / videos / attachments through beoble?

Absolutely, beoble supports any files, emojis, stickers, and NFT stickers sent over a chatroom.

### 11. Can I create a group chat in beoble? Are there any limits?

Yes, of course, you can create a group chat, but without having any limits! Create as many group chats as you want with as many people as you would like to chat with.

### 12. Are the messages real-time?

Yes, all messages are in real-time, and it's pretty damn fast!

### 13. How does token-gated / transaction-gated group chat work?

As so many things are about access control in Web3, beoble provides easy methods to do so via our token-gated / transaction-gated chatrooms. Users can gate chantrooms based on tokens, NFTs, transactions, POAPs, etc. They could also combine multiple assets to create a more complicated rule too. You can figure out further details in the [Feature Highlight: Chat section](/features/feature-highlight-chat#token-gated-chatrooms).

## User Ownership & Earn & Rewards

### 14. What are cat points?&#x20;

Cat points indicate your level of engagement as a beoble user. We use the points to determine a user's eligibility for future rewards such as token airdrops.

### 15. How do I collect cat points?

Bottom line is: Be active on beoble! Almost everything you can do on beoble will accumulate to points. Think chatting, logging in, sending reactions...etc. Some actions like referral gives you extra points, so just make sure to check the pointing guide in our app.&#x20;

Another way of collecting point is to become the shareholder of earning chatrooms, which allows you to earn points via contributing to the group chat.

Besides your activity, other users can send you a super reaction, which is a gift of cat points to you.

More details can be found in the [Feature Highlight: Earn section](/features/feature-highlight-earn).

### 16. How do I use the cat points?

Earning points can bring various benefits within the beoble app, such as future airdrops or access to premium features. More detailed information will be disclosed in the near future, and we are excited to share news about that soon :D&#x20;


# Overview

## Chat

<figure><img src="/files/DE2fIoZ5GrYtuBFcHF4U" alt=""><figcaption><p>Feature - Chat</p></figcaption></figure>

beoble is a chat app, so you can definitely chat. It is an end-to-end-encrypted wallet-to-wallet chat with rich features available.

More details are covered in the [Feature Highlight: Chat section](/features/feature-highlight-chat).

{% content-ref url="/pages/Nl9iA34BCdksMnwvRgvC" %}
[Feature Highlight: Chat](/features/feature-highlight-chat)
{% endcontent-ref %}

## Earn

<figure><img src="/files/V3iLRUOw0m2CZQtIFuhC" alt=""><figcaption><p>Feature - Reward</p></figcaption></figure>

Ready to earn from beoble? As an active user of beoble, you deserve to earn from it. As you collect points from beoble, you will be eligible for a pile of airdrops in the next few months.

More details are covered in the [Feature Highlight: Earn section](/features/feature-highlight-earn).

{% content-ref url="/pages/Rvl7tq9vzX3jPD4qTfyP" %}
[Feature Highlight: Earn](/features/feature-highlight-earn)
{% endcontent-ref %}

## Follow

<figure><img src="/files/CUeF8gpT18sJCIQOFwvv" alt=""><figcaption><p>Feature - Follow</p></figcaption></figure>

Hey, what's up with everyone? What are they buying and trading? With beoble, you will be able to easily track wallets and discuss them with your peer followers.

More details are covered in the [Feature Highlight: Follow section](/features/feature-highlight-follow).

{% content-ref url="/pages/FPbJBXZ1mNPMS1fb9eY2" %}
[Feature Highlight: Follow](/features/feature-highlight-follow)
{% endcontent-ref %}

## Explore

<figure><img src="/files/W4EoZmpCEBUqvQUZgdvH" alt=""><figcaption><p>Feature - Explore</p></figcaption></figure>

Let's gather up web3 frens! Are you a pengu holder? So am I :) With beoble, communities can easily gather and grow with proper access controls and community rewards.

More details are covered in the [Feature Highlight: Discover section](/features/feature-highlight-discover).

{% content-ref url="/pages/57ntzY3lt86yWBLpY2Wx" %}
[Feature Highlight: Discover](/features/feature-highlight-discover)
{% endcontent-ref %}


# Feature Highlight: Chat

{% embed url="<https://youtu.be/j7IM45LD1nI>" %}
Feature Highlight: Chat
{% endembed %}

## Intro

Web3 people have been relying too much on Web2 tools so far when it comes to chatting and messaging. Essentially, beoble's core value is to allow anyone free to chat in Web3 space in a Web3 way.&#x20;

beoble is a purely Web3 native messenger - you don't need kinds of stuff like Twitter login or Discord login; you just need a wallet. Once you are signed in using your wallet, you can immediately start enjoying our chat features.

Basic Features

* ✅ Simple Login using Wallets
* ✅ Send Text, Images, Video, Link, and Files
* ✅ Send Emoji, NFT Stickers, Normal Stickers, and Import Stickers from Telegram
* ✅ Create Encrypted DMs, Encrypted Groupchats, Public Groupchats, Channels, and Topic (Hashtag) Chatrooms
* ✅ React and Reply to Messages.
* ✅ Update Chatroom Settings, Mute Notifications, etc.

## Token Gated Chatrooms

<figure><img src="/files/S8CbRTcEpTFRJ0ZgUVvR" alt=""><figcaption><p>Token Gated Chatrooms</p></figcaption></figure>

So many things are about access control in Web3, and we make it super easy via our token-gated / transaction-gated chatrooms. Below are some examples of what you can do in beoble.

* Only Pudgy Penguin NFT holders can join.
* Only Pudgy Penguin NFT holders or Lil Pudgy NFT holders can join.
* Only wallets with at least 0.5 ETH can join.
* Only wallets with at least 10 UNI tokens can join.
* Only wallets with at least 50 transactions can join.
* Any mixture of the above.

It is a super simple click to gate the chatrooms, and you can create complicated rules using "OR" or "AND" between rules.

## Spam Filtering by On-chain Data

<figure><img src="/files/tsm4X8giaFfriJLMCRIw" alt=""><figcaption><p>Spam Filtering by On-chain Data</p></figcaption></figure>

The awesome part is that you can use the token/transaction rules to filter spammers or scammers from DM-ing you or inviting you to weird group chats. Methods are exactly the same, so you can potentially set it in a way that "only someone with at least 0.5 ETH in their wallet and 20 transactions can send me DMs."

Isn't it cool?

## Contribute and Earn from Chatrooms

This will be explained in the [Feature Highlight: Earn section](/features/feature-highlight-earn).

{% content-ref url="/pages/Rvl7tq9vzX3jPD4qTfyP" %}
[Feature Highlight: Earn](/features/feature-highlight-earn)
{% endcontent-ref %}


# Feature Highlight: Earn

{% embed url="<https://youtu.be/PxiHFbcZXzk>" %}
Feature Highlight: Earn
{% endembed %}

## Intro

Cat points indicate your level of engagement as a beoble user. We use the points to determine a user's eligibility for future rewards such as token airdrops.\
\
Earning points can bring various benefits within the beoble app, such as future airdrops or access to premium features. Thus, points are precious, as it is the only source of your $CAT airdrops! \
More information will be disclosed in the near future, and we are excited to share news about that soon :D &#x20;

## How to earn points?

<figure><img src="/files/wHObU8fEAyk2IAxfAuym" alt=""><figcaption><p>How to earn points</p></figcaption></figure>

The baseline of the overall earning feature is simple: use the app and be an active and contributing user! There will be more and more earning sources in the future, but at the current moment, we can summarize the earning sources as below:

* Earn from Chatroom Contribution
* Earn from Super React (Donation) on Your Chats
* Earn from Completing Daily and Weekly Tasks
* Earn from Bonus Rewards
  * Successful Referrals, Sent Chats, Created Groupchats, Joined Groupchats, Growth of Referees, etc.
* Earn from Games - Wordle3

You can always check out your current progress and rewards in the Reward Center tab inside the app.

<div data-full-width="false"><figure><img src="/files/8iRxbIzl7g659k5XyycD" alt="" width="375"><figcaption><p>Reward center example</p></figcaption></figure></div>

## Earn from Chatroom Contribution and Super React

<figure><img src="/files/ooVWNFzAscKaMmsi1wrK" alt=""><figcaption><p>Fair Reward Distribution by Contribution</p></figcaption></figure>

The core idea of chatroom earning in beoble is that as you contribute more to the chatroom, you will get more rewards generated from that chatroom. Whatever revenue the chatroom generates is split by each member's contribution, which we call the "chatroom share". Thus, if your chatroom share is highest, it directly means that you contributed the most to that specific chatroom.

Currently, chatroom share is computed mostly based on:

* Super reacts received
* Super reacts sent
* Normal reacts received
* Other engagements

There are various sources of chatroom revenue, including the chatroom entrance fee. If the settings are turned on, any new users are required to pay an entrance fee to join that chatroom, which is scaled exponentially. As mentioned, those entrance fees are then split by chatroom share and granted to each member of the chatroom.

### React and Super React

<figure><img src="/files/z40ZrzcgAuY0UXU7kXnq" alt=""><figcaption><p>Roles of React and Super React</p></figcaption></figure>

People show respect to other users normally via react (e.g., like, thumbs up, etc.) and that's possible in beoble too. React in beoble actually plays more of a role than just showing respect because reacting is one of the major factors in measuring a member's contribution to that chatroom, which is reflected in chatroom share. In short, the more my chats can react, the more my contribution and chatroom share increase.

Super react is even more special in that it consumes your points to be donated to the chat creator. Furthermore, users who receive super react will receive an even bigger increment in chatroom share than a normal react, while the sender of the super react also benefits from an increment in chatroom share (normal react doesn't provide any contribution benefit).

To summarize,&#x20;

* If A **reacts** to B's chat:
  * B's contribution increases, thus increasing the chatroom share.
* If A **super reacts** to B's chat:
  * A's point is consumed by a certain amount
  * B's point to be claimed is increased by the consumed amount of A (donated from A to B)
  * A's contribution increases, thus increasing the chatroom share. (based on donation amount)
  * B's contribution largely increases, thus increasing the chatroom share by a large amount. (based on donation amount)

## Earn from Tasks and Activities

<figure><img src="/files/dthG2bJkANO68Zmaf6jO" alt=""><figcaption><p>Earn from Tasks and Activities</p></figcaption></figure>

Earning from tasks and activities is pretty simple - use the app. Most of your actions inside the app matter and will lead you to potential rewards.

You can either complete a task to gain task rewards or passively earn bonus rewards.

* Task Rewards
  * Daily Tasks
  * Weekly Tasks
  * Secret Tasks
* Bonus Rewards
  * Sending chats
  * Engaging with the community
  * Referring other users

All progress is visible inside the Reward Center tab.

## Games&#x20;

Look for the Wordle3 official chatroom in the Discover tab or through search and join!

Every time you win a game, you will be rewarded a certain amount of points.


# Feature Highlight: Follow

{% embed url="<https://youtu.be/xXNHu8A_jZI>" %}
Feature Highlight: Follow
{% endembed %}

## Intro

Follow in beoble serves multiple purposes. One of the purposes is to add other users to your contact list. Once you follow someone, your followings will always appear on the top when you search for users when adding to groups or trying to DM. Also, once you follow, we will use such data to provide you with better user recommendations and chatroom recommendations by applying to our algorithm.

Another major usage for follow action is to track their wallet. Once you follow someone, you will be automatically added to the peer followers' room, where beoble post the transaction updates of the person you are following. In short, if you follow someone called A, you will be invited to a chatroom where beoble sends transaction alerts whenever A has a wallet activity, and peer followers in that chatroom can discuss the wallet activity.

Such a feature is pretty unique in the sense that you can not only track a wallet but also discuss it with other fellow trackers. Traditionally, there are loads of wallet tracking tools, but you will be able to gain much more meaningful information and analysis once you start discussing with other people.


# Feature Highlight: Discover

{% embed url="<https://youtu.be/6g5BepS_Y6I>" %}
Feature Highlight: Discover
{% endembed %}

## Intro

It's not always straightforward and easy to look for communities regarding my token, NFT, event, region, or language. It's even more challenging to figure out and reach out to someone my wallet is most connected to and related to. beoble's Discover feature makes it super easy.

First of all, after analyzing your wallet, beoble will automatically include you in the token holders' room and NFT holders' room that you have ownership of. You do not need to manually look up and join them one-by-one.

If you are further interested in getting connected to additional web3 people, you can go through our discover tab to look for interesting communities, recommended chatrooms & users, your transaction mates, or even your lens frens!

beoble's Discover feature has it all for you to become one of the well-connected ones!


# Overview

Messaging is one of the most complicated software pieces. In this [Architecture section](broken://pages/N6T9ju2uFRq6H7apEBud), we will explain how does beoble maintain its core objectives, including but not limited to high privacy and feature richness, while remaining a stable software solution.

### High-level Architecture (BUIDLING)

<figure><img src="/files/KfL0gFiUpQpabYnKGWTK" alt=""><figcaption></figcaption></figure>

[Communication Delivery Graph (CDG) section](/architecture/communication-delivery-graph-cdg) explains how beoble is aiming to maintain a high level of privacy in terms of message delivery while being decentralized. We are continuously building this!

{% content-ref url="/pages/AgJpGqXuDIzPIVPKJ6tY" %}
[Communication Delivery Graph  (CDG)](/architecture/communication-delivery-graph-cdg)
{% endcontent-ref %}

[Privacy & Encryption section](/architecture/privacy-and-encryption) explains how beoble is aiming to remain secure in terms of message content encryption.

{% content-ref url="/pages/U99ZpF9U4afhJRBX11aF" %}
[Privacy and Encryption](/architecture/privacy-and-encryption)
{% endcontent-ref %}

[Decentralized Identity & Social Graph section](/architecture/decentralized-identity-and-social-graph) explains how beoble allows users to create Web 3.0 identities with massive social graphs.

{% content-ref url="/pages/pWfE4h1qnztOpDTjCbl6" %}
[Decentralized Identity & Social Graph](/architecture/decentralized-identity-and-social-graph)
{% endcontent-ref %}

[Cross-Chain Data Connectivity section](/architecture/cross-chain-data-connectivity) explains how beoble maintains connections with existing popular blockchain networks like Ethereum, BSC, Polygon, Avalance, Solana, Aptos, Sui, etc.

{% content-ref url="/pages/NIltuzVqFGpG6PBEBp3c" %}
[Cross-Chain Data Connectivity](/architecture/cross-chain-data-connectivity)
{% endcontent-ref %}


# Communication Delivery Graph  (CDG)

The Communication Delivery Graph (CDG) is beoble's unique graph or network to deliver communication that will serve the future of beoble. The purpose of building a separate network for delivering communication is to ensure privacy and decentralization.

Before we get into details on how beoble CDG works, first, let's look at how Web 2.0 messaging systems deliver messages.

## Existing Messaging Infrastructures & Problems

### 1. Cloud-based Messaging (Web 2.0)

<figure><img src="/files/mS83TNsuf17wxwwt9SQ3" alt=""><figcaption><p>typical structure of a cloud-based messaging system</p></figcaption></figure>

One of the most typical ways of building a messaging system is to build it cloud-based. There might be centralized servers and databases where users can connect to the servers to access their data and deliver chats to other users. As a cloud-based system, the performance could be typically fast, while it could have some security concerns, as data and message operations are both centralized. Some typical examples of such infrastructure include Telegram and Facebook Messenger.

### 2. Peer-to-peer (P2P) Messaging (Web 2.0)

<figure><img src="/files/Q1MsOyf4SCanxRH0g1YV" alt=""><figcaption><p>typical structure of a peer-to-peer messaging system</p></figcaption></figure>

As cloud-based systems contain some issues regarding security, some of the more secure messaging systems are built based on the peer-to-peer (P2P) model. There are still centralized servers but no centralized databases; instead, all the data are stored in user devices. Given devices might have risks of getting damaged or lost, often P2P messaging systems allow users to back up their chat history to specific backup databases to which users have private access. Still, the message operations are pretty much centralized, which also contains a certain level of security risk. Some typical examples of such infrastructure include Whatsapp and Signal.

### 3. On-chain Messaging on Existing Layer-1 Blockchains (Web 3.0)

<figure><img src="/files/QvgLa1F3q4s9LHOe2YQN" alt=""><figcaption><p>typical structure of a possible on-chain messaging system on an existing layer 1</p></figcaption></figure>

On-chain messaging on existing layer-1 blockchains, like Ethereum, Polygon, etc., would be the most straightforward design to achieve a "decentralized" messaging system. It can be achieved by deploying a smart contract that delivers messages to other users. However, many challenges are involved here, including but not limited to privacy problems, gas fee issues, and single-chain dependency. Especially regarding the privacy issue, as, in public blockchains, anyone could quickly look up any ongoing transactions, the public might quickly figure out the fact that wallet 0xA from the above figure is sending messages to wallet 0xB. Eventually, this could result in colossal privacy issues, as the sender and receiver aren't protected from the public's monitoring.

Given that such a model doesn't seem ideal, what kind of infrastructure might achieve a decentralized but privacy-preserving messaging system?

## beoble's Communication Delivery Graph

<figure><img src="/files/TRvLEsvwTIwOzaFZOyMG" alt=""><figcaption><p>structure of beoble's decentralized communication delivery graph</p></figcaption></figure>

Given both cloud-based messaging and the p2p messaging system of Web 2.0 don't provide the highest level of security and privacy due to centralization risk, beoble decided to design a fully decentralized and privacy-preserving design of delivering communication called Communication Delivery Graph (CDG).&#x20;

### Glossary

* **Wallet**: Refers to Web 3.0 wallet of any existing layer 1.
* **End-to-End-Encryption**: A security method that keeps your communications secure that doesn't allow any third party to read your message contents, using chatroom participants' public keys.&#x20;
* **Multi-Layered Encryption Method**: A security method to provide multi-level access control to different parties on a single encrypted object.
* **Delivery Path**: A path in the graph where a single beoble message is delivered within the nodes in the graph
* **Decentralized Storage**: Storage that offers decentralized storage; typical ones currently include IPFS and Arweave. Also, beoble is aiming to bring a more beoble-tailored decentralized message storage for beoble's efficiency.

### Step-by-step delivery example

1. Wallet 0xA logins to beoble
2. Client 0xA uses beoble's client SDK to prepare message delivery
   1. beoble SDK discovers available nodes (from the above image, nodes A, B, C, D, and E)
   2. beoble SDK figures out a proper path that is secure and deliverable (from the above image, path B -> A -> C -> E)
   3. beoble SDK encrypts the message using multi-layered encryption, encrypting the message in order using the recipient's public key, node E's public key, node C's public key, node A's public key, and node B's public key.
3. Based on the preparation, Client 0xA initiates message delivery to node B.
4. Upon receiving the message, node B starts processing the message.
   1. Node B decrypts the message using its private key and figures out the next destination, which is node A (node B cannot decrypt further, thus cannot know the destination after A)
   2. Node B initiates the transfer of the message to node A.
5. Node A and C conduct the same processing.
6. Node E receives the message, and after processing, it knows that the path only has the final destination 0xB left, thus delivering the message to 0xB.
7. Client 0xB uses its private key to decrypt the message.
8. Both clients 0xA and 0xB can back up their new message to decentralized storages, maintaining their chat data reliable.

### What are the benefits of the Communication Delivery Graph?

* **Privacy-Preserving**: Delivery paths are mangled from the client SDK and encrypted in a way that each node only knows the next destination of delivery; thus, the privacy of the message sender and receiver is preserved.
* **Decentralized**: Anyone could possibly get involved in operating the CDG nodes; thus, there aren't any centralized operators of message delivery.
* **Scalable**: As there are more and more CDG node operators, the performance of message delivery on CDG scales.
* **Performance Efficient**: Delivery of messaging relies more on encryption and path settlement rather than consensus nor any sort of proof-of-work, thus, being highly performance efficient.
* **User Data Ownership**: CDG is just a delivery system, like your food or package delivery, and all the final data comes from you - you are able to fully manage and take ownership of your data.


# Privacy and Encryption

One of beoble's core values is "no compromise on privacy and security".

The current section, \<Privacy and Encryption>, describes more about how beoble achieves its core value to maximize privacy and security level.

Before reading through this section, you might want to have a quick look at [Communication Delivery Graph (CDG) section](/architecture/communication-delivery-graph-cdg) first if you haven't already.

{% content-ref url="/pages/AgJpGqXuDIzPIVPKJ6tY" %}
[Communication Delivery Graph  (CDG)](/architecture/communication-delivery-graph-cdg)
{% endcontent-ref %}

### Glossary (Recap)

* **Wallet**: Refers to Web 3.0 wallet of any existing layer 1.
* **End-to-End-Encryption**: A security method that keeps your communications secure that doesn't allow any third party to read your message contents, using chatroom participants' public keys.&#x20;
* **Multi-Layered Encryption Method**: A security method to provide multi-level access control to different parties on a single encrypted object.
* **Delivery Path**: A path in the graph where a single beoble message is delivered within the nodes in the graph

## beoble's end-to-end-encryption overview through Communication Delivery Graph (CDG)

<figure><img src="/files/QDxDSkB8NkYudhB9yVez" alt=""><figcaption><p>beoble's encryption flow when user A sends "GM!" to user B</p></figcaption></figure>

beoble's privacy and security methodology is special in a way that it leverages special techniques like multi-layered encryption on top of end-to-end encryption. In a nutshell, beoble uses multi-layered encryption to encrypt both path and message, to only be decrypted and consumed by proper "middle-man" nodes. It's like a "Russian doll" encryption.

Imagine a scenario where user A sends the message "GM!" to user B.

### Step-by-step encryption and decryption scenario

1. User A, which uses wallet 0xA, initiates sending chat "GM!" to user B, which uses wallet 0xB.
2. beoble client SDK figures out the path (A -> B -> C -> D in the above figure) and encrypts using the public keys in the following order:
   1. Encrypts the inner-most layer using user B's public key
   2. Encrypts the following layer using the public key of the last node in the path, node D.
   3. Encrypts the subsequent layers using the nodes' public keys in the opposite order of the path, node C -> node B -> node A.
3. The message "GM!" is now encrypted in 5 layers.
4. When delivered to node A, node A decrypts the message using its own private key and figures out the next destination (node B) and the encrypted message, which is, at this point, encrypted in 4 layers.
5. Node B and node C conduct the same process.
6. When delivered to node D, node D decrypts the message and figures out that it now needs to be delivered to the final destination, user B, thus, sending it to wallet 0xB.
7. User B now decrypts the message using the private key to view the actual message "GM!".

This structure makes it impossible for any of the middle-man CDG nodes to view the message while participating in the delivery process.


# Decentralized Identity & Social Graph

beoble allows users to create decentralized identities along with the social graph.

So, what is a decentralized identity? How does it work?

### How identity works in the old digital world

Whenever people try to access any form of digital software, they are usually asked for a certain identity. Such identities may be IP addresses, email addresses, phone numbers, Google / Apple accounts, Twitter accounts, Telegram handles, etc., issued by certain platform operators or service providers to identify the user within a network or an application. With these identities presented, people can use or access relevant services.&#x20;

However, such identities provided by centralized platform providers often risk their users with privacy and security issues. Also, the interoperability of such an identity is pretty low most of the time.

### How decentralized identity works

In the industry, decentralized identity (DID) is a new approach to identity management that allows individuals to control and manage their own digital identities without relying on any other central authority or intermediary. Instead of storing and managing identity information in a centralized database or server, DID uses blockchain or a decentralized medium to create a decentralized network of identity providers, which anyone with a private key can access.

In a decentralized identity system, individuals are in complete control of their own identity data and can choose which information to share with whom and when. This gives users greater privacy and security, as they are not reliant on a centralized authority to manage and safeguard their personal information.

At beoble, your DID manages all your social data, including your friends, contacts, followers, etc., and your social state, including your profile info, settings to manage who you want to talk to, online status, etc.

## beoble's decentralized identity and social graph overview through Communication Delivery Graph (CDG)

<figure><img src="/files/mybhbghcbvew8joRZcSz" alt=""><figcaption><p>beoble's "user follow" action flow diagram</p></figcaption></figure>

beoble's CDG is highly efficient in delivering information, so why not use it for social graph flow as well? By leveraging CDG, beoble can efficiently and safely deliver non-message information too, as shown in the diagram above. Whenever a user sends follow request, it will be verified and delivered over CDG, though this process is not fully P2P, as the CDG nodes will partially keep this information for user lookup.

While beoble allows users to build their own social graph on top of beoble's network, it also leverages other social graph infrastructures, like Lens and CyberConnect, to provide the best user experience. The user doesn't need to do anything -  just simply log in to beoble, and we will auto-sync your contacts from other infrastructures, which happens via our social graph synchronizer.


# Cross-Chain Data Connectivity

beoble provides so many exciting features using your Web 3.0 data, like token-gated privacy settings, token-gated group chats, NFT community group chats, and using your NFTs in various places like profile images or stickers.&#x20;

This session briefly describes how beoble does it - how does beoble look up and maintain Web 3.0 data from cross-chain?

## beoble's web 3.0 data connectivity on Communication Delivery Graph (CDG)

<figure><img src="/files/KZUYF71V1Xlr6GhiTaui" alt=""><figcaption><p>beoble's synchronization with layer-1 blockchains</p></figcaption></figure>

As mentioned, beoble leverages existing layer-1 blockchains like Ethereum, Polygon, Binance Smart Chain, Avalanche, etc., to provide Web 3.0 user experiences like token gates, NFT gates, NFT profiles, and stickers. Who maintains these controls are the beoble's CDG - the main graph used for delivering chats and information. Thus, it is inevitable that CDG must look up existing layer-1 blockchains to maintain these controls. Thus, the beoble team enabled microservice indexing for CDG nodes. These nodes will index every known beoble user (it doesn't index non-user) so that indexed information can be leveraged to maintain Web 3.0 user experience control.

Below is the list of supported and potentially supported layer-1 blockchains for beoble:

* Ethereum
* Polygon
* Binance Smart Chain
* Avalanche
* Solana
* Aptos
* Sui

However, beoble is pretty flexible that whenever there might be a need to add a supported blockchain, it will be added.


# One-line Integration

Using beoble only takes 5 minutes of your time.&#x20;

You need a single line of code to be added to your dApp!

### Get PlugIn Key

To use the beoble plugin for the web, you need to get a plugin key.

Currently, you can request any beoble admin to get a plugin key.

{% hint style="info" %}
We are working on building a dashboard for admins and are going to provide it ASAP
{% endhint %}

### Installation

insert the following script in the HTML file's \<head> tag

```html

<script
  id="beoble"
  data-plugin-key="YOUR_PLUGIN_KEY"
  src="https://cdn.beoble.app/plugin/beoble-loader.js"
/>

```

Now beoble chat module should be at the bottom right corner of your webpage!


# Using UI-Toolkit

UI Toolkit is basically our base UI that is built in a way that is easy to modify.&#x20;

It is built on top of react-js and is free for you to customize in any possible way! (yes, it is just a code)

### Get PlugIn Key

To use the beoble customized UI toolkit for the web, you need to get a plugin key.

Currently, you can request any beoble admin to get a plugin key.

{% hint style="info" %}
We are working on building a dashboard for admins and are going to provide it ASAP
{% endhint %}

### Get Repository Access

You can reach out to beoble admin to claim your access to the UI toolkit repository.

{% hint style="info" %}
We are working on building a dashboard for admins and are going to provide it ASAP
{% endhint %}


# Using Javascript SDK

beoble's Javascript SDK provides easy use of beoble API calls and everything related to encrypting, authenticating, storing, and managing user data.

This Javascript SDK can be used on multiple places like the web, mobile (React Native), and Node.js.

If you need access to our Javascript SDK repository, please reach out to beoble admin.

### Get API Key

To use the beoble SDK, you need to get an API key.

Currently, you can request any beoble admin to get an API key.

{% hint style="info" %}
We are working on building a dashboard for admins and are going to provide it ASAP
{% endhint %}

### Get Repository Access

You can reach out to beoble admin to claim your access to the Javascript SDK repository.

{% hint style="info" %}
We are working on building a dashboard for admins and are going to provide it ASAP
{% endhint %}


# Using API

Using beoble's API can be your final resolution if neither our UI Toolkit nor Javascript SDK suites you.

### Get API Key

To use the beoble API, you need to get an API key.

Please reach out to beoble admin to explain your conditions and claim your API key to start using beoble API.

{% hint style="info" %}
We are working on building a dashboard for admins and are going to provide it ASAP
{% endhint %}


# Persona / User / DID

A persona in beoble is the same as a user or decentralized identity (DID).&#x20;

So, what is a decentralized identity? How does it work?

You can refer to the [Decentralized Identity & Social Graph section](/architecture/decentralized-identity-and-social-graph) to learn more.

{% content-ref url="/pages/pWfE4h1qnztOpDTjCbl6" %}
[Decentralized Identity & Social Graph](/architecture/decentralized-identity-and-social-graph)
{% endcontent-ref %}

## Breakdown of Persona

The following is the high level of how data are defined in an `Persona` object of beoble. The following list doesn't cover every single field in the `Persona` object, but it shows some of the essential fields that might be useful to know.

### 1. Identity Data Section

#### beoble ID

* **type**: unique identifier
* **description**: Field `beoble ID` is a unique identifier object for every user of beoble. (i.e., every user in beoble has a unique beoble ID)

#### Wallets

* **type**: list of wallets
* **description**: Field `Wallets` records all the wallets that are associated with a persona. Currently, beoble does not allow users to connect multiple wallets to a single persona but plans to support it in the future; thus, wallets are defined as lists.

#### **Public Key**

* **type**: key object
* **description**: Field `Public Key` is the public key of the user that is used for end-to-end encryption. You can find out more details about encryption in the [Privacy and Encryption section](/architecture/privacy-and-encryption).

#### Name (User Name)

* **type**: string
* **description**: Field `Name` is a unique name of the user that users can set. It is similar to "handle" in other social services.

#### Display Name

* **type**: string
* **description**: Field `Display Name` is a field that users can set for name display purposes to other users.

#### Description

* **type**: string
* **description**: Field `Description` is a field that users can set for information display purposes to other users.&#x20;

#### Profile

* **type**: media object
* **description**: Field `Profile` stores the media object (i.e., images, gifs, videos) to be shown in the profile and background images.

### 2. Social Graph Data Section

#### Friends

* **type**: list of personas
* **description**: Field `Friends` stores the list of user pointers who are the user's friends.&#x20;

#### Followers

* **type**: list of personas
* **description**: Field `Followers` stores the list of user pointers who follows the user.&#x20;

#### Followings

* **type**: list of personas
* **description**: Field `Followings` stores the list of user pointers that the user follows.&#x20;

### 3. Setting Data Section

#### Privacy Setting

* **type**: setting object
* **description**: Field `Privacy Setting` stores the privacy setting that the user has set. It contains Web 3.0 access settings and social graph based access settings.

#### Chatroom Setting

* **type**: setting object
* **description**: Field `Chatroom Setting` stores the setting and customization per chatroom that the user has set. It contains notification and foldering information.

### 4. Status Data Section

#### Create Time

* **type**: timestamp
* **description**: Field `Create Time` stores the timestamp of the moment when the persona object was created.

#### Update Time

* **type**: timestamp
* **description**: Field `Update Time` stores the timestamp of the moment when the persona object was updated.

#### Last Online Time

* **type**: timestamp
* **description**: Field `Last Online Time` stores the timestamp of the moment when the user was last online.

#### Online Status

* **type**: online status type
* **description**: Field `Online Status` stores the online status of the user. Persona also stores which dApp the user was online from.


# Chatroom

A chatroom is the core element of beoble, where users can send chats to each other.&#x20;

So, how does the chatroom work? How are the messages delivered in beoble?

You can refer to the [Communication Delivery Graph (CDG) section](/architecture/communication-delivery-graph-cdg) to learn more.

{% content-ref url="/pages/AgJpGqXuDIzPIVPKJ6tY" %}
[Communication Delivery Graph  (CDG)](/architecture/communication-delivery-graph-cdg)
{% endcontent-ref %}

## Breakdown of Chatroom

The following is the high level of how data are defined in an `Chatroom` object of beoble. The following list doesn't cover every single field in the `Chatroom` object, but it shows some of the essential fields that might be useful to know.

### 1. Identity Data Section

#### Chatroom ID

* **type**: unique identifier
* **description**: Field `chatroom ID` is a unique identifier object for every chatroom of beoble. (i.e., every chatroom in beoble has a unique chatroom ID)

#### Creator

* **type**: persona object
* **description**: Field `Creator` contains the user information of the chatroom creator.

#### Display Name

* **type**: string
* **description**: Field `Display Name` is a field that chatroom admin users can set for chatroom name display purposes to users.

#### Description

* **type**: string
* **description**: Field `Description` is a field that chatroom admin users can set for information display purposes to users.&#x20;

#### Profile

* **type**: media object
* **description**: Field `Profile` stores the media object (i.e., images, gifs, videos) to be shown in the profile and background images of the chatroom.

### 2. Core Data Section

#### Chats

* **type**: bulk of chat objects
* **description**: Field `Chats` are the encrypted messages that belong to a certain chatroom.

#### Last Chat

* **type**: chat object
* **description**: Field `Last Chat` is a cached chat object pointing to this chatroom's last message.

#### Pinned Chat

* **type**: chat object
* **description**: Field `Pinned Chat` is a cached chat object pointing to this chatroom's pinned message.

#### Read (regarding mark as read)

* **type**: read object
* **description**: Field `Read` contains information about which messages members of the chatroom read.

#### Members

* **type**: bulk of member objects
* **description**: `Member` objects are a combination of `Persona` objects with `Role` objects. Each member contains information about the user in this chatroom, like whether this member is an admin or not and what level of access they have.&#x20;

### 3. Encryption Data Section

#### **Chatroom Public Key**

* **type**: key object
* **description**: Field `Chatroom Public Key` is the public key of the chatroom that is used for end-to-end encryption, where users use it to encrypt messages and send them to the chatroom. You can find out more details about encryption in the [Privacy and Encryption section](/architecture/privacy-and-encryption).

### 4. Status Data Section

#### Create Time

* **type**: timestamp
* **description**: Field `Create Time` stores the timestamp of the moment when the chatroom object was created.

#### Update Time

* **type**: timestamp
* **description**: Field `Update Time` stores the timestamp of the moment when the chatroom object was updated.


# Chat / Message

A chat or message is the most important information of beoble, which is the object that users send to each other.&#x20;

So, how does sending a chat / message work? How are these chats delivered in beoble?

You can refer to the [Communication Delivery Graph (CDG) section](/architecture/communication-delivery-graph-cdg) to learn more.

{% content-ref url="/pages/AgJpGqXuDIzPIVPKJ6tY" %}
[Communication Delivery Graph  (CDG)](/architecture/communication-delivery-graph-cdg)
{% endcontent-ref %}

## Breakdown of Chat

The following is the high level of how data are defined in an `Chat` object of beoble. The following list doesn't cover every single field in the `Chat` object, but it shows some of the essential fields that might be useful to know.

### 1. Identity Data Section

#### Chat ID

* **type**: unique identifier
* **description**: Field `Chat ID` is a unique identifier object for every chat of beoble. (i.e., every chat in beoble has a unique chat ID)

#### Chatroom ID

* **type**: unique identifier
* **description**: Field `Chatroom ID` is a unique identifier object for every chatroom of beoble (i.e., every chatroom in beoble has a unique chatroom ID). This field shows which chatroom the chat belongs to.

#### Creator

* **type**: persona object
* **description**: Field `Creator` contains the user information of the chat creator / sender.

### 2. Chat Data Section

#### Text / Content

* **type**: string
* **description**: Field `Text / Content` is the content of the chat itself that the user has sent.

#### Attachments

* **type**: bulk of files
* **description**: Field `Attachments` are the attachments (e.g., image, video, file) that are sent together with the chat.

#### Reactions

* **type**: bulk of emojis
* **description**: Field `Reactions` are the emoji reactions that any member of the chatroom has made to the current chat.

#### Quoted Chat

* **type**: chat object
* **description**: Field `Quoted Chat` is the chat that the current chat is quoting or replying to.&#x20;

### 3. Status Data Section

#### Create Time

* **type**: timestamp
* **description**: Field `Create Time` stores the timestamp of the moment when the chat object was created.

#### Update Time

* **type**: timestamp
* **description**: Field `Update Time` stores the timestamp of the moment when the chat object was updated.


# External Links

#### Official Website

[https://beoble.io](https://beoble.io/)

#### Official Web App

[https://beoble.app](https://beoble.app/)

#### Twitter

<https://twitter.com/beoble_official>

#### LinkedIn

<https://www.linkedin.com/company/beoble>


