{"action":"opened","issue":{"url":"https://api.github.com/repos/elsehow/hyperchat2/issues/10","repository_url":"https://api.github.com/repos/elsehow/hyperchat2","labels_url":"https://api.github.com/repos/elsehow/hyperchat2/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/elsehow/hyperchat2/issues/10/comments","events_url":"https://api.github.com/repos/elsehow/hyperchat2/issues/10/events","html_url":"https://github.com/elsehow/hyperchat2/issues/10","id":140805915,"number":10,"title":"Allow users to generate persistent identities","user":{"login":"harperj","id":838406,"avatar_url":"https://avatars.githubusercontent.com/u/838406?v=3","gravatar_id":"","url":"https://api.github.com/users/harperj","html_url":"https://github.com/harperj","followers_url":"https://api.github.com/users/harperj/followers","following_url":"https://api.github.com/users/harperj/following{/other_user}","gists_url":"https://api.github.com/users/harperj/gists{/gist_id}","starred_url":"https://api.github.com/users/harperj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/harperj/subscriptions","organizations_url":"https://api.github.com/users/harperj/orgs","repos_url":"https://api.github.com/users/harperj/repos","events_url":"https://api.github.com/users/harperj/events{/privacy}","received_events_url":"https://api.github.com/users/harperj/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-03-14T21:43:39Z","updated_at":"2016-03-14T21:43:39Z","closed_at":null,"body":"The method I would propose for this:\r\n\r\nKeep a separate swarmlog which simply tracks pairs of identities and public keys:\r\n\r\n```json\r\n{\r\n  \"identity\": \"harpsichord\",\r\n  \"key-type\": \"[...]\",\r\n  \"pubkey\": \"[...]\"\r\n}\r\n```\r\n\r\nWhen peers receive such messages, they add them to a keychain that is checked every time a new message is received on the main forum swarmlog.  If a message is received with a reserved identity and without a signature included or with an invalid signature, peers will reject the message and fail to update.  As I understand it (TODO: verify), this will cause consensus to fail and thus the message will be rejected.\r\n\r\nWe can have UI features that prevent accidental identity overlap which could cause confusion (\"why didn't my messages show up!?\").  But, if those are ignored messages should simply drop from the system."}}