{"action":"created","issue":{"url":"https://api.github.com/repos/BTCP-community/electrum-zcl/issues/14","repository_url":"https://api.github.com/repos/BTCP-community/electrum-zcl","labels_url":"https://api.github.com/repos/BTCP-community/electrum-zcl/issues/14/labels{/name}","comments_url":"https://api.github.com/repos/BTCP-community/electrum-zcl/issues/14/comments","events_url":"https://api.github.com/repos/BTCP-community/electrum-zcl/issues/14/events","html_url":"https://github.com/BTCP-community/electrum-zcl/issues/14","id":289515568,"number":14,"title":"Proposals for integrating ZK-Snarks","user":{"login":"ch4ot1c","id":2287825,"avatar_url":"https://avatars2.githubusercontent.com/u/2287825?v=4","gravatar_id":"","url":"https://api.github.com/users/ch4ot1c","html_url":"https://github.com/ch4ot1c","followers_url":"https://api.github.com/users/ch4ot1c/followers","following_url":"https://api.github.com/users/ch4ot1c/following{/other_user}","gists_url":"https://api.github.com/users/ch4ot1c/gists{/gist_id}","starred_url":"https://api.github.com/users/ch4ot1c/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ch4ot1c/subscriptions","organizations_url":"https://api.github.com/users/ch4ot1c/orgs","repos_url":"https://api.github.com/users/ch4ot1c/repos","events_url":"https://api.github.com/users/ch4ot1c/events{/privacy}","received_events_url":"https://api.github.com/users/ch4ot1c/received_events","type":"User","site_admin":false},"labels":[{"id":819843047,"url":"https://api.github.com/repos/BTCP-community/electrum-zcl/labels/community","name":"community","color":"03c44d","default":false},{"id":819843351,"url":"https://api.github.com/repos/BTCP-community/electrum-zcl/labels/documentation","name":"documentation","color":"deea83","default":false},{"id":819843903,"url":"https://api.github.com/repos/BTCP-community/electrum-zcl/labels/libsnark","name":"libsnark","color":"207193","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2018-01-18T06:09:59Z","updated_at":"2018-03-01T04:43:27Z","closed_at":null,"author_association":"COLLABORATOR","body":"## Proposals for integrating ZK-Snarks into Electrum ~\r\n\r\n### 1. Full -\r\nWrap libsnark (c++) in some way so we can use it from the Electrum client code (python). This will allow us to generate and broadcast shielded transactions, both within the Electrum client.\r\nhttps://github.com/pybind/pybind11\r\nhttp://pybind11.readthedocs.io/en/master/basics.html\r\nBoost.Python and this (PyBind11) are my 2 best results from research. Pybind11 looks better.\r\n\r\nWe are attempting to write high-assurance code so tests will be needed to ensure we do it right - but this binding will let us avoid doing 'translations' from c++ to python - *that's* high assurance.\r\n\r\nIn terms of implementation:\r\nhttps://github.com/scipr-lab/libsnark\r\nand the even more low-level:\r\nhttps://github.com/scipr-lab/libff\r\nneed to generally replace:\r\nhttps://github.com/BTCP-community/electrum-zcl/blob/master/lib/bitcoin.py#L739\r\nhttps://github.com/BTCP-community/electrum-zcl/blob/master/lib/bitcoin.py#L885\r\nand more. Defining which functions to swap is a significant part of the research.\r\n\r\nHelpful libsnark tutorial:\r\nhttps://github.com/howardwu/libsnark-tutorial\r\n\r\n### 2. Not fully 'lite' but legitimate -\r\nFirst, we need to test and verify (on any node) that 1) can we configure zcashd to run with wallet support and 2) confirm z_* send methods and their shielded txn generation steps are both working on it. We should select the latest (linux) release of zcashd, and make a shell script to fetch, build, and install it during Electrum installation. From there, as @csulmone proposed, we can use it as an unplugged-but-specialized generator for all things shielded. (At the end of this dev cycle we will also build zcashd for all platforms ofc)\r\n\r\n\r\nWe can begin one or both of these routes, as development progress is becoming urgent. I have received guidance that option 2 is preferred if it proves significantly faster or easier - I think the first is worth a try though."},"comment":{"url":"https://api.github.com/repos/BTCP-community/electrum-zcl/issues/comments/369472422","html_url":"https://github.com/BTCP-community/electrum-zcl/issues/14#issuecomment-369472422","issue_url":"https://api.github.com/repos/BTCP-community/electrum-zcl/issues/14","id":369472422,"user":{"login":"csulmone","id":2083694,"avatar_url":"https://avatars3.githubusercontent.com/u/2083694?v=4","gravatar_id":"","url":"https://api.github.com/users/csulmone","html_url":"https://github.com/csulmone","followers_url":"https://api.github.com/users/csulmone/followers","following_url":"https://api.github.com/users/csulmone/following{/other_user}","gists_url":"https://api.github.com/users/csulmone/gists{/gist_id}","starred_url":"https://api.github.com/users/csulmone/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/csulmone/subscriptions","organizations_url":"https://api.github.com/users/csulmone/orgs","repos_url":"https://api.github.com/users/csulmone/repos","events_url":"https://api.github.com/users/csulmone/events{/privacy}","received_events_url":"https://api.github.com/users/csulmone/received_events","type":"User","site_admin":false},"created_at":"2018-03-01T04:43:27Z","updated_at":"2018-03-01T04:43:27Z","author_association":"COLLABORATOR","body":"There is a full node wallet that supports shielded transactions.  Implementing shielding in electrum is difficult in many places."}}
{"actor":{"display_login":"csulmone"}}