social networks of the users, by the users, for the users
Kwun Yeung ([email protected])
Terence Lam ([email protected])
NOTE: This document is a work-in-progress and we are still actively developing it. All of the contents are subject to change. Your feedback is highly appreciated. Please check our update regularly.
If you are interested to participate this project, feel free to indicate it by submitting this Desmos Co-Builders Sale form (non-binding)
- Desmos
To provide identity and accountibilty of validators in different chains on Desmos, we need a bridging mechansim to link between the identity from the working chain, e.g. Cosmos Hub, to a temporary identity on Desmos which can operate corresponding social interactions. Magpie
(bridge) is serving this purpose.
Magpie
works like the SESSION
of a web application. When a user would like to start a conversation, a temporary Desmos key will be created on the client application. The client application will then sign an empty session message using the key of the working chain and embed the signature to a session creation transaction on Desmos signing with the just created temporary Desmos key.
When Desmos receives the session creation transaction, it will not only validate to see if the transaction can be processed. It will also validate the embedded working chain signature with the public key provided. If the signature can be validated, it verifies the identity of the working chain and allows the user with this identity to operate any social interactions on Desmos using the temporary key created and stored on the client application.
(insert an illustration explaining the mechansim)
Magpie
will store a Session
object in the following structure.
type Session struct {
ID string
Owner sdk.AccAddress
Created time.Time
Expiry time.Time
Namespace string
ExternalOwner string
Pubkey string
Signature string
}
Each Session
has an expiry time. Once the expiry time is reached, the temporary key (Session.Owner
) can not be used and a new Session
has to be created with a new temporary key to work with.
The Session
expiry time can be extended if the temporary key keeps having activities within a SessionPeriod
.
MsgCreateSession
MsgCloseSession
The Profile
module let users maintain their public user profile. It is also the public profile of a validator. A Profile
object is attached to each working chain so that a validator / delegator can have their own profile for each chain.
type Profile struct {
ID string
Namespace string
ExternalOwner string
Moniker string
Bio string
Location string
Website string
KeybaseSuffix string
Reputation int64
Created time.Time
Modified time.Time
ReputationModified time.Time
}
A Profile
can be created and updated after an active Session
is established.
MsgCreateProfile
MsgUpdateProfile
The Reputation
module calculates the reputation of a user based on the activities she has done. This feature will be used by other modules to update users' reputations for every chain they have registered on Desmos.
A user's reputation is related to the following aspects.
- Activity
- Post attention
- No. followers
- No. likes
- No. comments
- No. of shares
The reputation should be a time sensitive figure. A user will lose reputation if she is not active in the community for a period of time.
The Post
module is used for posting messages on Desomos. Users can also make comment, upvote and downvote to a message. These interactions will trigger the Reputation
module to caluculate the latest Reputation
of a user and Minting
module to mint the new Phanero
.
A Post
object is in ths following structure.
type Post struct {
ID string
ParentID string
Message string
Created time.Time
Modified time.Time
Votes uint
Owner sdk.AccAddress
Namespace string // External service namespace, e.g. cosmos
ExternalOwner string // External owner address of the post
}
MsgCreatePost
MsgEditPost
MsgUpVote
MsgDownVote
Distribute badges to users based on reputation, tasks completed, etc.
We will be using the Cosmos NFT module.
Send Desmos transactions from the client side. It includes a key manager and functions of broadcasting tranasctions.
Forbole Limited (“Forbole”) is a for-profit company limited incorporated in Hong Kong in Oct 2017. The main businesses of Forbole will be staking-as-a-service and technology solution. Forbole is the team to work on Desmos and Big Dipper.
Big Dipper, is an award-winning open-source block explorer and delegator tool for Cosmos ecosystem chains used by people from over 130 countries. It is currently exploring Cosmos Hub, Iris Hub, Terra Money, Kava, BitSongs, Sentinel, Cyber Congress, LikeChain and Regen Network. You can check the repo of Big Dipper here.
Another related project is a Bot that monitor the chain when something happened to a specific validator, and send alert through Telegram. It sends alert every 15 seconds, if there is something happened during that time. You may check this repo.
In mid of 2017, after nearly 8 years of partnership in running a digital agency, Kwun and Terence would like to apply blockchain technology to change social networks which are monopolized by centralized powers who abuse users’ privacy to maximize their own benefits. They came up with an idea of a decentralized business network to encourage people to help other to succeed by referring suitable business and career opportunities with each other. They then cofounded Forbole Limited in Oct 2017 to pursue this goal.
In late 2017, while searching for the suitable technology to build this decentralized business network, they stopped at Tendermint. They further discovered Cosmos project and were fascinated by its vision. They started to use Cosmos SDK, which was still in its early stage, to build a testnet.
They knew that they needed some validators to run the testnet. So they started to learn how to become a validator by participating in the testnet of Cosmos Hub and the validators community.
At the same time, they also needed a blockchain explorer for Forbole’s testnet. They were not satisfied with the official explorer and hence they decided to build one. In August 2018, HackAtom 3 was announced. So they improved the UI design of their explorer and gave it a name to participate the competition. This was how Big Dipper was born. It earned a prize in HackAtom 3.
In Feb 2019, Forbole completed the famous Game of Stakes as a named winner in the Never Jailed category.
Forbole is recognized through its works in Cosmos ecosystem. With this worldwide traction, now is the right time to resume the development of decentralized social network. We start with Desmos, which will be a Cosmos ecosystem chain specific for social media. Its first application will be a microblogging platform to be integrated to Big Dipper. With the working prototype of this concept, we have won a prize in HackAtom Seoul in Jul 2019.
We are expanding our distributed team across the globe. If you share the same vision with us to disrupt the status quo in social network, come to join us! Please refer to this repo for the job openings of Forbole.