{"action":"created","comment":{"url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/comments/67803006","id":67803006,"diff_hunk":"@@ -0,0 +1,274 @@\n+package merkletree\n+\n+import (\n+\t\"errors\"\n+\n+\t\"github.com/coniks-sys/libmerkleprefixtree-go/crypto\"\n+\t\"github.com/coniks-sys/libmerkleprefixtree-go/internal\"\n+)\n+\n+var (\n+\tErrInvalidTree = errors.New(\"[merkletree] invalid tree\")\n+)\n+\n+const (\n+\tEmptyBranchIdentifier = 'E'\n+\tLeafIdentifier        = 'L'\n+)\n+\n+type MerkleTree struct {\n+\ttreeNonce []byte\n+\tsalt      []byte\n+\tprivKey   []byte\n+\tpubKey    []byte\n+\tpolicies  Policies\n+\troot      *interiorNode\n+}\n+\n+func InitMerkleTree(policies Policies, treeNonce, salt, pubKey, privKey []byte) *MerkleTree {\n+\tleftBranch := &emptyNode{\n+\t\tnode: node{\n+\t\t\tlevel: 1,\n+\t\t},\n+\t}\n+\n+\trightBranch := &emptyNode{\n+\t\tnode: node{\n+\t\t\tlevel: 1,\n+\t\t},\n+\t}\n+\troot := &interiorNode{\n+\t\tnode: node{\n+\t\t\tparent: nil,\n+\t\t\tlevel:  0,\n+\t\t},\n+\t\tleftChild:  leftBranch,\n+\t\trightChild: rightBranch,\n+\t\tleftHash:   nil,\n+\t\trightHash:  nil,\n+\t}\n+\tleftBranch.parent = root\n+\trightBranch.parent = root\n+\n+\tm := &MerkleTree{\n+\t\ttreeNonce: treeNonce,\n+\t\tsalt:      salt,\n+\t\tprivKey:   privKey,\n+\t\tpubKey:    pubKey,\n+\t\tpolicies:  policies,\n+\t\troot:      root,\n+\t}\n+\treturn m\n+}\n+\n+func (h *History) LookUp(key string) (MerkleNode, []LookUpProofNode, error) {\n+\tstr := h.currentSTR\n+\treturn lookUp(key, str)\n+}\n+\n+func (h *History) LookUpInEpoch(key string, ep int64) (MerkleNode, []LookUpProofNode, error) {\n+\tstr := h.GetSTR(ep)\n+\treturn lookUp(key, str)\n+}\n+\n+func lookUp(key string, str *SignedTreeRoot) (MerkleNode, []LookUpProofNode, error) {\n+\tlookupIndex := computePrivateIndex(key)\n+\tposition := 0\n+\tvar nodePointer interface{}\n+\tnodePointer = str.treeRoot\n+\tvar proof []LookUpProofNode\n+\n+\tfor {\n+\t\tif _, ok := nodePointer.(*userLeafNode); ok {\n+\t\t\t// reached to a leaf node\n+\t\t\tbreak\n+\t\t}\n+\t\tif _, ok := nodePointer.(*emptyNode); ok {\n+\t\t\t// reached to an empty branch\n+\t\t\tbreak\n+\t\t}\n+\t\tproof = append(proof, nodePointer.(*interiorNode))\n+\t\tdirection := util.GetNthBit(lookupIndex, position)\n+\t\tif direction {\n+\t\t\tnodePointer = nodePointer.(*interiorNode).rightChild\n+\t\t} else {\n+\t\t\tnodePointer = nodePointer.(*interiorNode).leftChild\n+\t\t}\n+\t\tposition++\n+\t}\n+\n+\tif nodePointer == nil {\n+\t\treturn nil, nil, ErrInvalidTree\n+\t}\n+\tswitch nodePointer.(type) {\n+\tcase *userLeafNode:\n+\t\tproof = append(proof, nodePointer.(*userLeafNode))\n+\t\tif nodePointer.(*userLeafNode).key == key {\n+\t\t\treturn nodePointer.(*userLeafNode), proof, nil\n+\t\t}\n+\t\t// reached a different leaf with a matching prefix\n+\t\t// return nil and a auth path including the leaf node\n+\t\treturn nil, proof, nil\n+\tcase *emptyNode:\n+\t\tproof = append(proof, nodePointer.(*emptyNode))\n+\t\treturn nil, proof, nil\n+\t}\n+\treturn nil, nil, ErrInvalidTree\n+}\n+\n+func (m *MerkleTree) Set(key string, value []byte) error {\n+\tindex := computePrivateIndex(key)\n+\ttoAdd := userLeafNode{\n+\t\tkey:        key,\n+\t\tvalue:      value,\n+\t\tindex:      index,\n+\t\tcommitment: crypto.Digest(m.salt, []byte(key), value),\n+\t}\n+\n+\treturn m.insertNode(index, &toAdd)\n+}\n+\n+// Private Index calculation function\n+// would be replaced with Ismail's VRF implementation\n+func computePrivateIndex(key string) []byte {\n+\treturn crypto.Digest([]byte(key))\n+}\n+\n+func (m *MerkleTree) insertNode(key []byte, toAdd *userLeafNode) error {\n+\tposition := 0\n+\tvar nodePointer interface{}\n+\tnodePointer = m.root\n+\n+insertLoop:\n+\tfor {\n+\t\ttoAdd.level++\n+\t\tswitch nodePointer.(type) {\n+\t\tcase *userLeafNode:\n+\t\t\t// reached a \"bottom\" of the tree.\n+\t\t\t// add a new interior node and push the previous leaf down\n+\t\t\t// then continue insertion\n+\t\t\tcurrentNodeUL := nodePointer.(*userLeafNode)\n+\t\t\tif currentNodeUL.parent == nil {\n+\t\t\t\treturn ErrInvalidTree\n+\t\t\t}","path":"merkletree.go","position":153,"original_position":153,"commit_id":"185b4ca42bf982dc850545937cddfe05ea5ea6f8","original_commit_id":"185b4ca42bf982dc850545937cddfe05ea5ea6f8","user":{"login":"arlolra","id":123708,"avatar_url":"https://avatars.githubusercontent.com/u/123708?v=3","gravatar_id":"","url":"https://api.github.com/users/arlolra","html_url":"https://github.com/arlolra","followers_url":"https://api.github.com/users/arlolra/followers","following_url":"https://api.github.com/users/arlolra/following{/other_user}","gists_url":"https://api.github.com/users/arlolra/gists{/gist_id}","starred_url":"https://api.github.com/users/arlolra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arlolra/subscriptions","organizations_url":"https://api.github.com/users/arlolra/orgs","repos_url":"https://api.github.com/users/arlolra/repos","events_url":"https://api.github.com/users/arlolra/events{/privacy}","received_events_url":"https://api.github.com/users/arlolra/received_events","type":"User","site_admin":false},"body":"This assertion is suspect. It seems like this is more than an error if it were true, but a corruption of the tree itself. Do we expect to recover from it? I'd prefer to see stronger guarantees where nodes are created if this is a real concern.","created_at":"2016-06-21T03:26:55Z","updated_at":"2016-06-21T03:26:55Z","html_url":"https://github.com/coniks-sys/libmerkleprefixtree-go/pull/1#discussion_r67803006","pull_request_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/comments/67803006"},"html":{"href":"https://github.com/coniks-sys/libmerkleprefixtree-go/pull/1#discussion_r67803006"},"pull_request":{"href":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/1","id":72633806,"html_url":"https://github.com/coniks-sys/libmerkleprefixtree-go/pull/1","diff_url":"https://github.com/coniks-sys/libmerkleprefixtree-go/pull/1.diff","patch_url":"https://github.com/coniks-sys/libmerkleprefixtree-go/pull/1.patch","issue_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues/1","number":1,"state":"open","locked":false,"title":"Merkle tree","user":{"login":"c633","id":5112602,"avatar_url":"https://avatars.githubusercontent.com/u/5112602?v=3","gravatar_id":"","url":"https://api.github.com/users/c633","html_url":"https://github.com/c633","followers_url":"https://api.github.com/users/c633/followers","following_url":"https://api.github.com/users/c633/following{/other_user}","gists_url":"https://api.github.com/users/c633/gists{/gist_id}","starred_url":"https://api.github.com/users/c633/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/c633/subscriptions","organizations_url":"https://api.github.com/users/c633/orgs","repos_url":"https://api.github.com/users/c633/repos","events_url":"https://api.github.com/users/c633/events{/privacy}","received_events_url":"https://api.github.com/users/c633/received_events","type":"User","site_admin":false},"body":"Implement the Merkle prefix tree #2  and STR #3 ","created_at":"2016-06-05T16:32:28Z","updated_at":"2016-06-21T03:26:55Z","closed_at":null,"merged_at":null,"merge_commit_sha":"225b561aa3fb233a54e0c0095f8efa3aca1856e0","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/1/commits","review_comments_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/1/comments","review_comment_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/comments{/number}","comments_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues/1/comments","statuses_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/statuses/185b4ca42bf982dc850545937cddfe05ea5ea6f8","head":{"label":"coniks-sys:merkle-tree","ref":"merkle-tree","sha":"185b4ca42bf982dc850545937cddfe05ea5ea6f8","user":{"login":"coniks-sys","id":11236504,"avatar_url":"https://avatars.githubusercontent.com/u/11236504?v=3","gravatar_id":"","url":"https://api.github.com/users/coniks-sys","html_url":"https://github.com/coniks-sys","followers_url":"https://api.github.com/users/coniks-sys/followers","following_url":"https://api.github.com/users/coniks-sys/following{/other_user}","gists_url":"https://api.github.com/users/coniks-sys/gists{/gist_id}","starred_url":"https://api.github.com/users/coniks-sys/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coniks-sys/subscriptions","organizations_url":"https://api.github.com/users/coniks-sys/orgs","repos_url":"https://api.github.com/users/coniks-sys/repos","events_url":"https://api.github.com/users/coniks-sys/events{/privacy}","received_events_url":"https://api.github.com/users/coniks-sys/received_events","type":"Organization","site_admin":false},"repo":{"id":60117979,"name":"libmerkleprefixtree-go","full_name":"coniks-sys/libmerkleprefixtree-go","owner":{"login":"coniks-sys","id":11236504,"avatar_url":"https://avatars.githubusercontent.com/u/11236504?v=3","gravatar_id":"","url":"https://api.github.com/users/coniks-sys","html_url":"https://github.com/coniks-sys","followers_url":"https://api.github.com/users/coniks-sys/followers","following_url":"https://api.github.com/users/coniks-sys/following{/other_user}","gists_url":"https://api.github.com/users/coniks-sys/gists{/gist_id}","starred_url":"https://api.github.com/users/coniks-sys/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coniks-sys/subscriptions","organizations_url":"https://api.github.com/users/coniks-sys/orgs","repos_url":"https://api.github.com/users/coniks-sys/repos","events_url":"https://api.github.com/users/coniks-sys/events{/privacy}","received_events_url":"https://api.github.com/users/coniks-sys/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/coniks-sys/libmerkleprefixtree-go","description":"A Merkle prefix tree implementation in Golang","fork":false,"url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go","forks_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/forks","keys_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/keys{/key_id}","collaborators_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/teams","hooks_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/hooks","issue_events_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues/events{/number}","events_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/events","assignees_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/assignees{/user}","branches_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/branches{/branch}","tags_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/tags","blobs_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/refs{/sha}","trees_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/trees{/sha}","statuses_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/statuses/{sha}","languages_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/languages","stargazers_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/stargazers","contributors_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/contributors","subscribers_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/subscribers","subscription_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/subscription","commits_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/commits{/sha}","git_commits_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/commits{/sha}","comments_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/comments{/number}","issue_comment_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues/comments{/number}","contents_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/contents/{+path}","compare_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/compare/{base}...{head}","merges_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/merges","archive_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/downloads","issues_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues{/number}","pulls_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls{/number}","milestones_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/milestones{/number}","notifications_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/labels{/name}","releases_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/releases{/id}","deployments_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/deployments","created_at":"2016-05-31T19:37:35Z","updated_at":"2016-06-07T23:54:55Z","pushed_at":"2016-06-17T18:16:52Z","git_url":"git://github.com/coniks-sys/libmerkleprefixtree-go.git","ssh_url":"git@github.com:coniks-sys/libmerkleprefixtree-go.git","clone_url":"https://github.com/coniks-sys/libmerkleprefixtree-go.git","svn_url":"https://github.com/coniks-sys/libmerkleprefixtree-go","homepage":null,"size":146,"stargazers_count":3,"watchers_count":3,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":7,"forks":0,"open_issues":7,"watchers":3,"default_branch":"master"}},"base":{"label":"coniks-sys:master","ref":"master","sha":"f5c1839b6f368fd203d4e0b0e5a26a305cca034f","user":{"login":"coniks-sys","id":11236504,"avatar_url":"https://avatars.githubusercontent.com/u/11236504?v=3","gravatar_id":"","url":"https://api.github.com/users/coniks-sys","html_url":"https://github.com/coniks-sys","followers_url":"https://api.github.com/users/coniks-sys/followers","following_url":"https://api.github.com/users/coniks-sys/following{/other_user}","gists_url":"https://api.github.com/users/coniks-sys/gists{/gist_id}","starred_url":"https://api.github.com/users/coniks-sys/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coniks-sys/subscriptions","organizations_url":"https://api.github.com/users/coniks-sys/orgs","repos_url":"https://api.github.com/users/coniks-sys/repos","events_url":"https://api.github.com/users/coniks-sys/events{/privacy}","received_events_url":"https://api.github.com/users/coniks-sys/received_events","type":"Organization","site_admin":false},"repo":{"id":60117979,"name":"libmerkleprefixtree-go","full_name":"coniks-sys/libmerkleprefixtree-go","owner":{"login":"coniks-sys","id":11236504,"avatar_url":"https://avatars.githubusercontent.com/u/11236504?v=3","gravatar_id":"","url":"https://api.github.com/users/coniks-sys","html_url":"https://github.com/coniks-sys","followers_url":"https://api.github.com/users/coniks-sys/followers","following_url":"https://api.github.com/users/coniks-sys/following{/other_user}","gists_url":"https://api.github.com/users/coniks-sys/gists{/gist_id}","starred_url":"https://api.github.com/users/coniks-sys/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coniks-sys/subscriptions","organizations_url":"https://api.github.com/users/coniks-sys/orgs","repos_url":"https://api.github.com/users/coniks-sys/repos","events_url":"https://api.github.com/users/coniks-sys/events{/privacy}","received_events_url":"https://api.github.com/users/coniks-sys/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/coniks-sys/libmerkleprefixtree-go","description":"A Merkle prefix tree implementation in Golang","fork":false,"url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go","forks_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/forks","keys_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/keys{/key_id}","collaborators_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/teams","hooks_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/hooks","issue_events_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues/events{/number}","events_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/events","assignees_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/assignees{/user}","branches_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/branches{/branch}","tags_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/tags","blobs_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/refs{/sha}","trees_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/trees{/sha}","statuses_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/statuses/{sha}","languages_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/languages","stargazers_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/stargazers","contributors_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/contributors","subscribers_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/subscribers","subscription_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/subscription","commits_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/commits{/sha}","git_commits_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/git/commits{/sha}","comments_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/comments{/number}","issue_comment_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues/comments{/number}","contents_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/contents/{+path}","compare_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/compare/{base}...{head}","merges_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/merges","archive_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/downloads","issues_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues{/number}","pulls_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls{/number}","milestones_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/milestones{/number}","notifications_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/labels{/name}","releases_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/releases{/id}","deployments_url":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/deployments","created_at":"2016-05-31T19:37:35Z","updated_at":"2016-06-07T23:54:55Z","pushed_at":"2016-06-17T18:16:52Z","git_url":"git://github.com/coniks-sys/libmerkleprefixtree-go.git","ssh_url":"git@github.com:coniks-sys/libmerkleprefixtree-go.git","clone_url":"https://github.com/coniks-sys/libmerkleprefixtree-go.git","svn_url":"https://github.com/coniks-sys/libmerkleprefixtree-go","homepage":null,"size":146,"stargazers_count":3,"watchers_count":3,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":7,"forks":0,"open_issues":7,"watchers":3,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/1"},"html":{"href":"https://github.com/coniks-sys/libmerkleprefixtree-go/pull/1"},"issue":{"href":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues/1"},"comments":{"href":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/coniks-sys/libmerkleprefixtree-go/statuses/185b4ca42bf982dc850545937cddfe05ea5ea6f8"}}}}
{"actor":{"display_login":"arlolra"}}