{"action":"created","issue":{"url":"https://api.github.com/repos/ipfs-shipyard/peer-star-app/issues/57","repository_url":"https://api.github.com/repos/ipfs-shipyard/peer-star-app","labels_url":"https://api.github.com/repos/ipfs-shipyard/peer-star-app/issues/57/labels{/name}","comments_url":"https://api.github.com/repos/ipfs-shipyard/peer-star-app/issues/57/comments","events_url":"https://api.github.com/repos/ipfs-shipyard/peer-star-app/issues/57/events","html_url":"https://github.com/ipfs-shipyard/peer-star-app/issues/57","id":367004551,"node_id":"MDU6SXNzdWUzNjcwMDQ1NTE=","number":57,"title":"Draft: Persistence in IPLD","user":{"login":"dirkmc","id":169124,"node_id":"MDQ6VXNlcjE2OTEyNA==","avatar_url":"https://avatars3.githubusercontent.com/u/169124?v=4","gravatar_id":"","url":"https://api.github.com/users/dirkmc","html_url":"https://github.com/dirkmc","followers_url":"https://api.github.com/users/dirkmc/followers","following_url":"https://api.github.com/users/dirkmc/following{/other_user}","gists_url":"https://api.github.com/users/dirkmc/gists{/gist_id}","starred_url":"https://api.github.com/users/dirkmc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dirkmc/subscriptions","organizations_url":"https://api.github.com/users/dirkmc/orgs","repos_url":"https://api.github.com/users/dirkmc/repos","events_url":"https://api.github.com/users/dirkmc/events{/privacy}","received_events_url":"https://api.github.com/users/dirkmc/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-10-04T23:15:44Z","updated_at":"2018-10-05T17:09:43Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"As mentioned in [An Architecture towards peer-pad 1.0](https://github.com/ipfs-shipyard/peer-pad/issues/217), we need mechanisms to:\r\n- Represent and store snapshot and deltas in IPLD.\r\n- Internally, index these by vector clock (to enable fast diff and sync).\r\n- Create a tracking service that, for an app, finds and participates (as a listener) on all collaborations, pinning snapshots to an IPFS cluster.\r\n\r\n#### Structure\r\n\r\nEach delta in the IPLD data structure must contain:\r\n- author\r\n- signature\r\n- CRDT-delta itself (arbitrary data)\r\n- vector clock (obfuscated peer ids)\r\n\r\nThe first three must be opaque to the tracking service. The vector clock should be visible to the tracking service but peer ids must be opaque (but distinguishable).\r\n\r\nSnapshots consist of deltas that have been joined. The vector clock peer ids must be opaque to the tracking service (but distinguishable).\r\n\r\n_Questions_:\r\n- How should the deltas / snapshots / peer ids be made opaque? Just hash them with salt?\r\n\r\n#### Tracking service\r\n\r\nThe tracking service\r\n- saves deltas / snapshots\r\n- can be queried by vector clock like any other replica\r\n\r\n_Questions_:\r\n- The tracking service cannot create snapshots from deltas because the deltas are opaque to the tracking service. Who creates snapshots?\r\n- How does the tracking service receive snapshots?\r\n"},"comment":{"url":"https://api.github.com/repos/ipfs-shipyard/peer-star-app/issues/comments/427435292","html_url":"https://github.com/ipfs-shipyard/peer-star-app/issues/57#issuecomment-427435292","issue_url":"https://api.github.com/repos/ipfs-shipyard/peer-star-app/issues/57","id":427435292,"node_id":"MDEyOklzc3VlQ29tbWVudDQyNzQzNTI5Mg==","user":{"login":"mikeal","id":579,"node_id":"MDQ6VXNlcjU3OQ==","avatar_url":"https://avatars2.githubusercontent.com/u/579?v=4","gravatar_id":"","url":"https://api.github.com/users/mikeal","html_url":"https://github.com/mikeal","followers_url":"https://api.github.com/users/mikeal/followers","following_url":"https://api.github.com/users/mikeal/following{/other_user}","gists_url":"https://api.github.com/users/mikeal/gists{/gist_id}","starred_url":"https://api.github.com/users/mikeal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikeal/subscriptions","organizations_url":"https://api.github.com/users/mikeal/orgs","repos_url":"https://api.github.com/users/mikeal/repos","events_url":"https://api.github.com/users/mikeal/events{/privacy}","received_events_url":"https://api.github.com/users/mikeal/received_events","type":"User","site_admin":false},"created_at":"2018-10-05T17:09:43Z","updated_at":"2018-10-05T17:09:43Z","author_association":"NONE","body":"How much of this data is being signed? I assume the CRDT data but is the vector clock signed? Is the author part of the data being signed as part of the same signature the data is in or is it being signed separately and associated with the public key that is being used to sign?\r\n\r\nThis brings up another thing I've wanted for a little while now, self-describing signatures, similar to multihashes."}}
{"actor":{"display_login":"mikeal"}}