{"action":"created","comment":{"url":"https://api.github.com/repos/datprotocol/DEPs/pulls/comments/199624667","pull_request_review_id":133781215,"id":199624667,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5OTYyNDY2Nw==","diff_hunk":"@@ -0,0 +1,108 @@\n+\n+Title: **DEP-0000: Hypercore Header**\n+\n+Short Name: `0000-hypercore-header`\n+\n+Type: Standard\n+\n+Status: Undefined (as of 2018-06-26)\n+\n+Github PR: (add HTTPS link here after PR is opened)\n+\n+Authors: [Paul Frazee](https://github.com/pfrazee), [Mathias Buus](https://github.com/mafintosh)\n+\n+\n+# Summary\n+[summary]: #summary\n+\n+The Dat protocol supports a variety of data structures on top of the hypercore append-only logs, including key-value stores (hyperdb) and file archives (hyperdrive). In order for a program to read the data structure within a hypercore, it must know which structure it is reading. This DEP specifies a \"header\" entry which can be placed at the first entry of a hypercore in order to provide identifying information. This header also supports custom data for the data-structure, and may be expanded in future DEPs to provide additional standard data.\n+\n+\n+# Motivation\n+[motivation]: #motivation\n+\n+At time of writing, Dat's standard data structures are being expanded upon (hyperdb) while existing data structures are being updated with breaking changes (hyperdrive). In order for these changes to be deployed smoothly to the network, it's important that the following needs be met:\n+\n+ 1. Programs should correctly identify the data structure type and version within a hypercore. This will enable the program to use the correct handling code (eg hyperdb, hyperdrive-v1, hyperdrive-v2).\n+ 2. Programs should abort processing a hypercore if they lack support for the type or version of the data structure.\n+\n+\n+# Usage Documentation\n+[usage-documentation]: #usage-documentation\n+\n+The \"header\" is the first entry in a hypercore. It includes a `type` and an optional `extension` which can contain data-structure-specific data.\n+\n+A program that is reading a hypercore will examine the `type` to determine how to process the hypercore.\n+\n+```","path":"proposals/0000-hypercore-header.md","position":37,"original_position":37,"commit_id":"1a22f614a22c1aaf04f1601390f54b8d1e214456","original_commit_id":"1a22f614a22c1aaf04f1601390f54b8d1e214456","user":{"login":"pfrazee","id":1270099,"node_id":"MDQ6VXNlcjEyNzAwOTk=","avatar_url":"https://avatars2.githubusercontent.com/u/1270099?v=4","gravatar_id":"","url":"https://api.github.com/users/pfrazee","html_url":"https://github.com/pfrazee","followers_url":"https://api.github.com/users/pfrazee/followers","following_url":"https://api.github.com/users/pfrazee/following{/other_user}","gists_url":"https://api.github.com/users/pfrazee/gists{/gist_id}","starred_url":"https://api.github.com/users/pfrazee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfrazee/subscriptions","organizations_url":"https://api.github.com/users/pfrazee/orgs","repos_url":"https://api.github.com/users/pfrazee/repos","events_url":"https://api.github.com/users/pfrazee/events{/privacy}","received_events_url":"https://api.github.com/users/pfrazee/received_events","type":"User","site_admin":false},"body":"We intentionally are trying to write pseudo code","created_at":"2018-07-02T21:21:04Z","updated_at":"2018-07-02T21:21:10Z","html_url":"https://github.com/datprotocol/DEPs/pull/34#discussion_r199624667","pull_request_url":"https://api.github.com/repos/datprotocol/DEPs/pulls/34","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/datprotocol/DEPs/pulls/comments/199624667"},"html":{"href":"https://github.com/datprotocol/DEPs/pull/34#discussion_r199624667"},"pull_request":{"href":"https://api.github.com/repos/datprotocol/DEPs/pulls/34"}},"in_reply_to_id":199623130},"pull_request":{"url":"https://api.github.com/repos/datprotocol/DEPs/pulls/34","id":197506045,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk3NTA2MDQ1","html_url":"https://github.com/datprotocol/DEPs/pull/34","diff_url":"https://github.com/datprotocol/DEPs/pull/34.diff","patch_url":"https://github.com/datprotocol/DEPs/pull/34.patch","issue_url":"https://api.github.com/repos/datprotocol/DEPs/issues/34","number":34,"state":"open","locked":false,"title":"Hypercore Header DEP","user":{"login":"pfrazee","id":1270099,"node_id":"MDQ6VXNlcjEyNzAwOTk=","avatar_url":"https://avatars2.githubusercontent.com/u/1270099?v=4","gravatar_id":"","url":"https://api.github.com/users/pfrazee","html_url":"https://github.com/pfrazee","followers_url":"https://api.github.com/users/pfrazee/followers","following_url":"https://api.github.com/users/pfrazee/following{/other_user}","gists_url":"https://api.github.com/users/pfrazee/gists{/gist_id}","starred_url":"https://api.github.com/users/pfrazee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfrazee/subscriptions","organizations_url":"https://api.github.com/users/pfrazee/orgs","repos_url":"https://api.github.com/users/pfrazee/repos","events_url":"https://api.github.com/users/pfrazee/events{/privacy}","received_events_url":"https://api.github.com/users/pfrazee/received_events","type":"User","site_admin":false},"body":"Standardizes a `HypercoreHeader` message which can be used as the first entry in hypercores to declare the datastructure along with custom fields.","created_at":"2018-06-26T18:02:05Z","updated_at":"2018-07-02T21:21:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3a5221c2a8921942923ad12fba09767e6ee6bf21","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/datprotocol/DEPs/pulls/34/commits","review_comments_url":"https://api.github.com/repos/datprotocol/DEPs/pulls/34/comments","review_comment_url":"https://api.github.com/repos/datprotocol/DEPs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/datprotocol/DEPs/issues/34/comments","statuses_url":"https://api.github.com/repos/datprotocol/DEPs/statuses/1a22f614a22c1aaf04f1601390f54b8d1e214456","head":{"label":"pfrazee:hypercore-header","ref":"hypercore-header","sha":"1a22f614a22c1aaf04f1601390f54b8d1e214456","user":{"login":"pfrazee","id":1270099,"node_id":"MDQ6VXNlcjEyNzAwOTk=","avatar_url":"https://avatars2.githubusercontent.com/u/1270099?v=4","gravatar_id":"","url":"https://api.github.com/users/pfrazee","html_url":"https://github.com/pfrazee","followers_url":"https://api.github.com/users/pfrazee/followers","following_url":"https://api.github.com/users/pfrazee/following{/other_user}","gists_url":"https://api.github.com/users/pfrazee/gists{/gist_id}","starred_url":"https://api.github.com/users/pfrazee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfrazee/subscriptions","organizations_url":"https://api.github.com/users/pfrazee/orgs","repos_url":"https://api.github.com/users/pfrazee/repos","events_url":"https://api.github.com/users/pfrazee/events{/privacy}","received_events_url":"https://api.github.com/users/pfrazee/received_events","type":"User","site_admin":false},"repo":{"id":120363291,"node_id":"MDEwOlJlcG9zaXRvcnkxMjAzNjMyOTE=","name":"DEPs","full_name":"pfrazee/DEPs","owner":{"login":"pfrazee","id":1270099,"node_id":"MDQ6VXNlcjEyNzAwOTk=","avatar_url":"https://avatars2.githubusercontent.com/u/1270099?v=4","gravatar_id":"","url":"https://api.github.com/users/pfrazee","html_url":"https://github.com/pfrazee","followers_url":"https://api.github.com/users/pfrazee/followers","following_url":"https://api.github.com/users/pfrazee/following{/other_user}","gists_url":"https://api.github.com/users/pfrazee/gists{/gist_id}","starred_url":"https://api.github.com/users/pfrazee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfrazee/subscriptions","organizations_url":"https://api.github.com/users/pfrazee/orgs","repos_url":"https://api.github.com/users/pfrazee/repos","events_url":"https://api.github.com/users/pfrazee/events{/privacy}","received_events_url":"https://api.github.com/users/pfrazee/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pfrazee/DEPs","description":"Dat Enhancement Proposals. Contains all specs for the Dat protocol, including drafts.","fork":true,"url":"https://api.github.com/repos/pfrazee/DEPs","forks_url":"https://api.github.com/repos/pfrazee/DEPs/forks","keys_url":"https://api.github.com/repos/pfrazee/DEPs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pfrazee/DEPs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pfrazee/DEPs/teams","hooks_url":"https://api.github.com/repos/pfrazee/DEPs/hooks","issue_events_url":"https://api.github.com/repos/pfrazee/DEPs/issues/events{/number}","events_url":"https://api.github.com/repos/pfrazee/DEPs/events","assignees_url":"https://api.github.com/repos/pfrazee/DEPs/assignees{/user}","branches_url":"https://api.github.com/repos/pfrazee/DEPs/branches{/branch}","tags_url":"https://api.github.com/repos/pfrazee/DEPs/tags","blobs_url":"https://api.github.com/repos/pfrazee/DEPs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pfrazee/DEPs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pfrazee/DEPs/git/refs{/sha}","trees_url":"https://api.github.com/repos/pfrazee/DEPs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pfrazee/DEPs/statuses/{sha}","languages_url":"https://api.github.com/repos/pfrazee/DEPs/languages","stargazers_url":"https://api.github.com/repos/pfrazee/DEPs/stargazers","contributors_url":"https://api.github.com/repos/pfrazee/DEPs/contributors","subscribers_url":"https://api.github.com/repos/pfrazee/DEPs/subscribers","subscription_url":"https://api.github.com/repos/pfrazee/DEPs/subscription","commits_url":"https://api.github.com/repos/pfrazee/DEPs/commits{/sha}","git_commits_url":"https://api.github.com/repos/pfrazee/DEPs/git/commits{/sha}","comments_url":"https://api.github.com/repos/pfrazee/DEPs/comments{/number}","issue_comment_url":"https://api.github.com/repos/pfrazee/DEPs/issues/comments{/number}","contents_url":"https://api.github.com/repos/pfrazee/DEPs/contents/{+path}","compare_url":"https://api.github.com/repos/pfrazee/DEPs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pfrazee/DEPs/merges","archive_url":"https://api.github.com/repos/pfrazee/DEPs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pfrazee/DEPs/downloads","issues_url":"https://api.github.com/repos/pfrazee/DEPs/issues{/number}","pulls_url":"https://api.github.com/repos/pfrazee/DEPs/pulls{/number}","milestones_url":"https://api.github.com/repos/pfrazee/DEPs/milestones{/number}","notifications_url":"https://api.github.com/repos/pfrazee/DEPs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pfrazee/DEPs/labels{/name}","releases_url":"https://api.github.com/repos/pfrazee/DEPs/releases{/id}","deployments_url":"https://api.github.com/repos/pfrazee/DEPs/deployments","created_at":"2018-02-05T21:19:37Z","updated_at":"2018-06-26T16:30:24Z","pushed_at":"2018-07-02T17:20:20Z","git_url":"git://github.com/pfrazee/DEPs.git","ssh_url":"git@github.com:pfrazee/DEPs.git","clone_url":"https://github.com/pfrazee/DEPs.git","svn_url":"https://github.com/pfrazee/DEPs","homepage":"","size":148,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"datprotocol:master","ref":"master","sha":"030cec7c4121b163ac8ec88485e8dac57886d25d","user":{"login":"datprotocol","id":25209479,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1MjA5NDc5","avatar_url":"https://avatars1.githubusercontent.com/u/25209479?v=4","gravatar_id":"","url":"https://api.github.com/users/datprotocol","html_url":"https://github.com/datprotocol","followers_url":"https://api.github.com/users/datprotocol/followers","following_url":"https://api.github.com/users/datprotocol/following{/other_user}","gists_url":"https://api.github.com/users/datprotocol/gists{/gist_id}","starred_url":"https://api.github.com/users/datprotocol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/datprotocol/subscriptions","organizations_url":"https://api.github.com/users/datprotocol/orgs","repos_url":"https://api.github.com/users/datprotocol/repos","events_url":"https://api.github.com/users/datprotocol/events{/privacy}","received_events_url":"https://api.github.com/users/datprotocol/received_events","type":"Organization","site_admin":false},"repo":{"id":116980077,"node_id":"MDEwOlJlcG9zaXRvcnkxMTY5ODAwNzc=","name":"DEPs","full_name":"datprotocol/DEPs","owner":{"login":"datprotocol","id":25209479,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI1MjA5NDc5","avatar_url":"https://avatars1.githubusercontent.com/u/25209479?v=4","gravatar_id":"","url":"https://api.github.com/users/datprotocol","html_url":"https://github.com/datprotocol","followers_url":"https://api.github.com/users/datprotocol/followers","following_url":"https://api.github.com/users/datprotocol/following{/other_user}","gists_url":"https://api.github.com/users/datprotocol/gists{/gist_id}","starred_url":"https://api.github.com/users/datprotocol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/datprotocol/subscriptions","organizations_url":"https://api.github.com/users/datprotocol/orgs","repos_url":"https://api.github.com/users/datprotocol/repos","events_url":"https://api.github.com/users/datprotocol/events{/privacy}","received_events_url":"https://api.github.com/users/datprotocol/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/datprotocol/DEPs","description":"Dat Enhancement Proposals. Contains all specs for the Dat protocol, including drafts.","fork":false,"url":"https://api.github.com/repos/datprotocol/DEPs","forks_url":"https://api.github.com/repos/datprotocol/DEPs/forks","keys_url":"https://api.github.com/repos/datprotocol/DEPs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/datprotocol/DEPs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/datprotocol/DEPs/teams","hooks_url":"https://api.github.com/repos/datprotocol/DEPs/hooks","issue_events_url":"https://api.github.com/repos/datprotocol/DEPs/issues/events{/number}","events_url":"https://api.github.com/repos/datprotocol/DEPs/events","assignees_url":"https://api.github.com/repos/datprotocol/DEPs/assignees{/user}","branches_url":"https://api.github.com/repos/datprotocol/DEPs/branches{/branch}","tags_url":"https://api.github.com/repos/datprotocol/DEPs/tags","blobs_url":"https://api.github.com/repos/datprotocol/DEPs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/datprotocol/DEPs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/datprotocol/DEPs/git/refs{/sha}","trees_url":"https://api.github.com/repos/datprotocol/DEPs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/datprotocol/DEPs/statuses/{sha}","languages_url":"https://api.github.com/repos/datprotocol/DEPs/languages","stargazers_url":"https://api.github.com/repos/datprotocol/DEPs/stargazers","contributors_url":"https://api.github.com/repos/datprotocol/DEPs/contributors","subscribers_url":"https://api.github.com/repos/datprotocol/DEPs/subscribers","subscription_url":"https://api.github.com/repos/datprotocol/DEPs/subscription","commits_url":"https://api.github.com/repos/datprotocol/DEPs/commits{/sha}","git_commits_url":"https://api.github.com/repos/datprotocol/DEPs/git/commits{/sha}","comments_url":"https://api.github.com/repos/datprotocol/DEPs/comments{/number}","issue_comment_url":"https://api.github.com/repos/datprotocol/DEPs/issues/comments{/number}","contents_url":"https://api.github.com/repos/datprotocol/DEPs/contents/{+path}","compare_url":"https://api.github.com/repos/datprotocol/DEPs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/datprotocol/DEPs/merges","archive_url":"https://api.github.com/repos/datprotocol/DEPs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/datprotocol/DEPs/downloads","issues_url":"https://api.github.com/repos/datprotocol/DEPs/issues{/number}","pulls_url":"https://api.github.com/repos/datprotocol/DEPs/pulls{/number}","milestones_url":"https://api.github.com/repos/datprotocol/DEPs/milestones{/number}","notifications_url":"https://api.github.com/repos/datprotocol/DEPs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/datprotocol/DEPs/labels{/name}","releases_url":"https://api.github.com/repos/datprotocol/DEPs/releases{/id}","deployments_url":"https://api.github.com/repos/datprotocol/DEPs/deployments","created_at":"2018-01-10T16:09:32Z","updated_at":"2018-07-02T12:04:35Z","pushed_at":"2018-07-02T17:20:21Z","git_url":"git://github.com/datprotocol/DEPs.git","ssh_url":"git@github.com:datprotocol/DEPs.git","clone_url":"https://github.com/datprotocol/DEPs.git","svn_url":"https://github.com/datprotocol/DEPs","homepage":"https://www.datprotocol.com/deps/","size":118,"stargazers_count":58,"watchers_count":58,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"archived":false,"open_issues_count":17,"license":null,"forks":7,"open_issues":17,"watchers":58,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/datprotocol/DEPs/pulls/34"},"html":{"href":"https://github.com/datprotocol/DEPs/pull/34"},"issue":{"href":"https://api.github.com/repos/datprotocol/DEPs/issues/34"},"comments":{"href":"https://api.github.com/repos/datprotocol/DEPs/issues/34/comments"},"review_comments":{"href":"https://api.github.com/repos/datprotocol/DEPs/pulls/34/comments"},"review_comment":{"href":"https://api.github.com/repos/datprotocol/DEPs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/datprotocol/DEPs/pulls/34/commits"},"statuses":{"href":"https://api.github.com/repos/datprotocol/DEPs/statuses/1a22f614a22c1aaf04f1601390f54b8d1e214456"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"pfrazee"}}