{"id":16948096,"url":"https://github.com/voxelot/zk-dex","last_synced_at":"2025-03-21T09:44:23.343Z","repository":{"id":85204486,"uuid":"176619167","full_name":"Voxelot/zk-dex","owner":"Voxelot","description":null,"archived":false,"fork":false,"pushed_at":"2019-03-20T00:20:35.000Z","size":42,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-01T19:52:41.729Z","etag":null,"topics":["dex","solidity","zero-knowledge","zero-knowledge-proofs","zokrates"],"latest_commit_sha":null,"homepage":null,"language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Voxelot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-20T00:17:44.000Z","updated_at":"2025-02-05T13:46:46.000Z","dependencies_parsed_at":"2023-03-03T06:45:52.108Z","dependency_job_id":null,"html_url":"https://github.com/Voxelot/zk-dex","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Voxelot%2Fzk-dex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Voxelot%2Fzk-dex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Voxelot%2Fzk-dex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Voxelot%2Fzk-dex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Voxelot","download_url":"https://codeload.github.com/Voxelot/zk-dex/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244776270,"owners_count":20508503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dex","solidity","zero-knowledge","zero-knowledge-proofs","zokrates"],"created_at":"2024-10-13T21:49:37.724Z","updated_at":"2025-03-21T09:44:23.337Z","avatar_url":"https://github.com/Voxelot.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"ZK-DEX *WIP*\n=== \n\nA zero-knowledge decentralized exchange protocol for private ERC-20 token trades. Inspired by ZkDai.\n\n\u003e This is purely for educational purposes and has no warranty of any kind\n\nSetup\n---\n\n```bash\nnpm install\n```\n\nCompile ZK-Verifiers\n---\n\n```\nnpm run zokrates-compile\n```\n\nTODO\n---\n\n- [x] implement zokrates circuits\n- [x] zokrates -\u003e solidity tooling\n- [x] draft implementation of zk exchange protocol\n- [ ] void order api\n- [ ] witness generation tooling\n- [ ] ZKExchange client web3.js library\n- [ ] ZKExchange unit tests\n- [ ] UI\n\nProtocol Sequence Diagram\n---\n\n```ascii\n+-------------+ +-------+ +---------------+ +---------------+ +-----------+ +-------+                +-----------+                          +-----------+ +---------------+ +---------------+ +-------+ +-------------+\n| MakerToken  | | Maker | | MakerFillNote | | MakerMintNote | | MakerNote | | Order |                | Exchange  |                          | TakerNote | | TakerMintNote | | TakerFillNote | | Taker | | TakerToken  |\n+-------------+ +-------+ +---------------+ +---------------+ +-----------+ +-------+                +-----------+                          +-----------+ +---------------+ +---------------+ +-------+ +-------------+\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            | mintNote MakerMintNote        |               |           |                          |                                      |               |                 |             |            |\n       |            |-------------------------------------------------------------------------------------\u003e|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       | transfer maker tokens    |                 |               |           |                          |                                      |               |                 |             |            |\n       |--------------------------------------------------------------------------------------------------\u003e|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |       register as minted |                                      |               |                 |             |            |\n       |            |             |                 |\u003c-----------------------------------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            | spendNote MakerMintNote (MakerNote + change note)         |                          |                                      |               |                 |             |            |\n       |            |-------------------------------------------------------------------------------------\u003e|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |        register as spent |                                      |               |                 |             |            |\n       |            |             |                 |\u003c-----------------------------------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |       register anonymously as minted |                                      |               |                 |             |            |\n       |            |             |                 |               |\u003c-------------------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            | createOrder Order(MakerNote + MakerFillNote + hidden taker params)                   |                                      |               |                 |             |            |\n       |            |-------------------------------------------------------------------------------------\u003e|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                 register |                                      |               |                 |             |            |\n       |            |             |                 |               |           |\u003c-------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |   make non-transferrable |                                      |               |                 |             |            |\n       |            |             |                 |               |\u003c-------------------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |          mark as pending |                                      |               |                 |             |            |\n       |            |             |\u003c-----------------------------------------------------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            | provide private order details out-of-band (maker token type, maker amount, taker token type, taker amount)                  |               |                 |             |            |\n       |            |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------\u003e|            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |        mintNote TakerMintNote |            |\n       |            |             |                 |               |           |                          |\u003c-------------------------------------------------------------------------------------|            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |    transfer taker tokens |\n       |            |             |                 |               |           |                          |\u003c--------------------------------------------------------------------------------------------------|\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          | register as minted                   |               |                 |             |            |\n       |            |             |                 |               |           |                          |-----------------------------------------------------\u003e|                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      | spend TakerMintNote (TakerNote + change note) |            |\n       |            |             |                 |               |           |                          |\u003c-------------------------------------------------------------------------------------|            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          | register anonymously as minted       |               |                 |             |            |\n       |            |             |                 |               |           |                          |-------------------------------------\u003e|               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |            fillOrder (shared order info + TakerNote + MakerFillNote + TakerFillNote) |            |\n       |            |             |                 |               |           |                          |\u003c-------------------------------------------------------------------------------------|            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |        register as spent |                                      |               |                 |             |            |\n       |            |             |                 |               |\u003c-------------------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          | register as spent                    |               |                 |             |            |\n       |            |             |                 |               |           |                          |-------------------------------------\u003e|               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |       register as minted |                                      |               |                 |             |            |\n       |            |             |\u003c-----------------------------------------------------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          | register as minted                   |               |                 |             |            |\n       |            |             |                 |               |           |                          |-----------------------------------------------------------------------\u003e|             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            | claimNote (MakerFillNote)     |               |           |                          |                                      |               |                 |             |            |\n       |            |-------------------------------------------------------------------------------------\u003e|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |    transfer taker tokens |                                      |               |                 |             |            |\n       |            |\u003c-------------------------------------------------------------------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |            mark as spent |                                      |               |                 |             |            |\n       |            |             |\u003c-----------------------------------------------------------------------|                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          |                                      |               |     claimNote (TakerFillNote) |            |\n       |            |             |                 |               |           |                          |\u003c-------------------------------------------------------------------------------------|            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          | transfer maker tokens                |               |                 |             |            |\n       |            |             |                 |               |           |                          |-------------------------------------------------------------------------------------\u003e|            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n       |            |             |                 |               |           |                          | mark as spent                        |               |                 |             |            |\n       |            |             |                 |               |           |                          |-----------------------------------------------------------------------\u003e|             |            |\n       |            |             |                 |               |           |                          |                                      |               |                 |             |            |\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxelot%2Fzk-dex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxelot%2Fzk-dex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxelot%2Fzk-dex/lists"}