{"action":"created","issue":{"url":"https://api.github.com/repos/status-im/ideas/issues/92","repository_url":"https://api.github.com/repos/status-im/ideas","labels_url":"https://api.github.com/repos/status-im/ideas/issues/92/labels{/name}","comments_url":"https://api.github.com/repos/status-im/ideas/issues/92/comments","events_url":"https://api.github.com/repos/status-im/ideas/issues/92/events","html_url":"https://github.com/status-im/ideas/issues/92","id":304497077,"number":92,"title":"Research Ethereum discovery protocol","user":{"login":"adambabik","id":277870,"avatar_url":"https://avatars1.githubusercontent.com/u/277870?v=4","gravatar_id":"","url":"https://api.github.com/users/adambabik","html_url":"https://github.com/adambabik","followers_url":"https://api.github.com/users/adambabik/followers","following_url":"https://api.github.com/users/adambabik/following{/other_user}","gists_url":"https://api.github.com/users/adambabik/gists{/gist_id}","starred_url":"https://api.github.com/users/adambabik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adambabik/subscriptions","organizations_url":"https://api.github.com/users/adambabik/orgs","repos_url":"https://api.github.com/users/adambabik/repos","events_url":"https://api.github.com/users/adambabik/events{/privacy}","received_events_url":"https://api.github.com/users/adambabik/received_events","type":"User","site_admin":false},"labels":[{"id":754722531,"url":"https://api.github.com/repos/status-im/ideas/labels/golang","name":"golang","color":"f4d81d","default":false},{"id":749665068,"url":"https://api.github.com/repos/status-im/ideas/labels/in-progress","name":"in-progress","color":"57f9ab","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2018-03-12T18:51:36Z","updated_at":"2018-03-23T10:27:15Z","closed_at":null,"author_association":"MEMBER","body":"## Preamble\r\n\r\n    Idea: #92-discovery-v5-research\r\n    Title: Research Ethereum discovery protocol\r\n    Status: Draft\r\n    Created: 2018-03-12\r\n\r\n## Summary\r\nDiscovery protocol is essential for long-term scaling of the Status app. It will improve security and reliability of the app and prepare it for the beta launch. \r\n\r\n## Swarm Participants\r\n- Lead Contributor: @adambabik\r\n- Testing & Evaluation: TBD\r\n- Contributor: @dshulyak (mailserver related topics)\r\n- Contributor: TBD\r\n\r\n## Product Overview\r\nDiscovery protocol will allow us to dynamically change the number of peers in our cluster and also distribute the peers among various providers and countries without rebuilding the app itself, hence improving security and reliability.\r\n\r\nThe biggest challenge may be increased CPU and network usage. This needs to be carefully measured as it may lead to proposing some discovery protocol changes for light nodes.\r\n\r\n### Product Description\r\nThis is a research swarm. It must provide answers to the following questions:\r\n- [ ] CPU/network increase usage. How does it change in absolute and relative values? How to reproduce the measurement?\r\n- [ ] Can we turn on and off discovery protocol when the node is running?\r\n- [ ] Can Discovery V5 protocol carry more information than protocol name and version? How can we distinguish Light Whisper nodes or Whisper nodes with MailServer capability? Notice that revealing this information (like Light Whisper node) may increase a chance to reveal the peer identity. The fact that we don’t want mobile phones to be each other peers raises this question.\r\n- [ ] How to make sure that connecting to the cluster will be fast? This is more a cluster question, i.e. how to autoscale cluster so that it can quickly connect new peers.\r\n- [ ] How to make sure that there are always at least N peers with given protocol support. For instance, we always want to have at least some Whisper and some LES peers connected. Also, we want to always have at least one Whisper peer with MailServer support.\r\n\r\n### Requirements & Dependencies\r\nOverall, the discovery protocol should be testable locally with Docker, but for some more extensive tests, we may utilize a public cluster build on Google Cloud Platform. This would require some consultancy with Finance.\r\n\r\n### Minimum Viable Product\r\nGoal Date: TBD\r\n\r\nDescription: All questions described in Product Description are researched and answered. Additionally, there is an instruction which params must be set to make it work with bootnodes and dynamic peers, ideally, as a docker compose file that can be run locally to simulate a basic dynamic topology.\r\n\r\n## Success Metrics\r\nSpecific numbers that will allow us to move further with enabling Discovery protocol support.\r\n\r\n## Links\r\n* https://github.com/fjl/p2p-drafts\r\n\r\n## Copyright\r\nCopyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).\r\n"},"comment":{"url":"https://api.github.com/repos/status-im/ideas/issues/comments/375609985","html_url":"https://github.com/status-im/ideas/issues/92#issuecomment-375609985","issue_url":"https://api.github.com/repos/status-im/ideas/issues/92","id":375609985,"user":{"login":"dshulyak","id":1964576,"avatar_url":"https://avatars2.githubusercontent.com/u/1964576?v=4","gravatar_id":"","url":"https://api.github.com/users/dshulyak","html_url":"https://github.com/dshulyak","followers_url":"https://api.github.com/users/dshulyak/followers","following_url":"https://api.github.com/users/dshulyak/following{/other_user}","gists_url":"https://api.github.com/users/dshulyak/gists{/gist_id}","starred_url":"https://api.github.com/users/dshulyak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dshulyak/subscriptions","organizations_url":"https://api.github.com/users/dshulyak/orgs","repos_url":"https://api.github.com/users/dshulyak/repos","events_url":"https://api.github.com/users/dshulyak/events{/privacy}","received_events_url":"https://api.github.com/users/dshulyak/received_events","type":"User","site_admin":false},"created_at":"2018-03-23T10:27:15Z","updated_at":"2018-03-23T10:27:15Z","author_association":"MEMBER","body":"> That idle mode is enforced by us (status-go) or it's DiscV5 feature?\r\n\r\ni meant that i am waiting in test for additional 10m after peers are connected :) to get a better understanding how traffic growth\r\n\r\necerything is available:\r\nall status go code is here https://github.com/status-im/status-go/pull/736 . I will try to split it later if there will be problems with review\r\n\r\nand the test is https://github.com/status-im/status-scale/pull/4\r\n\r\ni will probably also make a doc with explanation how it all works specifically in our case"}}
{"actor":{"display_login":"dshulyak"}}