{"action":"created","comment":{"url":"https://api.github.com/repos/bitcoin/bitcoin/pulls/comments/242606739","pull_request_review_id":186158164,"id":242606739,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0MjYwNjczOQ==","diff_hunk":"@@ -1263,3 +1444,145 @@ UniValue importmulti(const JSONRPCRequest& mainRequest)\n \n     return response;\n }\n+\n+UniValue signerfetchkeys(const JSONRPCRequest& request)\n+{\n+    std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);\n+    CWallet* const pwallet = wallet.get();\n+\n+    if (!EnsureWalletIsAvailable(pwallet, request.fHelp)) {\n+        return NullUniValue;\n+    }\n+\n+    if (request.fHelp || request.params.size() > 1) {\n+        throw std::runtime_error(\n+            \"signerfetchkeys ( fingerprint )\\n\"\n+            \"Obtains keys from external signer and imports them into the wallet.\\n\"\n+            \"Call enumeratesigners before using this.\\n\"\n+            \"\\nArguments:\\n\"\n+            \"1. \\\"fingerprint\\\"   (string, optional) Master key fingerprint of signer\\n\"\n+            \"\\nResult (same as for importmulti):\\n\"\n+            \"[{ \\\"success\\\": true }\"\n+        );\n+    }\n+\n+    ExternalSigner *signer = GetSignerForJSONRPCRequest(request, 0, pwallet);\n+\n+    UniValue descriptors = UniValue(UniValue::VARR);\n+    std::string desc_prefix = \"\";\n+    std::string desc_suffix = \"\";\n+    std::string purpose = \"\";\n+    switch(pwallet->m_default_address_type) {\n+        case OutputType::LEGACY: {\n+            desc_prefix = \"pkh(\";\n+            desc_suffix = \")\";\n+            purpose = \"44h\";\n+            break;\n+        }\n+        case OutputType::P2SH_SEGWIT: {\n+            desc_prefix = \"sh(wpkh(\";\n+            desc_suffix = \"))\";\n+            purpose = \"49h\";\n+            break;\n+        }\n+        case OutputType::BECH32: {\n+            desc_prefix = \"wpkh(\";\n+            desc_suffix = \")\";\n+            purpose = \"84h\";\n+            break;\n+        }\n+        case OutputType::CHANGE_AUTO: {\n+            assert(false);\n+        }\n+    }\n+\n+    const std::string receive_desc = desc_prefix + signer->m_fingerprint + \"/\" + purpose + \"/\" + (signer->m_mainnet ? \"0h\" : \"1h\") + \"/0h/0/*\" + desc_suffix;\n+    UniValue receive_descriptors = signer->getKeys(receive_desc);\n+    if (!receive_descriptors.isArray()) JSONRPCError(RPC_WALLET_ERROR, \"Expected an array of receive descriptors\");\n+    for (const UniValue& descriptor : receive_descriptors.getValues()) {\n+        descriptors.push_back(descriptor);\n+    }\n+\n+\n+    switch(pwallet->m_default_change_type) {\n+        case OutputType::LEGACY: {\n+            desc_prefix = \"pkh(\";\n+            desc_suffix = \")\";\n+            purpose = \"44h\";\n+            break;\n+        }\n+        case OutputType::P2SH_SEGWIT: {\n+            desc_prefix = \"sh(wpkh(\";\n+            desc_suffix = \"))\";\n+            purpose = \"49h\";\n+            break;\n+        }\n+        case OutputType::BECH32: {\n+            desc_prefix = \"wpkh(\";\n+            desc_suffix = \")\";\n+            purpose = \"84h\";\n+            break;\n+        }\n+        case OutputType::CHANGE_AUTO: {\n+            // Use same values as for receive descriptor\n+            break;\n+        }\n+    }\n+\n+    const std::string change_desc = desc_prefix + signer->m_fingerprint + \"/\" + purpose + \"/\" + (signer->m_mainnet ? \"0h\" : \"1h\") + \"/0h/1/*\" + desc_suffix;\n+    UniValue change_descriptors = signer->getKeys(change_desc);\n+    if (!change_descriptors.isArray()) JSONRPCError(RPC_WALLET_ERROR, \"Expected an array of change descriptors\");\n+    for (const UniValue& descriptor : change_descriptors.getValues()) {\n+        descriptors.push_back(descriptor);\n+    }\n+\n+    if (receive_descriptors.size() != change_descriptors.size()) JSONRPCError(RPC_WALLET_ERROR, \"Expected same number of receive and change descriptors\");\n+\n+    // Use importmulti to process the descriptors:\n+    UniValue importdata(UniValue::VARR);\n+\n+    uint64_t keypool_target_size = 0;\n+    keypool_target_size = gArgs.GetArg(\"-keypool\", DEFAULT_KEYPOOL_SIZE);","path":"src/wallet/rpcdump.cpp","position":770,"original_position":770,"commit_id":"9ec4aaca284673e1c92a02fdc4dea9a1a3e6038c","original_commit_id":"9ec4aaca284673e1c92a02fdc4dea9a1a3e6038c","user":{"login":"practicalswift","id":7826565,"node_id":"MDQ6VXNlcjc4MjY1NjU=","avatar_url":"https://avatars3.githubusercontent.com/u/7826565?v=4","gravatar_id":"","url":"https://api.github.com/users/practicalswift","html_url":"https://github.com/practicalswift","followers_url":"https://api.github.com/users/practicalswift/followers","following_url":"https://api.github.com/users/practicalswift/following{/other_user}","gists_url":"https://api.github.com/users/practicalswift/gists{/gist_id}","starred_url":"https://api.github.com/users/practicalswift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/practicalswift/subscriptions","organizations_url":"https://api.github.com/users/practicalswift/orgs","repos_url":"https://api.github.com/users/practicalswift/repos","events_url":"https://api.github.com/users/practicalswift/events{/privacy}","received_events_url":"https://api.github.com/users/practicalswift/received_events","type":"User","site_admin":false},"body":"Make signedness changing implicit conversion explicit?","created_at":"2018-12-18T16:24:28Z","updated_at":"2018-12-18T16:24:28Z","html_url":"https://github.com/bitcoin/bitcoin/pull/14912#discussion_r242606739","pull_request_url":"https://api.github.com/repos/bitcoin/bitcoin/pulls/14912","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/bitcoin/bitcoin/pulls/comments/242606739"},"html":{"href":"https://github.com/bitcoin/bitcoin/pull/14912#discussion_r242606739"},"pull_request":{"href":"https://api.github.com/repos/bitcoin/bitcoin/pulls/14912"}}},"pull_request":{"url":"https://api.github.com/repos/bitcoin/bitcoin/pulls/14912","id":237345485,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM3MzQ1NDg1","html_url":"https://github.com/bitcoin/bitcoin/pull/14912","diff_url":"https://github.com/bitcoin/bitcoin/pull/14912.diff","patch_url":"https://github.com/bitcoin/bitcoin/pull/14912.patch","issue_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/14912","number":14912,"state":"open","locked":false,"title":"[WIP] External signer support (e.g. hardware wallet)","user":{"login":"Sjors","id":10217,"node_id":"MDQ6VXNlcjEwMjE3","avatar_url":"https://avatars1.githubusercontent.com/u/10217?v=4","gravatar_id":"","url":"https://api.github.com/users/Sjors","html_url":"https://github.com/Sjors","followers_url":"https://api.github.com/users/Sjors/followers","following_url":"https://api.github.com/users/Sjors/following{/other_user}","gists_url":"https://api.github.com/users/Sjors/gists{/gist_id}","starred_url":"https://api.github.com/users/Sjors/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sjors/subscriptions","organizations_url":"https://api.github.com/users/Sjors/orgs","repos_url":"https://api.github.com/users/Sjors/repos","events_url":"https://api.github.com/users/Sjors/events{/privacy}","received_events_url":"https://api.github.com/users/Sjors/received_events","type":"User","site_admin":false},"body":"This PR lets `bitcoind` to call an arbitrary command `-signer=<cmd>`, e.g. a hardware wallet driver,  where it can fetch public keys, ask to display an address, and sign a PSBT.\r\n\r\nDepends on:\r\n* #14565: Overhaul `importmulti` logic\r\n* #14491: Allow descriptor imports with `importmulti`\r\n* #14021: Import key origin data through descriptors in importmulti\r\n* #14075: Import watch only pubkeys to the keypool if private keys are disabled\r\n* A big rebase; all the above are in @achow101's [hww branch](https://github.com/achow101/bitcoin/tree/hww), which this builds on top of ([this PR](https://github.com/achow101/bitcoin/pull/2) directly on top of the `hww` branch is more readable). \r\n\r\nIt's design to work @achow101's Python HWI project, which supports multiple hardware wallets. Any command with the same arguments and return values will work. It simplifies the manual procedure described [here](https://github.com/achow101/HWI/blob/master/docs/bitcoin-core-usage.md). (For now, you need a slight variant of his script: \r\nhttps://github.com/achow101/HWI/pull/73).\r\n\r\nUsage is documented in [doc/external-signer.md](\r\nhttps://github.com/Sjors/bitcoin/blob/2018/11/rpc-signer/doc/external-signer.md), which also describes what protocol a different signer binary should conform to.\r\n\r\nIt adds the following RPC methods:\r\n* `enumeratesigners`: asks <cmd> for a list of signers (e.g. devices) and their master key fingerprint\r\n* `signerfetchkeys`: asks <cmd> for BIP44/49/84 (todo: make configurable) descriptors and then fills the keypool (no private keys)\r\n* `signerdisplayaddress <address>`:  asks <cmd> to display an address\r\n\r\nIt modifies `walletprocesspsbt <psbt>` to send the `<psbt>` to `<cmd>` to sign and wait for the result\r\n\r\nUsage TL&DR:\r\n* clone HWI repo somewhere and launch `bitcoind -signer=../HWI/hwi.py`\r\n* create wallet without private keys: `bitcoin-cli createwallet hww`\r\n* list hardware devices: `bitcoin-cli enumeratesigners`\r\n* fetch keys from hardware device into the wallet: `bitcoin-cli -rpcwallet=hww signerfetchkeys`\r\n* display address on device, sign transaction: see [doc/external-signer.md](\r\nhttps://github.com/Sjors/bitcoin/blob/2018/11/rpc-signer/doc/external-signer.md)","created_at":"2018-12-10T14:46:02Z","updated_at":"2018-12-18T16:24:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a07645a5a37de1ec5a77a49293a8c7d6e0029834","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":149424,"node_id":"MDU6TGFiZWwxNDk0MjQ=","url":"https://api.github.com/repos/bitcoin/bitcoin/labels/Wallet","name":"Wallet","color":"08a781","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/bitcoin/bitcoin/pulls/14912/commits","review_comments_url":"https://api.github.com/repos/bitcoin/bitcoin/pulls/14912/comments","review_comment_url":"https://api.github.com/repos/bitcoin/bitcoin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/14912/comments","statuses_url":"https://api.github.com/repos/bitcoin/bitcoin/statuses/9ec4aaca284673e1c92a02fdc4dea9a1a3e6038c","head":{"label":"Sjors:2018/11/rpc-signer","ref":"2018/11/rpc-signer","sha":"9ec4aaca284673e1c92a02fdc4dea9a1a3e6038c","user":{"login":"Sjors","id":10217,"node_id":"MDQ6VXNlcjEwMjE3","avatar_url":"https://avatars1.githubusercontent.com/u/10217?v=4","gravatar_id":"","url":"https://api.github.com/users/Sjors","html_url":"https://github.com/Sjors","followers_url":"https://api.github.com/users/Sjors/followers","following_url":"https://api.github.com/users/Sjors/following{/other_user}","gists_url":"https://api.github.com/users/Sjors/gists{/gist_id}","starred_url":"https://api.github.com/users/Sjors/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sjors/subscriptions","organizations_url":"https://api.github.com/users/Sjors/orgs","repos_url":"https://api.github.com/users/Sjors/repos","events_url":"https://api.github.com/users/Sjors/events{/privacy}","received_events_url":"https://api.github.com/users/Sjors/received_events","type":"User","site_admin":false},"repo":{"id":92390696,"node_id":"MDEwOlJlcG9zaXRvcnk5MjM5MDY5Ng==","name":"bitcoin","full_name":"Sjors/bitcoin","private":false,"owner":{"login":"Sjors","id":10217,"node_id":"MDQ6VXNlcjEwMjE3","avatar_url":"https://avatars1.githubusercontent.com/u/10217?v=4","gravatar_id":"","url":"https://api.github.com/users/Sjors","html_url":"https://github.com/Sjors","followers_url":"https://api.github.com/users/Sjors/followers","following_url":"https://api.github.com/users/Sjors/following{/other_user}","gists_url":"https://api.github.com/users/Sjors/gists{/gist_id}","starred_url":"https://api.github.com/users/Sjors/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Sjors/subscriptions","organizations_url":"https://api.github.com/users/Sjors/orgs","repos_url":"https://api.github.com/users/Sjors/repos","events_url":"https://api.github.com/users/Sjors/events{/privacy}","received_events_url":"https://api.github.com/users/Sjors/received_events","type":"User","site_admin":false},"html_url":"https://github.com/Sjors/bitcoin","description":"Bitcoin Core integration/staging tree","fork":true,"url":"https://api.github.com/repos/Sjors/bitcoin","forks_url":"https://api.github.com/repos/Sjors/bitcoin/forks","keys_url":"https://api.github.com/repos/Sjors/bitcoin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Sjors/bitcoin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Sjors/bitcoin/teams","hooks_url":"https://api.github.com/repos/Sjors/bitcoin/hooks","issue_events_url":"https://api.github.com/repos/Sjors/bitcoin/issues/events{/number}","events_url":"https://api.github.com/repos/Sjors/bitcoin/events","assignees_url":"https://api.github.com/repos/Sjors/bitcoin/assignees{/user}","branches_url":"https://api.github.com/repos/Sjors/bitcoin/branches{/branch}","tags_url":"https://api.github.com/repos/Sjors/bitcoin/tags","blobs_url":"https://api.github.com/repos/Sjors/bitcoin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Sjors/bitcoin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Sjors/bitcoin/git/refs{/sha}","trees_url":"https://api.github.com/repos/Sjors/bitcoin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Sjors/bitcoin/statuses/{sha}","languages_url":"https://api.github.com/repos/Sjors/bitcoin/languages","stargazers_url":"https://api.github.com/repos/Sjors/bitcoin/stargazers","contributors_url":"https://api.github.com/repos/Sjors/bitcoin/contributors","subscribers_url":"https://api.github.com/repos/Sjors/bitcoin/subscribers","subscription_url":"https://api.github.com/repos/Sjors/bitcoin/subscription","commits_url":"https://api.github.com/repos/Sjors/bitcoin/commits{/sha}","git_commits_url":"https://api.github.com/repos/Sjors/bitcoin/git/commits{/sha}","comments_url":"https://api.github.com/repos/Sjors/bitcoin/comments{/number}","issue_comment_url":"https://api.github.com/repos/Sjors/bitcoin/issues/comments{/number}","contents_url":"https://api.github.com/repos/Sjors/bitcoin/contents/{+path}","compare_url":"https://api.github.com/repos/Sjors/bitcoin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Sjors/bitcoin/merges","archive_url":"https://api.github.com/repos/Sjors/bitcoin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Sjors/bitcoin/downloads","issues_url":"https://api.github.com/repos/Sjors/bitcoin/issues{/number}","pulls_url":"https://api.github.com/repos/Sjors/bitcoin/pulls{/number}","milestones_url":"https://api.github.com/repos/Sjors/bitcoin/milestones{/number}","notifications_url":"https://api.github.com/repos/Sjors/bitcoin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Sjors/bitcoin/labels{/name}","releases_url":"https://api.github.com/repos/Sjors/bitcoin/releases{/id}","deployments_url":"https://api.github.com/repos/Sjors/bitcoin/deployments","created_at":"2017-05-25T10:05:54Z","updated_at":"2018-12-13T03:48:04Z","pushed_at":"2018-12-17T18:06:57Z","git_url":"git://github.com/Sjors/bitcoin.git","ssh_url":"git@github.com:Sjors/bitcoin.git","clone_url":"https://github.com/Sjors/bitcoin.git","svn_url":"https://github.com/Sjors/bitcoin","homepage":"https://bitcoin.org/en/download","size":118720,"stargazers_count":1,"watchers_count":1,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":11,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":11,"watchers":1,"default_branch":"master"}},"base":{"label":"bitcoin:master","ref":"master","sha":"b545a6e68965ceda1c1405cadb13d7245e077618","user":{"login":"bitcoin","id":528860,"node_id":"MDEyOk9yZ2FuaXphdGlvbjUyODg2MA==","avatar_url":"https://avatars2.githubusercontent.com/u/528860?v=4","gravatar_id":"","url":"https://api.github.com/users/bitcoin","html_url":"https://github.com/bitcoin","followers_url":"https://api.github.com/users/bitcoin/followers","following_url":"https://api.github.com/users/bitcoin/following{/other_user}","gists_url":"https://api.github.com/users/bitcoin/gists{/gist_id}","starred_url":"https://api.github.com/users/bitcoin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitcoin/subscriptions","organizations_url":"https://api.github.com/users/bitcoin/orgs","repos_url":"https://api.github.com/users/bitcoin/repos","events_url":"https://api.github.com/users/bitcoin/events{/privacy}","received_events_url":"https://api.github.com/users/bitcoin/received_events","type":"Organization","site_admin":false},"repo":{"id":1181927,"node_id":"MDEwOlJlcG9zaXRvcnkxMTgxOTI3","name":"bitcoin","full_name":"bitcoin/bitcoin","private":false,"owner":{"login":"bitcoin","id":528860,"node_id":"MDEyOk9yZ2FuaXphdGlvbjUyODg2MA==","avatar_url":"https://avatars2.githubusercontent.com/u/528860?v=4","gravatar_id":"","url":"https://api.github.com/users/bitcoin","html_url":"https://github.com/bitcoin","followers_url":"https://api.github.com/users/bitcoin/followers","following_url":"https://api.github.com/users/bitcoin/following{/other_user}","gists_url":"https://api.github.com/users/bitcoin/gists{/gist_id}","starred_url":"https://api.github.com/users/bitcoin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bitcoin/subscriptions","organizations_url":"https://api.github.com/users/bitcoin/orgs","repos_url":"https://api.github.com/users/bitcoin/repos","events_url":"https://api.github.com/users/bitcoin/events{/privacy}","received_events_url":"https://api.github.com/users/bitcoin/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/bitcoin/bitcoin","description":"Bitcoin Core integration/staging tree","fork":false,"url":"https://api.github.com/repos/bitcoin/bitcoin","forks_url":"https://api.github.com/repos/bitcoin/bitcoin/forks","keys_url":"https://api.github.com/repos/bitcoin/bitcoin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bitcoin/bitcoin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bitcoin/bitcoin/teams","hooks_url":"https://api.github.com/repos/bitcoin/bitcoin/hooks","issue_events_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/events{/number}","events_url":"https://api.github.com/repos/bitcoin/bitcoin/events","assignees_url":"https://api.github.com/repos/bitcoin/bitcoin/assignees{/user}","branches_url":"https://api.github.com/repos/bitcoin/bitcoin/branches{/branch}","tags_url":"https://api.github.com/repos/bitcoin/bitcoin/tags","blobs_url":"https://api.github.com/repos/bitcoin/bitcoin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bitcoin/bitcoin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bitcoin/bitcoin/git/refs{/sha}","trees_url":"https://api.github.com/repos/bitcoin/bitcoin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bitcoin/bitcoin/statuses/{sha}","languages_url":"https://api.github.com/repos/bitcoin/bitcoin/languages","stargazers_url":"https://api.github.com/repos/bitcoin/bitcoin/stargazers","contributors_url":"https://api.github.com/repos/bitcoin/bitcoin/contributors","subscribers_url":"https://api.github.com/repos/bitcoin/bitcoin/subscribers","subscription_url":"https://api.github.com/repos/bitcoin/bitcoin/subscription","commits_url":"https://api.github.com/repos/bitcoin/bitcoin/commits{/sha}","git_commits_url":"https://api.github.com/repos/bitcoin/bitcoin/git/commits{/sha}","comments_url":"https://api.github.com/repos/bitcoin/bitcoin/comments{/number}","issue_comment_url":"https://api.github.com/repos/bitcoin/bitcoin/issues/comments{/number}","contents_url":"https://api.github.com/repos/bitcoin/bitcoin/contents/{+path}","compare_url":"https://api.github.com/repos/bitcoin/bitcoin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bitcoin/bitcoin/merges","archive_url":"https://api.github.com/repos/bitcoin/bitcoin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bitcoin/bitcoin/downloads","issues_url":"https://api.github.com/repos/bitcoin/bitcoin/issues{/number}","pulls_url":"https://api.github.com/repos/bitcoin/bitcoin/pulls{/number}","milestones_url":"https://api.github.com/repos/bitcoin/bitcoin/milestones{/number}","notifications_url":"https://api.github.com/repos/bitcoin/bitcoin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bitcoin/bitcoin/labels{/name}","releases_url":"https://api.github.com/repos/bitcoin/bitcoin/releases{/id}","deployments_url":"https://api.github.com/repos/bitcoin/bitcoin/deployments","created_at":"2010-12-19T15:16:43Z","updated_at":"2018-12-18T15:53:11Z","pushed_at":"2018-12-18T16:02:16Z","git_url":"git://github.com/bitcoin/bitcoin.git","ssh_url":"git@github.com:bitcoin/bitcoin.git","clone_url":"https://github.com/bitcoin/bitcoin.git","svn_url":"https://github.com/bitcoin/bitcoin","homepage":"https://bitcoincore.org/en/download","size":117396,"stargazers_count":36411,"watchers_count":36411,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":false,"has_wiki":false,"has_pages":false,"forks_count":21710,"mirror_url":null,"archived":false,"open_issues_count":877,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":21710,"open_issues":877,"watchers":36411,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/bitcoin/bitcoin/pulls/14912"},"html":{"href":"https://github.com/bitcoin/bitcoin/pull/14912"},"issue":{"href":"https://api.github.com/repos/bitcoin/bitcoin/issues/14912"},"comments":{"href":"https://api.github.com/repos/bitcoin/bitcoin/issues/14912/comments"},"review_comments":{"href":"https://api.github.com/repos/bitcoin/bitcoin/pulls/14912/comments"},"review_comment":{"href":"https://api.github.com/repos/bitcoin/bitcoin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/bitcoin/bitcoin/pulls/14912/commits"},"statuses":{"href":"https://api.github.com/repos/bitcoin/bitcoin/statuses/9ec4aaca284673e1c92a02fdc4dea9a1a3e6038c"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"practicalswift"}}