Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dimchat/DIMP
Decentralized Instant Messaging Protocol
https://github.com/dimchat/DIMP
decentralized end-to-end-encryption instant-messaging user-identification
Last synced: 2 months ago
JSON representation
Decentralized Instant Messaging Protocol
- Host: GitHub
- URL: https://github.com/dimchat/DIMP
- Owner: dimchat
- License: mit
- Created: 2018-11-11T10:03:48.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-01-13T18:06:15.000Z (about 4 years ago)
- Last Synced: 2024-08-04T05:04:53.690Z (6 months ago)
- Topics: decentralized, end-to-end-encryption, instant-messaging, user-identification
- Language: Python
- Size: 84 KB
- Stars: 74
- Watchers: 8
- Forks: 19
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Decentralized Instant Messaging Protocol (DIMP)
[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/moky/DIMP/blob/master/LICENSE)
[![Version](https://img.shields.io/badge/alpha-0.1.0-red.svg)](https://github.com/moky/DIMP/wiki)## 0. Abstract
This document introduces a new protocol designed for instant messaging (IM) and an architecture for developing decentralized IM applications. The software provides accounts(user identity recognition) and communications between accounts safely by end-to-end encryption.It includes just TWO extremely simple parts:
1. User Identify
2. MessagingCopyright © 2018 Albert Moky
### White papers
- [English](TechnicalWhitePaper.md)
- [Chinese](zh-CN/TechnicalWhitePaper.md)## 1. User Identify
### 1.0. Meta
See [mkm.Meta](MingKeMing-Identity.md#meta) for details.
### 1.1. ID
See [mkm.ID](MingKeMing-Identity.md#id) for details.
### 1.2. Public Key
A **public key** (PK) was binded to an ID by the [Meta Algorithm](MingKeMing-Identity.md#id-address).
### 1.3. Entity (Account/Group)
**Entity** is the sender/receiver in the network communication.An entity can be an account or a group. It has an **ID**, a **name**, and a **number** for searching.
An **account** will have a **public key**.
A **group** will have **founder**, **owner** and **members**.
```javascript
// create account
user = new Account(accountID, accountPK);// create group
group = new Group(groupID, founderID);
```## 2. Messaging
### 2.0. Envelope
See [dkd.Envelope](DaoKeDao-Message.md#envelope) for details.
### 2.1. Content
See [dkd.Content](DaoKeDao-Message.md#content) for details.
### 2.2. Instant Message
See [dkd.InstantMessage](DaoKeDao-Message.md#instant-message) for details.
### 2.3. Reliable Message
See [dkd.ReliableMessage](DaoKeDao-Message.md#reliable-message) for details.
---
Version 0.1 by [Albert Moky](http://moky.github.com/) [Sun Nov 11 23:18:08 CST 2018]