{"action":"created","comment":{"url":"https://api.github.com/repos/hyperledger/iroha/pulls/comments/106357015","pull_request_review_id":27270821,"id":106357015,"diff_hunk":"@@ -27,97 +27,89 @@ limitations under the License.\n #include <crypto/base64.hpp>\n #include <crypto/hash.hpp>\n \n+#include <cassert>\n+\n namespace signature {\n \n-  template<typename T>\n-    std::unique_ptr<T[]> vector2UnsignedCharPointer(\n-    const std::vector<T> &vec\n-  ){\n-    std::unique_ptr<T[]> res(new T[sizeof(T)*vec.size()+1]);\n-    size_t pos = 0;\n-    auto* v = res.get();\n-    for(auto c : vec){\n-      v[pos++] = c;\n-    }\n-    v[pos] = '\\0';\n+template<typename T>\n+std::vector<T> vector2UnsignedCharPointer(const std::vector<T> &vec) {\n+  std::vector<T> res(vec.size() + 1);\n+  std::copy(vec.begin(), vec.end(), res.begin());\n+  res[res.size() - 1] = '\\0';\n+  return res;\n+}\n+\n+template<typename T>\n+std::vector<T> pointer2Vector(std::unique_ptr<T[]>&& array, size_t length) {\n+    std::vector<T> res(length);\n+    res.assign(array.get(),array.get()+length);\n     return res;\n-  }\n-\n-  template<typename T>\n-  std::vector<T> pointer2Vector(\n-    std::unique_ptr<T[]>&& array,\n-    size_t length\n-  ) {\n-      std::vector<T> res(length);\n-      res.assign(array.get(),array.get()+length);\n-      return res;\n-  }\n-\n-  bool verify(\n-    const std::string &signature,\n-    const std::string &message,\n-    const std::string &publicKey) {\n-    return ed25519_verify(\n-      vector2UnsignedCharPointer(base64::decode(signature)).get(),\n-      reinterpret_cast<const unsigned char*>(message.c_str()),\n-      message.size(),\n-      vector2UnsignedCharPointer(base64::decode(publicKey)).get());\n-  }\n-\n-  \n-\n-  std::string sign(\n-    std::string message,\n-    KeyPair     keyPair\n-  ){\n-    std::unique_ptr<unsigned char[]> signature(new unsigned char[sizeof(unsigned char)*64]);\n-    ed25519_sign(\n-      signature.get(),\n-      reinterpret_cast<const unsigned char*>(message.c_str()),\n-      message.size(),\n-      vector2UnsignedCharPointer(keyPair.publicKey).get(),\n-      vector2UnsignedCharPointer(keyPair.privateKey).get()\n-    );\n-    return base64::encode(pointer2Vector(std::move(signature), 64));\n-  }\n-\n-  std::string sign(\n-    std::string message,\n-    std::string publicKey_b64,\n-    std::string privateKey_b64\n-  ){\n-    std::unique_ptr<unsigned char[]> signatureRaw(new unsigned char[sizeof(unsigned char)*64]);\n-    ed25519_sign(\n-      signatureRaw.get(),\n-      reinterpret_cast<const unsigned char*>(message.c_str()),\n-      message.size(),\n-      vector2UnsignedCharPointer<unsigned char>(\n-        base64::decode(publicKey_b64)\n-      ).get(),\n-      vector2UnsignedCharPointer<unsigned char>(\n-        base64::decode(privateKey_b64)\n-      ).get()\n-    );\n-    return base64::encode(\n-      pointer2Vector(std::move(signatureRaw), 64)\n-    );\n-  }\n-\n-  KeyPair generateKeyPair() {\n-    std::unique_ptr<unsigned char[]> publicKeyRaw(new unsigned char[sizeof(unsigned char)*32]);\n-    std::unique_ptr<unsigned char[]> privateKeyRaw(new unsigned char[sizeof(unsigned char)*64]);\n-    std::unique_ptr<unsigned char[]> seed(new unsigned char[sizeof(unsigned char)*32]);\n-\n-    ed25519_create_seed(seed.get());\n-    ed25519_create_keypair(\n-      publicKeyRaw.get(),\n-      privateKeyRaw.get(),\n-      seed.get()\n-    );\n-\n-    return KeyPair(\n-       pointer2Vector(std::move(publicKeyRaw), 32),\n-       pointer2Vector(std::move(privateKeyRaw), 64)\n-     );\n-  }\n+}\n+\n+std::string sign(const std::string &message,\n+                 const KeyPair &keyPair) {\n+  std::vector<unsigned char> pub(keyPair.publicKey.begin(), keyPair.publicKey.end());\n+  std::vector<unsigned char> pri(keyPair.privateKey.begin(), keyPair.privateKey.end());\n+  return base64::encode(sign(message, pub, pri));\n+}\n+\n+std::string sign(const std::string &message,\n+                 const std::string &publicKey_b64,\n+                 const std::string &privateKey_b64) {\n+  auto pub_decoded = base64::decode(publicKey_b64);\n+  auto pri_decoded = base64::decode(privateKey_b64);\n+  std::vector<unsigned char> pub(pub_decoded.begin(), pub_decoded.end());\n+  std::vector<unsigned char> pri(pri_decoded.begin(), pri_decoded.end());\n+  return base64::encode(sign(message, pub, pri));\n+}\n+\n+\n+std::vector<unsigned char> sign(const std::string &message,\n+                                const std::vector<unsigned char> &publicKey,\n+                                const std::vector<unsigned char> &privateKey) {\n+  std::vector<unsigned char> signature(SIG_SIZE);\n+  ed25519_sign(signature.data(),\n+             reinterpret_cast<const unsigned char*>(message.c_str()),\n+             message.size(),\n+             publicKey.data(),\n+             privateKey.data());\n+  return signature;\n+}\n+\n+bool verify(const std::string &signature_b64,\n+            const std::string &message,\n+            const std::string &publicKey_b64) {\n+  return ed25519_verify(base64::decode(signature_b64).data(),\n+                        reinterpret_cast<const unsigned char*>(message.c_str()),\n+                        message.size(),\n+                        base64::decode(publicKey_b64).data());\n+}\n+\n+bool verify(const std::vector<unsigned char> &signature,\n+            const std::string &message,\n+            const std::vector<unsigned char> &publicKey) {\n+  return ed25519_verify(signature.data(),\n+                        reinterpret_cast<const unsigned char*>(message.c_str()),\n+                        message.size(),\n+                        publicKey.data());\n+}\n+\n+KeyPair generateKeyPair() {","path":"core/infra/crypto/signature.cpp","position":161,"original_position":161,"commit_id":"1edeff342bbf0ade186af364ce3755d972b411f3","original_commit_id":"1edeff342bbf0ade186af364ce3755d972b411f3","user":{"login":"Warchant","id":1867551,"avatar_url":"https://avatars3.githubusercontent.com/u/1867551?v=3","gravatar_id":"","url":"https://api.github.com/users/Warchant","html_url":"https://github.com/Warchant","followers_url":"https://api.github.com/users/Warchant/followers","following_url":"https://api.github.com/users/Warchant/following{/other_user}","gists_url":"https://api.github.com/users/Warchant/gists{/gist_id}","starred_url":"https://api.github.com/users/Warchant/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Warchant/subscriptions","organizations_url":"https://api.github.com/users/Warchant/orgs","repos_url":"https://api.github.com/users/Warchant/repos","events_url":"https://api.github.com/users/Warchant/events{/privacy}","received_events_url":"https://api.github.com/users/Warchant/received_events","type":"User","site_admin":false},"body":"```\r\nstd::vector<uchar> pub(PUB_KEY_SIZE);\r\nstd::vector<uchar> pri(PRI_KEY_SIZE);\r\nstd::vector<uchar> seed(32);\r\n\r\n  ed25519_create_seed(&seed[0]);\r\n  ed25519_create_keypair(\r\n    &pub[0],\r\n    &pri[0],\r\n    seed.data()\r\n  );\r\n\r\n  return KeyPair(std::move(pub), std::move(pri));\r\n```\r\n\r\na lot cleaner and without copies/pointers","created_at":"2017-03-16T08:05:20Z","updated_at":"2017-03-16T08:06:24Z","html_url":"https://github.com/hyperledger/iroha/pull/226#discussion_r106357015","pull_request_url":"https://api.github.com/repos/hyperledger/iroha/pulls/226","_links":{"self":{"href":"https://api.github.com/repos/hyperledger/iroha/pulls/comments/106357015"},"html":{"href":"https://github.com/hyperledger/iroha/pull/226#discussion_r106357015"},"pull_request":{"href":"https://api.github.com/repos/hyperledger/iroha/pulls/226"}}},"pull_request":{"url":"https://api.github.com/repos/hyperledger/iroha/pulls/226","id":110949884,"html_url":"https://github.com/hyperledger/iroha/pull/226","diff_url":"https://github.com/hyperledger/iroha/pull/226.diff","patch_url":"https://github.com/hyperledger/iroha/pull/226.patch","issue_url":"https://api.github.com/repos/hyperledger/iroha/issues/226","number":226,"state":"open","locked":false,"title":"Remove redundant allocation in signatures","user":{"login":"l4l","id":5658339,"avatar_url":"https://avatars1.githubusercontent.com/u/5658339?v=3","gravatar_id":"","url":"https://api.github.com/users/l4l","html_url":"https://github.com/l4l","followers_url":"https://api.github.com/users/l4l/followers","following_url":"https://api.github.com/users/l4l/following{/other_user}","gists_url":"https://api.github.com/users/l4l/gists{/gist_id}","starred_url":"https://api.github.com/users/l4l/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/l4l/subscriptions","organizations_url":"https://api.github.com/users/l4l/orgs","repos_url":"https://api.github.com/users/l4l/repos","events_url":"https://api.github.com/users/l4l/events{/privacy}","received_events_url":"https://api.github.com/users/l4l/received_events","type":"User","site_admin":false},"body":"related to #223\r\n\r\n~~work still in progress, plz don't merge~~","created_at":"2017-03-15T21:48:55Z","updated_at":"2017-03-16T08:06:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"61ba66f23055588392a249b74a6ee041627aece7","assignee":{"login":"l4l","id":5658339,"avatar_url":"https://avatars1.githubusercontent.com/u/5658339?v=3","gravatar_id":"","url":"https://api.github.com/users/l4l","html_url":"https://github.com/l4l","followers_url":"https://api.github.com/users/l4l/followers","following_url":"https://api.github.com/users/l4l/following{/other_user}","gists_url":"https://api.github.com/users/l4l/gists{/gist_id}","starred_url":"https://api.github.com/users/l4l/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/l4l/subscriptions","organizations_url":"https://api.github.com/users/l4l/orgs","repos_url":"https://api.github.com/users/l4l/repos","events_url":"https://api.github.com/users/l4l/events{/privacy}","received_events_url":"https://api.github.com/users/l4l/received_events","type":"User","site_admin":false},"assignees":[{"login":"l4l","id":5658339,"avatar_url":"https://avatars1.githubusercontent.com/u/5658339?v=3","gravatar_id":"","url":"https://api.github.com/users/l4l","html_url":"https://github.com/l4l","followers_url":"https://api.github.com/users/l4l/followers","following_url":"https://api.github.com/users/l4l/following{/other_user}","gists_url":"https://api.github.com/users/l4l/gists{/gist_id}","starred_url":"https://api.github.com/users/l4l/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/l4l/subscriptions","organizations_url":"https://api.github.com/users/l4l/orgs","repos_url":"https://api.github.com/users/l4l/repos","events_url":"https://api.github.com/users/l4l/events{/privacy}","received_events_url":"https://api.github.com/users/l4l/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/hyperledger/iroha/pulls/226/commits","review_comments_url":"https://api.github.com/repos/hyperledger/iroha/pulls/226/comments","review_comment_url":"https://api.github.com/repos/hyperledger/iroha/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hyperledger/iroha/issues/226/comments","statuses_url":"https://api.github.com/repos/hyperledger/iroha/statuses/1edeff342bbf0ade186af364ce3755d972b411f3","head":{"label":"hyperledger:feature/fix223","ref":"feature/fix223","sha":"1edeff342bbf0ade186af364ce3755d972b411f3","user":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars1.githubusercontent.com/u/7657900?v=3","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"repo":{"id":67340575,"name":"iroha","full_name":"hyperledger/iroha","owner":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars1.githubusercontent.com/u/7657900?v=3","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hyperledger/iroha","description":"Iroha - A simple, decentralized ledger","fork":false,"url":"https://api.github.com/repos/hyperledger/iroha","forks_url":"https://api.github.com/repos/hyperledger/iroha/forks","keys_url":"https://api.github.com/repos/hyperledger/iroha/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hyperledger/iroha/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hyperledger/iroha/teams","hooks_url":"https://api.github.com/repos/hyperledger/iroha/hooks","issue_events_url":"https://api.github.com/repos/hyperledger/iroha/issues/events{/number}","events_url":"https://api.github.com/repos/hyperledger/iroha/events","assignees_url":"https://api.github.com/repos/hyperledger/iroha/assignees{/user}","branches_url":"https://api.github.com/repos/hyperledger/iroha/branches{/branch}","tags_url":"https://api.github.com/repos/hyperledger/iroha/tags","blobs_url":"https://api.github.com/repos/hyperledger/iroha/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hyperledger/iroha/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hyperledger/iroha/git/refs{/sha}","trees_url":"https://api.github.com/repos/hyperledger/iroha/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hyperledger/iroha/statuses/{sha}","languages_url":"https://api.github.com/repos/hyperledger/iroha/languages","stargazers_url":"https://api.github.com/repos/hyperledger/iroha/stargazers","contributors_url":"https://api.github.com/repos/hyperledger/iroha/contributors","subscribers_url":"https://api.github.com/repos/hyperledger/iroha/subscribers","subscription_url":"https://api.github.com/repos/hyperledger/iroha/subscription","commits_url":"https://api.github.com/repos/hyperledger/iroha/commits{/sha}","git_commits_url":"https://api.github.com/repos/hyperledger/iroha/git/commits{/sha}","comments_url":"https://api.github.com/repos/hyperledger/iroha/comments{/number}","issue_comment_url":"https://api.github.com/repos/hyperledger/iroha/issues/comments{/number}","contents_url":"https://api.github.com/repos/hyperledger/iroha/contents/{+path}","compare_url":"https://api.github.com/repos/hyperledger/iroha/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hyperledger/iroha/merges","archive_url":"https://api.github.com/repos/hyperledger/iroha/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hyperledger/iroha/downloads","issues_url":"https://api.github.com/repos/hyperledger/iroha/issues{/number}","pulls_url":"https://api.github.com/repos/hyperledger/iroha/pulls{/number}","milestones_url":"https://api.github.com/repos/hyperledger/iroha/milestones{/number}","notifications_url":"https://api.github.com/repos/hyperledger/iroha/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hyperledger/iroha/labels{/name}","releases_url":"https://api.github.com/repos/hyperledger/iroha/releases{/id}","deployments_url":"https://api.github.com/repos/hyperledger/iroha/deployments","created_at":"2016-09-04T11:17:53Z","updated_at":"2017-03-16T06:49:05Z","pushed_at":"2017-03-16T07:40:22Z","git_url":"git://github.com/hyperledger/iroha.git","ssh_url":"git@github.com:hyperledger/iroha.git","clone_url":"https://github.com/hyperledger/iroha.git","svn_url":"https://github.com/hyperledger/iroha","homepage":"http://iroha.tech","size":31585,"stargazers_count":151,"watchers_count":151,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":54,"mirror_url":null,"open_issues_count":22,"forks":54,"open_issues":22,"watchers":151,"default_branch":"master"}},"base":{"label":"hyperledger:develop","ref":"develop","sha":"c5e21f3636d2af35f1023d77db27aef20f184127","user":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars1.githubusercontent.com/u/7657900?v=3","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"repo":{"id":67340575,"name":"iroha","full_name":"hyperledger/iroha","owner":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars1.githubusercontent.com/u/7657900?v=3","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hyperledger/iroha","description":"Iroha - A simple, decentralized ledger","fork":false,"url":"https://api.github.com/repos/hyperledger/iroha","forks_url":"https://api.github.com/repos/hyperledger/iroha/forks","keys_url":"https://api.github.com/repos/hyperledger/iroha/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hyperledger/iroha/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hyperledger/iroha/teams","hooks_url":"https://api.github.com/repos/hyperledger/iroha/hooks","issue_events_url":"https://api.github.com/repos/hyperledger/iroha/issues/events{/number}","events_url":"https://api.github.com/repos/hyperledger/iroha/events","assignees_url":"https://api.github.com/repos/hyperledger/iroha/assignees{/user}","branches_url":"https://api.github.com/repos/hyperledger/iroha/branches{/branch}","tags_url":"https://api.github.com/repos/hyperledger/iroha/tags","blobs_url":"https://api.github.com/repos/hyperledger/iroha/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hyperledger/iroha/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hyperledger/iroha/git/refs{/sha}","trees_url":"https://api.github.com/repos/hyperledger/iroha/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hyperledger/iroha/statuses/{sha}","languages_url":"https://api.github.com/repos/hyperledger/iroha/languages","stargazers_url":"https://api.github.com/repos/hyperledger/iroha/stargazers","contributors_url":"https://api.github.com/repos/hyperledger/iroha/contributors","subscribers_url":"https://api.github.com/repos/hyperledger/iroha/subscribers","subscription_url":"https://api.github.com/repos/hyperledger/iroha/subscription","commits_url":"https://api.github.com/repos/hyperledger/iroha/commits{/sha}","git_commits_url":"https://api.github.com/repos/hyperledger/iroha/git/commits{/sha}","comments_url":"https://api.github.com/repos/hyperledger/iroha/comments{/number}","issue_comment_url":"https://api.github.com/repos/hyperledger/iroha/issues/comments{/number}","contents_url":"https://api.github.com/repos/hyperledger/iroha/contents/{+path}","compare_url":"https://api.github.com/repos/hyperledger/iroha/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hyperledger/iroha/merges","archive_url":"https://api.github.com/repos/hyperledger/iroha/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hyperledger/iroha/downloads","issues_url":"https://api.github.com/repos/hyperledger/iroha/issues{/number}","pulls_url":"https://api.github.com/repos/hyperledger/iroha/pulls{/number}","milestones_url":"https://api.github.com/repos/hyperledger/iroha/milestones{/number}","notifications_url":"https://api.github.com/repos/hyperledger/iroha/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hyperledger/iroha/labels{/name}","releases_url":"https://api.github.com/repos/hyperledger/iroha/releases{/id}","deployments_url":"https://api.github.com/repos/hyperledger/iroha/deployments","created_at":"2016-09-04T11:17:53Z","updated_at":"2017-03-16T06:49:05Z","pushed_at":"2017-03-16T07:40:22Z","git_url":"git://github.com/hyperledger/iroha.git","ssh_url":"git@github.com:hyperledger/iroha.git","clone_url":"https://github.com/hyperledger/iroha.git","svn_url":"https://github.com/hyperledger/iroha","homepage":"http://iroha.tech","size":31585,"stargazers_count":151,"watchers_count":151,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":54,"mirror_url":null,"open_issues_count":22,"forks":54,"open_issues":22,"watchers":151,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hyperledger/iroha/pulls/226"},"html":{"href":"https://github.com/hyperledger/iroha/pull/226"},"issue":{"href":"https://api.github.com/repos/hyperledger/iroha/issues/226"},"comments":{"href":"https://api.github.com/repos/hyperledger/iroha/issues/226/comments"},"review_comments":{"href":"https://api.github.com/repos/hyperledger/iroha/pulls/226/comments"},"review_comment":{"href":"https://api.github.com/repos/hyperledger/iroha/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hyperledger/iroha/pulls/226/commits"},"statuses":{"href":"https://api.github.com/repos/hyperledger/iroha/statuses/1edeff342bbf0ade186af364ce3755d972b411f3"}}}}
{"actor":{"display_login":"Warchant"}}