{"action":"created","issue":{"url":"https://api.github.com/repos/libp2p/go-floodsub/issues/67","repository_url":"https://api.github.com/repos/libp2p/go-floodsub","labels_url":"https://api.github.com/repos/libp2p/go-floodsub/issues/67/labels{/name}","comments_url":"https://api.github.com/repos/libp2p/go-floodsub/issues/67/comments","events_url":"https://api.github.com/repos/libp2p/go-floodsub/issues/67/events","html_url":"https://github.com/libp2p/go-floodsub/pull/67","id":298573730,"number":67,"title":"gossipsub","user":{"login":"vyzo","id":36426,"avatar_url":"https://avatars0.githubusercontent.com/u/36426?v=4","gravatar_id":"","url":"https://api.github.com/users/vyzo","html_url":"https://github.com/vyzo","followers_url":"https://api.github.com/users/vyzo/followers","following_url":"https://api.github.com/users/vyzo/following{/other_user}","gists_url":"https://api.github.com/users/vyzo/gists{/gist_id}","starred_url":"https://api.github.com/users/vyzo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vyzo/subscriptions","organizations_url":"https://api.github.com/users/vyzo/orgs","repos_url":"https://api.github.com/users/vyzo/repos","events_url":"https://api.github.com/users/vyzo/events{/privacy}","received_events_url":"https://api.github.com/users/vyzo/received_events","type":"User","site_admin":false},"labels":[{"id":541001997,"url":"https://api.github.com/repos/libp2p/go-floodsub/labels/in%20progress","name":"in progress","color":"ededed","default":false}],"state":"open","locked":false,"assignee":{"login":"vyzo","id":36426,"avatar_url":"https://avatars0.githubusercontent.com/u/36426?v=4","gravatar_id":"","url":"https://api.github.com/users/vyzo","html_url":"https://github.com/vyzo","followers_url":"https://api.github.com/users/vyzo/followers","following_url":"https://api.github.com/users/vyzo/following{/other_user}","gists_url":"https://api.github.com/users/vyzo/gists{/gist_id}","starred_url":"https://api.github.com/users/vyzo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vyzo/subscriptions","organizations_url":"https://api.github.com/users/vyzo/orgs","repos_url":"https://api.github.com/users/vyzo/repos","events_url":"https://api.github.com/users/vyzo/events{/privacy}","received_events_url":"https://api.github.com/users/vyzo/received_events","type":"User","site_admin":false},"assignees":[{"login":"vyzo","id":36426,"avatar_url":"https://avatars0.githubusercontent.com/u/36426?v=4","gravatar_id":"","url":"https://api.github.com/users/vyzo","html_url":"https://github.com/vyzo","followers_url":"https://api.github.com/users/vyzo/followers","following_url":"https://api.github.com/users/vyzo/following{/other_user}","gists_url":"https://api.github.com/users/vyzo/gists{/gist_id}","starred_url":"https://api.github.com/users/vyzo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vyzo/subscriptions","organizations_url":"https://api.github.com/users/vyzo/orgs","repos_url":"https://api.github.com/users/vyzo/repos","events_url":"https://api.github.com/users/vyzo/events{/privacy}","received_events_url":"https://api.github.com/users/vyzo/received_events","type":"User","site_admin":false}],"milestone":null,"comments":17,"created_at":"2018-02-20T12:19:37Z","updated_at":"2018-03-10T00:11:04Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/libp2p/go-floodsub/pulls/67","html_url":"https://github.com/libp2p/go-floodsub/pull/67","diff_url":"https://github.com/libp2p/go-floodsub/pull/67.diff","patch_url":"https://github.com/libp2p/go-floodsub/pull/67.patch"},"body":"Implements the gossipsub protocol; see https://github.com/vyzo/gerbil-simsub for a high-level literate specification.\r\n\r\nTODO:\r\n- [X] tests tests tests!\r\n- [X] subscription announce messages, sent by base `PubSub`, need to be reliable so that we accurately track peers in a topic"},"comment":{"url":"https://api.github.com/repos/libp2p/go-floodsub/issues/comments/371981186","html_url":"https://github.com/libp2p/go-floodsub/pull/67#issuecomment-371981186","issue_url":"https://api.github.com/repos/libp2p/go-floodsub/issues/67","id":371981186,"user":{"login":"whyrusleeping","id":1243164,"avatar_url":"https://avatars0.githubusercontent.com/u/1243164?v=4","gravatar_id":"","url":"https://api.github.com/users/whyrusleeping","html_url":"https://github.com/whyrusleeping","followers_url":"https://api.github.com/users/whyrusleeping/followers","following_url":"https://api.github.com/users/whyrusleeping/following{/other_user}","gists_url":"https://api.github.com/users/whyrusleeping/gists{/gist_id}","starred_url":"https://api.github.com/users/whyrusleeping/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whyrusleeping/subscriptions","organizations_url":"https://api.github.com/users/whyrusleeping/orgs","repos_url":"https://api.github.com/users/whyrusleeping/repos","events_url":"https://api.github.com/users/whyrusleeping/events{/privacy}","received_events_url":"https://api.github.com/users/whyrusleeping/received_events","type":"User","site_admin":false},"created_at":"2018-03-10T00:11:04Z","updated_at":"2018-03-10T00:11:04Z","author_association":"COLLABORATOR","body":"Review from while i was on a plane today:\r\n1. docs please, its not clear that `Join` and `Leave` are just callbacks from the pubsub to the router\r\n\t- in general, we should have docs on the expectations and contracts that a router is expected to fulfil\r\n2. why a random delay on announceRetry?\r\n3. random thought, but what happens if some peers set their gossipsub parameters really low? like 1 or 2.\r\n4. publishing to a topic you arent subscribed to seems like it might get expensive. also maybe a bit leaky? If i publish once to a topic, it looks like i set fanout peers for that topic. Does that ever get cleaned up?\r\n5. any thought around getting DoSed through the 'topics' field filling up? There are probably a thousand other ways to DoS pubsub, but this one seems pretty easy\r\n6. heartbeat interval should probably be configurable, with the default being a constant. Maybe link to your experiments showing why 1 second is a good default\r\n7. i would turn the 'getNetSequenceNumber' thing in pubsub.Publish into a separate function\r\n8. more docs on the different implications between mesh and fanout\r\n9. in heartbeat, it seems like we could combine the looping over plst with the initial getPeers call. Why not just put the logic from that look in the closure youre passing?\r\n10. is there no 'too many peers' check for fanout becoming too large?\r\n11. in heartbeat, we call flush to push out piggybacked messages that didnt get sent, and then at the end of heartbeat we send some more messages. Why not call flush after that to potentially coalesce the grafts and prunes from this heartbeat with the gossip info in flush?"}}
{"actor":{"display_login":"whyrusleeping"}}