{"action":"created","comment":{"url":"https://api.github.com/repos/poanetwork/hbbft/pulls/comments/233482738","pull_request_review_id":174905437,"id":233482738,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzMzQ4MjczOA==","diff_hunk":"@@ -41,9 +41,9 @@ pub trait SenderQueueableOutput<N, M>\n where\n     N: NodeIdT,\n {\n-    /// Returns an optional new node added with the batch. This node should be added to the set of\n-    /// all nodes.\n-    fn added_node(&self) -> Option<N>;\n+    /// Returns the new set of validator that this batch is starting key generation for, including\n+    /// the existing ones. These should be added to the set of all nodes.","path":"src/sender_queue/mod.rs","position":8,"original_position":8,"commit_id":"cc877cb9c3bb7b5df60780736f331c973ae03b49","original_commit_id":"cc877cb9c3bb7b5df60780736f331c973ae03b49","user":{"login":"afck","id":7894725,"node_id":"MDQ6VXNlcjc4OTQ3MjU=","avatar_url":"https://avatars0.githubusercontent.com/u/7894725?v=4","gravatar_id":"","url":"https://api.github.com/users/afck","html_url":"https://github.com/afck","followers_url":"https://api.github.com/users/afck/followers","following_url":"https://api.github.com/users/afck/following{/other_user}","gists_url":"https://api.github.com/users/afck/gists{/gist_id}","starred_url":"https://api.github.com/users/afck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/afck/subscriptions","organizations_url":"https://api.github.com/users/afck/orgs","repos_url":"https://api.github.com/users/afck/repos","events_url":"https://api.github.com/users/afck/events{/privacy}","received_events_url":"https://api.github.com/users/afck/received_events","type":"User","site_admin":false},"body":"Good point… that's a more general issue that I'm still unclear about:\r\nDo we want to have the sender queue automatically manage the set of observer nodes or should the user also have some control over that (to e.g. add an observer that isn't about to join as a validator)?\r\n* In the first case, we'd probably also want to _remove_ peers on `ChangeState::Complete`, in addition to adding them on `ChangeState::InProgress`, so that the set of peers is always exactly the union of the current and the next set of validators.\r\n* In the second case, I'm not sure: Either we'd remove this feature completely and _require_ the user to add and remove observers, or we'd maintain an additional list of observers in `SenderQueue` (those would be the ones that DHB will never know about; they only observe, without ever becoming a validator).\r\n\r\nFor now, maybe I should actually implement the first point right away? It probably wouldn't be much work and I think it's mainly the intended behavior of the current code?","created_at":"2018-11-14T15:03:09Z","updated_at":"2018-11-14T15:03:09Z","html_url":"https://github.com/poanetwork/hbbft/pull/339#discussion_r233482738","pull_request_url":"https://api.github.com/repos/poanetwork/hbbft/pulls/339","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/poanetwork/hbbft/pulls/comments/233482738"},"html":{"href":"https://github.com/poanetwork/hbbft/pull/339#discussion_r233482738"},"pull_request":{"href":"https://api.github.com/repos/poanetwork/hbbft/pulls/339"}},"in_reply_to_id":233460701},"pull_request":{"url":"https://api.github.com/repos/poanetwork/hbbft/pulls/339","id":230804338,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMwODA0MzM4","html_url":"https://github.com/poanetwork/hbbft/pull/339","diff_url":"https://github.com/poanetwork/hbbft/pull/339.diff","patch_url":"https://github.com/poanetwork/hbbft/pull/339.patch","issue_url":"https://api.github.com/repos/poanetwork/hbbft/issues/339","number":339,"state":"open","locked":false,"title":"Allow arbitrary validator set changes in DHB.","user":{"login":"afck","id":7894725,"node_id":"MDQ6VXNlcjc4OTQ3MjU=","avatar_url":"https://avatars0.githubusercontent.com/u/7894725?v=4","gravatar_id":"","url":"https://api.github.com/users/afck","html_url":"https://github.com/afck","followers_url":"https://api.github.com/users/afck/followers","following_url":"https://api.github.com/users/afck/following{/other_user}","gists_url":"https://api.github.com/users/afck/gists{/gist_id}","starred_url":"https://api.github.com/users/afck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/afck/subscriptions","organizations_url":"https://api.github.com/users/afck/orgs","repos_url":"https://api.github.com/users/afck/repos","events_url":"https://api.github.com/users/afck/events{/privacy}","received_events_url":"https://api.github.com/users/afck/received_events","type":"User","site_admin":false},"body":"This replaces `NodeChange` with a full list of IDs and public keys, instead of just a single to-be-added or to-be-removed node, to allow completely replacing the set of validators by any arbitrary new set in a single key generation step.\r\n\r\nCloses #330.","created_at":"2018-11-14T11:39:30Z","updated_at":"2018-11-14T15:03:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1a3495eb637a7649339a428fd4f24112d4a384bb","assignee":null,"assignees":[],"requested_reviewers":[{"login":"mbr","id":110577,"node_id":"MDQ6VXNlcjExMDU3Nw==","avatar_url":"https://avatars1.githubusercontent.com/u/110577?v=4","gravatar_id":"","url":"https://api.github.com/users/mbr","html_url":"https://github.com/mbr","followers_url":"https://api.github.com/users/mbr/followers","following_url":"https://api.github.com/users/mbr/following{/other_user}","gists_url":"https://api.github.com/users/mbr/gists{/gist_id}","starred_url":"https://api.github.com/users/mbr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbr/subscriptions","organizations_url":"https://api.github.com/users/mbr/orgs","repos_url":"https://api.github.com/users/mbr/repos","events_url":"https://api.github.com/users/mbr/events{/privacy}","received_events_url":"https://api.github.com/users/mbr/received_events","type":"User","site_admin":false},{"login":"c0gent","id":2916797,"node_id":"MDQ6VXNlcjI5MTY3OTc=","avatar_url":"https://avatars2.githubusercontent.com/u/2916797?v=4","gravatar_id":"","url":"https://api.github.com/users/c0gent","html_url":"https://github.com/c0gent","followers_url":"https://api.github.com/users/c0gent/followers","following_url":"https://api.github.com/users/c0gent/following{/other_user}","gists_url":"https://api.github.com/users/c0gent/gists{/gist_id}","starred_url":"https://api.github.com/users/c0gent/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/c0gent/subscriptions","organizations_url":"https://api.github.com/users/c0gent/orgs","repos_url":"https://api.github.com/users/c0gent/repos","events_url":"https://api.github.com/users/c0gent/events{/privacy}","received_events_url":"https://api.github.com/users/c0gent/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/poanetwork/hbbft/pulls/339/commits","review_comments_url":"https://api.github.com/repos/poanetwork/hbbft/pulls/339/comments","review_comment_url":"https://api.github.com/repos/poanetwork/hbbft/pulls/comments{/number}","comments_url":"https://api.github.com/repos/poanetwork/hbbft/issues/339/comments","statuses_url":"https://api.github.com/repos/poanetwork/hbbft/statuses/cc877cb9c3bb7b5df60780736f331c973ae03b49","head":{"label":"poanetwork:afck-change","ref":"afck-change","sha":"cc877cb9c3bb7b5df60780736f331c973ae03b49","user":{"login":"poanetwork","id":28943015,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4OTQzMDE1","avatar_url":"https://avatars2.githubusercontent.com/u/28943015?v=4","gravatar_id":"","url":"https://api.github.com/users/poanetwork","html_url":"https://github.com/poanetwork","followers_url":"https://api.github.com/users/poanetwork/followers","following_url":"https://api.github.com/users/poanetwork/following{/other_user}","gists_url":"https://api.github.com/users/poanetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/poanetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/poanetwork/subscriptions","organizations_url":"https://api.github.com/users/poanetwork/orgs","repos_url":"https://api.github.com/users/poanetwork/repos","events_url":"https://api.github.com/users/poanetwork/events{/privacy}","received_events_url":"https://api.github.com/users/poanetwork/received_events","type":"Organization","site_admin":false},"repo":{"id":125307734,"node_id":"MDEwOlJlcG9zaXRvcnkxMjUzMDc3MzQ=","name":"hbbft","full_name":"poanetwork/hbbft","private":false,"owner":{"login":"poanetwork","id":28943015,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4OTQzMDE1","avatar_url":"https://avatars2.githubusercontent.com/u/28943015?v=4","gravatar_id":"","url":"https://api.github.com/users/poanetwork","html_url":"https://github.com/poanetwork","followers_url":"https://api.github.com/users/poanetwork/followers","following_url":"https://api.github.com/users/poanetwork/following{/other_user}","gists_url":"https://api.github.com/users/poanetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/poanetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/poanetwork/subscriptions","organizations_url":"https://api.github.com/users/poanetwork/orgs","repos_url":"https://api.github.com/users/poanetwork/repos","events_url":"https://api.github.com/users/poanetwork/events{/privacy}","received_events_url":"https://api.github.com/users/poanetwork/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/poanetwork/hbbft","description":" An implementation of the paper \"Honey Badger of BFT Protocols\" in Rust. This is a modular library of consensus.","fork":false,"url":"https://api.github.com/repos/poanetwork/hbbft","forks_url":"https://api.github.com/repos/poanetwork/hbbft/forks","keys_url":"https://api.github.com/repos/poanetwork/hbbft/keys{/key_id}","collaborators_url":"https://api.github.com/repos/poanetwork/hbbft/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/poanetwork/hbbft/teams","hooks_url":"https://api.github.com/repos/poanetwork/hbbft/hooks","issue_events_url":"https://api.github.com/repos/poanetwork/hbbft/issues/events{/number}","events_url":"https://api.github.com/repos/poanetwork/hbbft/events","assignees_url":"https://api.github.com/repos/poanetwork/hbbft/assignees{/user}","branches_url":"https://api.github.com/repos/poanetwork/hbbft/branches{/branch}","tags_url":"https://api.github.com/repos/poanetwork/hbbft/tags","blobs_url":"https://api.github.com/repos/poanetwork/hbbft/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/poanetwork/hbbft/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/poanetwork/hbbft/git/refs{/sha}","trees_url":"https://api.github.com/repos/poanetwork/hbbft/git/trees{/sha}","statuses_url":"https://api.github.com/repos/poanetwork/hbbft/statuses/{sha}","languages_url":"https://api.github.com/repos/poanetwork/hbbft/languages","stargazers_url":"https://api.github.com/repos/poanetwork/hbbft/stargazers","contributors_url":"https://api.github.com/repos/poanetwork/hbbft/contributors","subscribers_url":"https://api.github.com/repos/poanetwork/hbbft/subscribers","subscription_url":"https://api.github.com/repos/poanetwork/hbbft/subscription","commits_url":"https://api.github.com/repos/poanetwork/hbbft/commits{/sha}","git_commits_url":"https://api.github.com/repos/poanetwork/hbbft/git/commits{/sha}","comments_url":"https://api.github.com/repos/poanetwork/hbbft/comments{/number}","issue_comment_url":"https://api.github.com/repos/poanetwork/hbbft/issues/comments{/number}","contents_url":"https://api.github.com/repos/poanetwork/hbbft/contents/{+path}","compare_url":"https://api.github.com/repos/poanetwork/hbbft/compare/{base}...{head}","merges_url":"https://api.github.com/repos/poanetwork/hbbft/merges","archive_url":"https://api.github.com/repos/poanetwork/hbbft/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/poanetwork/hbbft/downloads","issues_url":"https://api.github.com/repos/poanetwork/hbbft/issues{/number}","pulls_url":"https://api.github.com/repos/poanetwork/hbbft/pulls{/number}","milestones_url":"https://api.github.com/repos/poanetwork/hbbft/milestones{/number}","notifications_url":"https://api.github.com/repos/poanetwork/hbbft/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/poanetwork/hbbft/labels{/name}","releases_url":"https://api.github.com/repos/poanetwork/hbbft/releases{/id}","deployments_url":"https://api.github.com/repos/poanetwork/hbbft/deployments","created_at":"2018-03-15T03:32:34Z","updated_at":"2018-11-14T11:47:52Z","pushed_at":"2018-11-14T13:15:16Z","git_url":"git://github.com/poanetwork/hbbft.git","ssh_url":"git@github.com:poanetwork/hbbft.git","clone_url":"https://github.com/poanetwork/hbbft.git","svn_url":"https://github.com/poanetwork/hbbft","homepage":"","size":1880,"stargazers_count":115,"watchers_count":115,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":28,"mirror_url":null,"archived":false,"open_issues_count":30,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":28,"open_issues":30,"watchers":115,"default_branch":"master"}},"base":{"label":"poanetwork:master","ref":"master","sha":"767944c0f6a69ef362d96a812a5282e2dbf3ac80","user":{"login":"poanetwork","id":28943015,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4OTQzMDE1","avatar_url":"https://avatars2.githubusercontent.com/u/28943015?v=4","gravatar_id":"","url":"https://api.github.com/users/poanetwork","html_url":"https://github.com/poanetwork","followers_url":"https://api.github.com/users/poanetwork/followers","following_url":"https://api.github.com/users/poanetwork/following{/other_user}","gists_url":"https://api.github.com/users/poanetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/poanetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/poanetwork/subscriptions","organizations_url":"https://api.github.com/users/poanetwork/orgs","repos_url":"https://api.github.com/users/poanetwork/repos","events_url":"https://api.github.com/users/poanetwork/events{/privacy}","received_events_url":"https://api.github.com/users/poanetwork/received_events","type":"Organization","site_admin":false},"repo":{"id":125307734,"node_id":"MDEwOlJlcG9zaXRvcnkxMjUzMDc3MzQ=","name":"hbbft","full_name":"poanetwork/hbbft","private":false,"owner":{"login":"poanetwork","id":28943015,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4OTQzMDE1","avatar_url":"https://avatars2.githubusercontent.com/u/28943015?v=4","gravatar_id":"","url":"https://api.github.com/users/poanetwork","html_url":"https://github.com/poanetwork","followers_url":"https://api.github.com/users/poanetwork/followers","following_url":"https://api.github.com/users/poanetwork/following{/other_user}","gists_url":"https://api.github.com/users/poanetwork/gists{/gist_id}","starred_url":"https://api.github.com/users/poanetwork/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/poanetwork/subscriptions","organizations_url":"https://api.github.com/users/poanetwork/orgs","repos_url":"https://api.github.com/users/poanetwork/repos","events_url":"https://api.github.com/users/poanetwork/events{/privacy}","received_events_url":"https://api.github.com/users/poanetwork/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/poanetwork/hbbft","description":" An implementation of the paper \"Honey Badger of BFT Protocols\" in Rust. This is a modular library of consensus.","fork":false,"url":"https://api.github.com/repos/poanetwork/hbbft","forks_url":"https://api.github.com/repos/poanetwork/hbbft/forks","keys_url":"https://api.github.com/repos/poanetwork/hbbft/keys{/key_id}","collaborators_url":"https://api.github.com/repos/poanetwork/hbbft/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/poanetwork/hbbft/teams","hooks_url":"https://api.github.com/repos/poanetwork/hbbft/hooks","issue_events_url":"https://api.github.com/repos/poanetwork/hbbft/issues/events{/number}","events_url":"https://api.github.com/repos/poanetwork/hbbft/events","assignees_url":"https://api.github.com/repos/poanetwork/hbbft/assignees{/user}","branches_url":"https://api.github.com/repos/poanetwork/hbbft/branches{/branch}","tags_url":"https://api.github.com/repos/poanetwork/hbbft/tags","blobs_url":"https://api.github.com/repos/poanetwork/hbbft/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/poanetwork/hbbft/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/poanetwork/hbbft/git/refs{/sha}","trees_url":"https://api.github.com/repos/poanetwork/hbbft/git/trees{/sha}","statuses_url":"https://api.github.com/repos/poanetwork/hbbft/statuses/{sha}","languages_url":"https://api.github.com/repos/poanetwork/hbbft/languages","stargazers_url":"https://api.github.com/repos/poanetwork/hbbft/stargazers","contributors_url":"https://api.github.com/repos/poanetwork/hbbft/contributors","subscribers_url":"https://api.github.com/repos/poanetwork/hbbft/subscribers","subscription_url":"https://api.github.com/repos/poanetwork/hbbft/subscription","commits_url":"https://api.github.com/repos/poanetwork/hbbft/commits{/sha}","git_commits_url":"https://api.github.com/repos/poanetwork/hbbft/git/commits{/sha}","comments_url":"https://api.github.com/repos/poanetwork/hbbft/comments{/number}","issue_comment_url":"https://api.github.com/repos/poanetwork/hbbft/issues/comments{/number}","contents_url":"https://api.github.com/repos/poanetwork/hbbft/contents/{+path}","compare_url":"https://api.github.com/repos/poanetwork/hbbft/compare/{base}...{head}","merges_url":"https://api.github.com/repos/poanetwork/hbbft/merges","archive_url":"https://api.github.com/repos/poanetwork/hbbft/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/poanetwork/hbbft/downloads","issues_url":"https://api.github.com/repos/poanetwork/hbbft/issues{/number}","pulls_url":"https://api.github.com/repos/poanetwork/hbbft/pulls{/number}","milestones_url":"https://api.github.com/repos/poanetwork/hbbft/milestones{/number}","notifications_url":"https://api.github.com/repos/poanetwork/hbbft/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/poanetwork/hbbft/labels{/name}","releases_url":"https://api.github.com/repos/poanetwork/hbbft/releases{/id}","deployments_url":"https://api.github.com/repos/poanetwork/hbbft/deployments","created_at":"2018-03-15T03:32:34Z","updated_at":"2018-11-14T11:47:52Z","pushed_at":"2018-11-14T13:15:16Z","git_url":"git://github.com/poanetwork/hbbft.git","ssh_url":"git@github.com:poanetwork/hbbft.git","clone_url":"https://github.com/poanetwork/hbbft.git","svn_url":"https://github.com/poanetwork/hbbft","homepage":"","size":1880,"stargazers_count":115,"watchers_count":115,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":28,"mirror_url":null,"archived":false,"open_issues_count":30,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":28,"open_issues":30,"watchers":115,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/poanetwork/hbbft/pulls/339"},"html":{"href":"https://github.com/poanetwork/hbbft/pull/339"},"issue":{"href":"https://api.github.com/repos/poanetwork/hbbft/issues/339"},"comments":{"href":"https://api.github.com/repos/poanetwork/hbbft/issues/339/comments"},"review_comments":{"href":"https://api.github.com/repos/poanetwork/hbbft/pulls/339/comments"},"review_comment":{"href":"https://api.github.com/repos/poanetwork/hbbft/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/poanetwork/hbbft/pulls/339/commits"},"statuses":{"href":"https://api.github.com/repos/poanetwork/hbbft/statuses/cc877cb9c3bb7b5df60780736f331c973ae03b49"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"afck"}}