<p>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.</p>
<p>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 <ahref="https://zpl.io/22nSfB">my profile</a>, <ahref="https://zpl.io/CFBa8">user profile</a> and <ahref="https://zpl.io/Z1p9XlV">discover</a> screens.</p>
<p>A status is private and not shared with anyone except their immediate contacts, unless a <strong>#hashtag</strong> is introduced. These #hashtags are locally searchable on the discover screen.</p>
<p>The Discover application protocol is built ontop of Whisper, possibly utilising our messaging protocol and is implemented in <ahref="https://github.com/status-im/status-lib/tree/master/src/cljs/status_im/protocol">status-im/status-lib</a></p>
<p>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. <code>140chars × 4bytes (utf-8) × 100 contacts = 54kb</code></p>
<p>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</p>
<p>The Discover screen then takes this aggregate search space
<code>100-500 statuses × users in contact list</code> and organise them by #hashtags, the hashtags that have more than X contacts are put into the carousel under that #hastag category.</p>
<p>Below it the statuses are listed by most recent.</p>
<p>On tapping one of these messages a chat session is attempted with that user.</p>
<p>Each user should cache no more than 1000 statuses</p></div>
</div>
<footerclass="col-md-12">
<hr>
<p>Documentation built with <ahref="http://www.mkdocs.org/">MkDocs</a>.</p>