{"action":"created","comment":{"url":"https://api.github.com/repos/scipr-lab/libsnark/pulls/comments/131575467","pull_request_review_id":54568192,"id":131575467,"diff_hunk":"@@ -0,0 +1,467 @@\n+/** @file\n+ *****************************************************************************\n+\n+ Declaration of interfaces for a SEppzkSNARK for R1CS.\n+\n+ This includes:\n+ - class for proving key\n+ - class for verification key\n+ - class for processed verification key\n+ - class for key pair (proving key & verification key)\n+ - class for proof\n+ - generator algorithm\n+ - prover algorithm\n+ - verifier algorithm (with strong or weak input consistency)\n+ - online verifier algorithm (with strong or weak input consistency)\n+\n+ The implementation instantiates (a modification of) the protocol of \\[GM17],\n+ by following extending, and optimizing the approach described in \\[BCTV14].\n+\n+\n+ Acronyms:\n+\n+ - R1CS = \"Rank-1 Constraint Systems\"\n+ - SEppzkSNARK = \"Simulation-Extractable PreProcessing Zero-Knowledge Succinct\n+     Non-interactive ARgument of Knowledge\"\n+\n+ References:\n+\n+ \\[BCTV14]:\n+ \"Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture\",\n+ Eli Ben-Sasson, Alessandro Chiesa, Eran Tromer, Madars Virza,\n+ USENIX Security 2014,\n+ <http://eprint.iacr.org/2013/879>\n+\n+ \\[GM17]:\n+ \"Snarky Signatures: Minimal Signatures of Knowledge from\n+  Simulation-Extractable SNARKs\",\n+ Jens Groth and Mary Maller,\n+ IACR-CRYPTO-2017,\n+ <https://eprint.iacr.org/2017/540>\n+\n+ *****************************************************************************\n+ * @author     This file is part of libsnark, developed by SCIPR Lab\n+ *             and contributors (see AUTHORS).\n+ * @copyright  MIT license (see LICENSE file)\n+ *****************************************************************************/\n+\n+#ifndef R1CS_SE_PPZKSNARK_HPP_\n+#define R1CS_SE_PPZKSNARK_HPP_\n+\n+#include <memory>\n+\n+#include <libff/algebra/curves/public_params.hpp>\n+\n+#include <libsnark/common/data_structures/accumulation_vector.hpp>\n+#include <libsnark/knowledge_commitment/knowledge_commitment.hpp>\n+#include <libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.hpp>\n+#include <libsnark/zk_proof_systems/ppzksnark/r1cs_se_ppzksnark/r1cs_se_ppzksnark_params.hpp>\n+\n+namespace libsnark {\n+\n+/******************************** Proving key ********************************/\n+\n+template<typename ppT>\n+class r1cs_se_ppzksnark_proving_key;\n+\n+template<typename ppT>\n+std::ostream& operator<<(std::ostream &out, const r1cs_se_ppzksnark_proving_key<ppT> &pk);\n+\n+template<typename ppT>\n+std::istream& operator>>(std::istream &in, r1cs_se_ppzksnark_proving_key<ppT> &pk);\n+\n+/**\n+ * A proving key for the R1CS SEppzkSNARK.\n+ */\n+template<typename ppT>\n+class r1cs_se_ppzksnark_proving_key {\n+public:\n+    // G^{gamma * A_i(t)} for 0 <= i <= sap.num_variables()\n+    libff::G1_vector<ppT> A_query;\n+\n+    // H^{gamma * A_i(t)} for 0 <= i <= sap.num_variables()\n+    libff::G2_vector<ppT> B_query;\n+\n+    // G^{gamma^2 * C_i(t) + (alpha + beta) * gamma * A_i(t)}\n+    // for sap.num_inputs() + 1 < i <= sap.num_variables()\n+    libff::G1_vector<ppT> C_query_1;\n+\n+    // G^{2 * gamma^2 * Z(t) * A_i(t)} for 0 <= i <= sap.num_variables()\n+    libff::G1_vector<ppT> C_query_2;\n+\n+    // G^{gamma * Z(t)}\n+    libff::G1<ppT> G_gamma_Z;\n+\n+    // H^{gamma * Z(t)}\n+    libff::G2<ppT> H_gamma_Z;\n+\n+    // G^{(alpha + beta) * gamma * Z(t)}\n+    libff::G1<ppT> G_ab_gamma_Z;\n+\n+    // G^{gamma^2 * Z(t)^2}\n+    libff::G1<ppT> G_gamma2_Z2;\n+\n+    // G^{gamma^2 * Z(t) * t^i} for 0 <= i < sap.degree\n+    libff::G1_vector<ppT> G_gamma2_Z_t;\n+\n+    r1cs_se_ppzksnark_constraint_system<ppT> constraint_system;\n+\n+    r1cs_se_ppzksnark_proving_key() {};\n+    r1cs_se_ppzksnark_proving_key<ppT>& operator=(const r1cs_se_ppzksnark_proving_key<ppT> &other) = default;\n+    r1cs_se_ppzksnark_proving_key(const r1cs_se_ppzksnark_proving_key<ppT> &other) = default;\n+    r1cs_se_ppzksnark_proving_key(r1cs_se_ppzksnark_proving_key<ppT> &&other) = default;\n+    r1cs_se_ppzksnark_proving_key(libff::G1_vector<ppT> &&A_query,\n+        libff::G2_vector<ppT> &&B_query,\n+        libff::G1_vector<ppT> &&C_query_1,\n+        libff::G1_vector<ppT> &&C_query_2,\n+        libff::G1<ppT> &G_gamma_Z,\n+        libff::G2<ppT> &H_gamma_Z,\n+        libff::G1<ppT> &G_ab_gamma_Z,\n+        libff::G1<ppT> &G_gamma2_Z2,\n+        libff::G1_vector<ppT> &&G_gamma2_Z_t,\n+        r1cs_se_ppzksnark_constraint_system<ppT> &&constraint_system) :\n+        A_query(std::move(A_query)),\n+        B_query(std::move(B_query)),\n+        C_query_1(std::move(C_query_1)),\n+        C_query_2(std::move(C_query_2)),\n+        G_gamma_Z(G_gamma_Z),\n+        H_gamma_Z(H_gamma_Z),\n+        G_ab_gamma_Z(G_ab_gamma_Z),\n+        G_gamma2_Z2(G_gamma2_Z2),\n+        G_gamma2_Z_t(std::move(G_gamma2_Z_t)),\n+        constraint_system(std::move(constraint_system))\n+    {};\n+\n+    size_t G1_size() const\n+    {\n+        return A_query.size() + C_query_1.size() + C_query_2.size() + 3\n+               + G_gamma2_Z_t.size();\n+    }\n+\n+    size_t G2_size() const\n+    {\n+        return B_query.size();","path":"libsnark/zk_proof_systems/ppzksnark/r1cs_se_ppzksnark/r1cs_se_ppzksnark.hpp","position":143,"original_position":143,"commit_id":"79c43815736047507d6f9e757dc5dc91cd916420","original_commit_id":"79c43815736047507d6f9e757dc5dc91cd916420","user":{"login":"popoffka","id":681080,"avatar_url":"https://avatars3.githubusercontent.com/u/681080?v=4","gravatar_id":"","url":"https://api.github.com/users/popoffka","html_url":"https://github.com/popoffka","followers_url":"https://api.github.com/users/popoffka/followers","following_url":"https://api.github.com/users/popoffka/following{/other_user}","gists_url":"https://api.github.com/users/popoffka/gists{/gist_id}","starred_url":"https://api.github.com/users/popoffka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/popoffka/subscriptions","organizations_url":"https://api.github.com/users/popoffka/orgs","repos_url":"https://api.github.com/users/popoffka/repos","events_url":"https://api.github.com/users/popoffka/events{/privacy}","received_events_url":"https://api.github.com/users/popoffka/received_events","type":"User","site_admin":false},"body":"You're right. Let me double-check all the other *_size() functions and commit a fix.","created_at":"2017-08-07T05:37:32Z","updated_at":"2017-08-07T05:37:32Z","html_url":"https://github.com/scipr-lab/libsnark/pull/85#discussion_r131575467","pull_request_url":"https://api.github.com/repos/scipr-lab/libsnark/pulls/85","_links":{"self":{"href":"https://api.github.com/repos/scipr-lab/libsnark/pulls/comments/131575467"},"html":{"href":"https://github.com/scipr-lab/libsnark/pull/85#discussion_r131575467"},"pull_request":{"href":"https://api.github.com/repos/scipr-lab/libsnark/pulls/85"}}},"pull_request":{"url":"https://api.github.com/repos/scipr-lab/libsnark/pulls/85","id":133594831,"html_url":"https://github.com/scipr-lab/libsnark/pull/85","diff_url":"https://github.com/scipr-lab/libsnark/pull/85.diff","patch_url":"https://github.com/scipr-lab/libsnark/pull/85.patch","issue_url":"https://api.github.com/repos/scipr-lab/libsnark/issues/85","number":85,"state":"open","locked":false,"title":"Implement Simulation-Extractable ppzkSNARKs per [GM17]","user":{"login":"popoffka","id":681080,"avatar_url":"https://avatars3.githubusercontent.com/u/681080?v=4","gravatar_id":"","url":"https://api.github.com/users/popoffka","html_url":"https://github.com/popoffka","followers_url":"https://api.github.com/users/popoffka/followers","following_url":"https://api.github.com/users/popoffka/following{/other_user}","gists_url":"https://api.github.com/users/popoffka/gists{/gist_id}","starred_url":"https://api.github.com/users/popoffka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/popoffka/subscriptions","organizations_url":"https://api.github.com/users/popoffka/orgs","repos_url":"https://api.github.com/users/popoffka/repos","events_url":"https://api.github.com/users/popoffka/events{/privacy}","received_events_url":"https://api.github.com/users/popoffka/received_events","type":"User","site_admin":false},"body":"This pull request implements the proof system presented in [Groth and Maller's IACR-CRYPTO-2017 paper](https://eprint.iacr.org/2017/540.pdf).\r\n\r\nUnlike the system from [BCTV14a], which internally operates on Quadratic Arithmetic Programs (which arise from R1CSs, systems of constraints of the form <a, w> * <b, w> = <c, w>), [GM17] operates on Square Arithmetic Programs (which arise from constraints of the form (<a, w>)² = <c, w>). It turns out that an R1CS constraint can be converted into two equivalent SAP-compatible constraints at the cost of introducing an extra variable. This pull request includes an implementation of SAPs along with an R1CS→SAP reduction that follows the existing R1CS→QAP reduction but also performs this additional conversion.\r\n\r\nIt should be noted that the proof system relies on an assumption that is stronger than KEA used in most LIP SNARK works, but weaker than generic group model (used in Groth'16).\r\n\r\nWhen compared to [BCTV14a] on the same input R1CS systems, [GM17] is slower but produces shorter proofs (just 2 elements in G1 and 1 in G2).\r\n\r\nHere are the results of some benchmarking of our implementations of [BCTV14a] and [GM17] on an R1CS instance with 100 000 constraints and 1000 inputs:\r\n\r\nIndicator | [BCTV14a] (`r1cs_ppzksnark`) | [GM17] (`r1cs_se_ppzksnark`) | delta\r\n---|---|---|---|\r\nGenerator runtime | 16.91s | 59.95s | +254%\r\nProver runtime | 19.27s | 19.45s | +0.9%\r\nVerifier runtime | 0.03s | 0.03s | 0\r\nProving key size | 255954523 bits | 322670307 bits | +26%\r\nVerification key size | 322310 bits | 257292 bits | **-20%**\r\nProof size | 2294 bits | 1019 bits | **-56%**\r\n\r\n","created_at":"2017-08-01T23:35:45Z","updated_at":"2017-08-07T05:37:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"856bead25827043aee29461761dab8568ef72765","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/scipr-lab/libsnark/pulls/85/commits","review_comments_url":"https://api.github.com/repos/scipr-lab/libsnark/pulls/85/comments","review_comment_url":"https://api.github.com/repos/scipr-lab/libsnark/pulls/comments{/number}","comments_url":"https://api.github.com/repos/scipr-lab/libsnark/issues/85/comments","statuses_url":"https://api.github.com/repos/scipr-lab/libsnark/statuses/79c43815736047507d6f9e757dc5dc91cd916420","head":{"label":"popoffka:sesnarks","ref":"sesnarks","sha":"79c43815736047507d6f9e757dc5dc91cd916420","user":{"login":"popoffka","id":681080,"avatar_url":"https://avatars3.githubusercontent.com/u/681080?v=4","gravatar_id":"","url":"https://api.github.com/users/popoffka","html_url":"https://github.com/popoffka","followers_url":"https://api.github.com/users/popoffka/followers","following_url":"https://api.github.com/users/popoffka/following{/other_user}","gists_url":"https://api.github.com/users/popoffka/gists{/gist_id}","starred_url":"https://api.github.com/users/popoffka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/popoffka/subscriptions","organizations_url":"https://api.github.com/users/popoffka/orgs","repos_url":"https://api.github.com/users/popoffka/repos","events_url":"https://api.github.com/users/popoffka/events{/privacy}","received_events_url":"https://api.github.com/users/popoffka/received_events","type":"User","site_admin":false},"repo":{"id":93447217,"name":"libsnark","full_name":"popoffka/libsnark","owner":{"login":"popoffka","id":681080,"avatar_url":"https://avatars3.githubusercontent.com/u/681080?v=4","gravatar_id":"","url":"https://api.github.com/users/popoffka","html_url":"https://github.com/popoffka","followers_url":"https://api.github.com/users/popoffka/followers","following_url":"https://api.github.com/users/popoffka/following{/other_user}","gists_url":"https://api.github.com/users/popoffka/gists{/gist_id}","starred_url":"https://api.github.com/users/popoffka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/popoffka/subscriptions","organizations_url":"https://api.github.com/users/popoffka/orgs","repos_url":"https://api.github.com/users/popoffka/repos","events_url":"https://api.github.com/users/popoffka/events{/privacy}","received_events_url":"https://api.github.com/users/popoffka/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/popoffka/libsnark","description":"C++ library for zkSNARKs","fork":true,"url":"https://api.github.com/repos/popoffka/libsnark","forks_url":"https://api.github.com/repos/popoffka/libsnark/forks","keys_url":"https://api.github.com/repos/popoffka/libsnark/keys{/key_id}","collaborators_url":"https://api.github.com/repos/popoffka/libsnark/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/popoffka/libsnark/teams","hooks_url":"https://api.github.com/repos/popoffka/libsnark/hooks","issue_events_url":"https://api.github.com/repos/popoffka/libsnark/issues/events{/number}","events_url":"https://api.github.com/repos/popoffka/libsnark/events","assignees_url":"https://api.github.com/repos/popoffka/libsnark/assignees{/user}","branches_url":"https://api.github.com/repos/popoffka/libsnark/branches{/branch}","tags_url":"https://api.github.com/repos/popoffka/libsnark/tags","blobs_url":"https://api.github.com/repos/popoffka/libsnark/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/popoffka/libsnark/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/popoffka/libsnark/git/refs{/sha}","trees_url":"https://api.github.com/repos/popoffka/libsnark/git/trees{/sha}","statuses_url":"https://api.github.com/repos/popoffka/libsnark/statuses/{sha}","languages_url":"https://api.github.com/repos/popoffka/libsnark/languages","stargazers_url":"https://api.github.com/repos/popoffka/libsnark/stargazers","contributors_url":"https://api.github.com/repos/popoffka/libsnark/contributors","subscribers_url":"https://api.github.com/repos/popoffka/libsnark/subscribers","subscription_url":"https://api.github.com/repos/popoffka/libsnark/subscription","commits_url":"https://api.github.com/repos/popoffka/libsnark/commits{/sha}","git_commits_url":"https://api.github.com/repos/popoffka/libsnark/git/commits{/sha}","comments_url":"https://api.github.com/repos/popoffka/libsnark/comments{/number}","issue_comment_url":"https://api.github.com/repos/popoffka/libsnark/issues/comments{/number}","contents_url":"https://api.github.com/repos/popoffka/libsnark/contents/{+path}","compare_url":"https://api.github.com/repos/popoffka/libsnark/compare/{base}...{head}","merges_url":"https://api.github.com/repos/popoffka/libsnark/merges","archive_url":"https://api.github.com/repos/popoffka/libsnark/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/popoffka/libsnark/downloads","issues_url":"https://api.github.com/repos/popoffka/libsnark/issues{/number}","pulls_url":"https://api.github.com/repos/popoffka/libsnark/pulls{/number}","milestones_url":"https://api.github.com/repos/popoffka/libsnark/milestones{/number}","notifications_url":"https://api.github.com/repos/popoffka/libsnark/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/popoffka/libsnark/labels{/name}","releases_url":"https://api.github.com/repos/popoffka/libsnark/releases{/id}","deployments_url":"https://api.github.com/repos/popoffka/libsnark/deployments","created_at":"2017-06-05T21:09:41Z","updated_at":"2017-06-05T21:09:43Z","pushed_at":"2017-08-01T23:35:24Z","git_url":"git://github.com/popoffka/libsnark.git","ssh_url":"git@github.com:popoffka/libsnark.git","clone_url":"https://github.com/popoffka/libsnark.git","svn_url":"https://github.com/popoffka/libsnark","homepage":"","size":1620,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"scipr-lab:candidate-master","ref":"candidate-master","sha":"0f4b38038ad4b53b2f7c287eb4237e167a09251d","user":{"login":"scipr-lab","id":6570574,"avatar_url":"https://avatars2.githubusercontent.com/u/6570574?v=4","gravatar_id":"","url":"https://api.github.com/users/scipr-lab","html_url":"https://github.com/scipr-lab","followers_url":"https://api.github.com/users/scipr-lab/followers","following_url":"https://api.github.com/users/scipr-lab/following{/other_user}","gists_url":"https://api.github.com/users/scipr-lab/gists{/gist_id}","starred_url":"https://api.github.com/users/scipr-lab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scipr-lab/subscriptions","organizations_url":"https://api.github.com/users/scipr-lab/orgs","repos_url":"https://api.github.com/users/scipr-lab/repos","events_url":"https://api.github.com/users/scipr-lab/events{/privacy}","received_events_url":"https://api.github.com/users/scipr-lab/received_events","type":"Organization","site_admin":false},"repo":{"id":20418463,"name":"libsnark","full_name":"scipr-lab/libsnark","owner":{"login":"scipr-lab","id":6570574,"avatar_url":"https://avatars2.githubusercontent.com/u/6570574?v=4","gravatar_id":"","url":"https://api.github.com/users/scipr-lab","html_url":"https://github.com/scipr-lab","followers_url":"https://api.github.com/users/scipr-lab/followers","following_url":"https://api.github.com/users/scipr-lab/following{/other_user}","gists_url":"https://api.github.com/users/scipr-lab/gists{/gist_id}","starred_url":"https://api.github.com/users/scipr-lab/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scipr-lab/subscriptions","organizations_url":"https://api.github.com/users/scipr-lab/orgs","repos_url":"https://api.github.com/users/scipr-lab/repos","events_url":"https://api.github.com/users/scipr-lab/events{/privacy}","received_events_url":"https://api.github.com/users/scipr-lab/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/scipr-lab/libsnark","description":"C++ library for zkSNARKs","fork":false,"url":"https://api.github.com/repos/scipr-lab/libsnark","forks_url":"https://api.github.com/repos/scipr-lab/libsnark/forks","keys_url":"https://api.github.com/repos/scipr-lab/libsnark/keys{/key_id}","collaborators_url":"https://api.github.com/repos/scipr-lab/libsnark/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/scipr-lab/libsnark/teams","hooks_url":"https://api.github.com/repos/scipr-lab/libsnark/hooks","issue_events_url":"https://api.github.com/repos/scipr-lab/libsnark/issues/events{/number}","events_url":"https://api.github.com/repos/scipr-lab/libsnark/events","assignees_url":"https://api.github.com/repos/scipr-lab/libsnark/assignees{/user}","branches_url":"https://api.github.com/repos/scipr-lab/libsnark/branches{/branch}","tags_url":"https://api.github.com/repos/scipr-lab/libsnark/tags","blobs_url":"https://api.github.com/repos/scipr-lab/libsnark/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/scipr-lab/libsnark/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/scipr-lab/libsnark/git/refs{/sha}","trees_url":"https://api.github.com/repos/scipr-lab/libsnark/git/trees{/sha}","statuses_url":"https://api.github.com/repos/scipr-lab/libsnark/statuses/{sha}","languages_url":"https://api.github.com/repos/scipr-lab/libsnark/languages","stargazers_url":"https://api.github.com/repos/scipr-lab/libsnark/stargazers","contributors_url":"https://api.github.com/repos/scipr-lab/libsnark/contributors","subscribers_url":"https://api.github.com/repos/scipr-lab/libsnark/subscribers","subscription_url":"https://api.github.com/repos/scipr-lab/libsnark/subscription","commits_url":"https://api.github.com/repos/scipr-lab/libsnark/commits{/sha}","git_commits_url":"https://api.github.com/repos/scipr-lab/libsnark/git/commits{/sha}","comments_url":"https://api.github.com/repos/scipr-lab/libsnark/comments{/number}","issue_comment_url":"https://api.github.com/repos/scipr-lab/libsnark/issues/comments{/number}","contents_url":"https://api.github.com/repos/scipr-lab/libsnark/contents/{+path}","compare_url":"https://api.github.com/repos/scipr-lab/libsnark/compare/{base}...{head}","merges_url":"https://api.github.com/repos/scipr-lab/libsnark/merges","archive_url":"https://api.github.com/repos/scipr-lab/libsnark/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/scipr-lab/libsnark/downloads","issues_url":"https://api.github.com/repos/scipr-lab/libsnark/issues{/number}","pulls_url":"https://api.github.com/repos/scipr-lab/libsnark/pulls{/number}","milestones_url":"https://api.github.com/repos/scipr-lab/libsnark/milestones{/number}","notifications_url":"https://api.github.com/repos/scipr-lab/libsnark/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/scipr-lab/libsnark/labels{/name}","releases_url":"https://api.github.com/repos/scipr-lab/libsnark/releases{/id}","deployments_url":"https://api.github.com/repos/scipr-lab/libsnark/deployments","created_at":"2014-06-02T20:27:34Z","updated_at":"2017-08-04T02:28:21Z","pushed_at":"2017-08-05T21:39:42Z","git_url":"git://github.com/scipr-lab/libsnark.git","ssh_url":"git@github.com:scipr-lab/libsnark.git","clone_url":"https://github.com/scipr-lab/libsnark.git","svn_url":"https://github.com/scipr-lab/libsnark","homepage":"","size":10980,"stargazers_count":371,"watchers_count":371,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":117,"mirror_url":null,"open_issues_count":42,"forks":117,"open_issues":42,"watchers":371,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/scipr-lab/libsnark/pulls/85"},"html":{"href":"https://github.com/scipr-lab/libsnark/pull/85"},"issue":{"href":"https://api.github.com/repos/scipr-lab/libsnark/issues/85"},"comments":{"href":"https://api.github.com/repos/scipr-lab/libsnark/issues/85/comments"},"review_comments":{"href":"https://api.github.com/repos/scipr-lab/libsnark/pulls/85/comments"},"review_comment":{"href":"https://api.github.com/repos/scipr-lab/libsnark/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/scipr-lab/libsnark/pulls/85/commits"},"statuses":{"href":"https://api.github.com/repos/scipr-lab/libsnark/statuses/79c43815736047507d6f9e757dc5dc91cd916420"}}}}
{"actor":{"display_login":"popoffka"}}