wiki.status.im/docs/proposals/discover.md

2.2 KiB
Raw Blame History

Discover

This document describes the Discover feature of Status. Ethereum is its community, and with Discover we want to connect other Ethereum users with other Ethereum users - to trade and exchange ideas. Ultimately this will reduce transaction costs and increase the utility of ETH.

Discover is done through a users Status (hence the application name). This status is a 140 char sub-headline to a users profile which can be seen on my profile, user profile and discover screens.

A status is private and not shared with anyone except their immediate contacts, unless a #hashtag is introduced. These #hashtags are locally searchable on the discover screen.

The Discover application protocol is built ontop of Whisper, possibly utilising our messaging protocol and is implemented in status-im/status-lib

Periodically the client should request from it's contacts, a package of statuses that is an aggregate compilation of discoverable statuses (created using the specifications below), this package should contain no more than 100-500 statuses and the period in which the client requests the package is after when the user is back online and/or after waiting X hours has elapsed. Whisper penalizes larger payloads so we may have to chunk this. 140chars × 4bytes (utf-8) × 100 contacts = 54kb

The 100 contacts the user decides to return is weighted by;

  • the newest available information (latest status from that user),
  • the most seen contact statuses by other contacts. (that user who has seen the same contact status from all his contacts)
  • and actual interactions with contacts, favor contacts that the user has actually messaged themselves.
  • if contact is online

The Discover screen then takes this aggregate search space 100-500 statuses × users in contact list and organise them by #hashtags, the hashtags that have more than X contacts are put into the carousel under that #hastag category.

Below it the statuses are listed by most recent.

On tapping one of these messages a chat session is attempted with that user.

Each user should cache no more than 1000 statuses